免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 塑料袋
打印 上一主题 下一主题

争论C概念正确性的一般路子是什么? [复制链接]

论坛徽章:
0
101 [报告]
发表于 2012-06-02 02:33 |只看该作者
回复 92# zylthinking

你现在不会写, 很可能等于你永远不会写, 你要是不同意, 接着跟贴。

也许真被是说中了。但也只是“很可能”。
让时间决定吧。

有主意了并且论证可行性了, 而不是一个浮在半空的主意; 当然, 我说模版并不是说限制在c++模版中, 任意谈得上有进步的有相当把握可以实现的主意都可以, 但一定要可实现性, 否则我也可以说创出一门叫做汉语的编程语言出来。

主意是有,可行性就难说了。说到底可行性多少很难有个判断的标准,也没法量化比较。唯一最具有决定性意义的就是最终实现。所以我会倾向于在实现出来之前尽量对具体细节闭嘴,只是偶尔收集用户需求没有被满足的一些情况,提出语义上的一些问题罢了。

这个其实也和我不冲突, 我的观点又不是懂标准一点用也没有; 但我认为模糊不一致其实是可控的, 你也知道在代码里写 i+++1的人是有毛病, 其他人就算不知道什么UB, 也多数知道避免写这样的代码, 空口无凭的话, 你可以将你心目中懂C标准的人做一个百分比, 然后去随意下载若干份源码, 看看这些源码中出现这样代码的比例比你认为的是高还是低。 如果你同意我的可控性的观点, 那么我觉得重要性不那么高的观点应该是自然推理的, 你没理有不同意。

你似乎太低估UB的隐蔽性了。C并不像大多数人想象的那么简单,标准化尤其暴露这点。
诚然乱用++之类的低级错误较容易被大众发现,但是还有很多各种意想不到的古怪问题,有不少根本是抽象的设计上的原因,即便是对底层实现足够了解也是无法轻易避免的。尽管数量上来说大多数是比较容易发现并解决的,但是之前被忽略的问题,一旦造成麻烦代价就可能很大——典型的是要花很多冤枉时间调试。我也是吃苦头多了才去翻标准的,这是我能找到的最有效率的做法中的一部分。
此外,标准对语言的涉及的概念和使用方法提供了整体性的框架。一些概念之间耦合得非常紧密,如果到真要用了才去了解的话,很容易无所适从。实话说,这种复杂性是现行标准的缺点,而且根本是无法解决的——它同时也是C本身的缺点。关于这些内容,去读其它材料远不如直接查标准原文,因为这样总体上最省时间——除非对自己的理解能力实在没自信,总是原地踏步的话。

论坛徽章:
0
102 [报告]
发表于 2012-06-02 02:49 |只看该作者
本帖最后由 wwwsq 于 2012-06-02 02:52 编辑
幻の上帝 发表于 2012-06-02 02:33
回复 92# zylthinking



你觉得C标准不严密,那是因为你没去了解PHP标准,那才叫五花八门,无奇不有。但这并不妨碍php成为最流行的网站开发语言。

没人能对C标准有完全透彻的了解,也没人能写出无bug的程序。唯一的办法是良好的设计,和反复的测试。

因为程序有bug而去读C标准,作用不大。大多数bug也不是因为对语言了解不够才导致的。


论坛徽章:
0
103 [报告]
发表于 2012-06-02 02:49 |只看该作者
回复 101# 幻の上帝


@zylthinking @幻の上帝

两位我都能理解,我觉得你们之间没有什么本质矛盾,所以都有道理。换句话说,你们都在阐述自己觉得对的观点,而并非是在反驳对方。

论坛徽章:
0
104 [报告]
发表于 2012-06-02 02:51 |只看该作者
回复 102# wwwsq


一个标准能让你了解什么底层?

论坛徽章:
0
105 [报告]
发表于 2012-06-02 02:52 |只看该作者
本帖最后由 幻の上帝 于 2012-06-02 03:01 编辑

回复 92# zylthinking

你怎么定义是变的? 标准不同版本之间的变化???
如果它是变化的, 它就不是标准了。

当然还要考虑适用的场合的变化,如何能给具体问题的解决提供依据,等等。
库函数再怎么组合也不会多出几种调用的方法,但解决问题起来也可以很复杂。一样的道理。
你怎么定义是变的? 标准不同版本之间的变化???
如果它是变化的, 它就不是标准了。

这是不对的。
标准当然应该允许修订以适应现实需要。标准也不是绝对不会出错,所以需要有TC之类的补丁。
另外,正式版本会取代之前的版本。但是照顾到实现程度的不同,所以历史版本也要考虑。的确麻烦,但仍然符合“标准”的内涵。
将一个条文当一个函数可以吧, 作为不变行为的最小单位
那么, 你的条文的组合其实是从更多的方面再说同一个东西, 只不过这一条说嘴巴, 另一条说眼睛, 所有条文加起来, 就是一个人。
那么你这个人还能编程骆驼不成???

先不考虑标准版本和bug的问题。
单就组合条文来说,你就无法数清楚问题的情况。一条说嘴巴,另一条说眼睛,但嘴巴和眼睛加起来可能还得考虑其它的规则和例外,导致完全不是那么回事。
如果真像你希望的都是addictiveadditive(擦,太顺手于是就抽了)的话倒简单了,也不用纠结什么条文,直接把条文要说的内容写成检查代码的程序就行——反正迟早能加完,检查一条算一条。可惜没这么理想。

论坛徽章:
0
106 [报告]
发表于 2012-06-02 02:59 |只看该作者
回复 102# wwwsq

你理解偏了。
我要去读标准是我意识到我对C的理解可能有隐蔽的bug。
单是解决程序的bug当然不见得非要读标准,虽然翻阅相关的条款有时候也能帮上大忙(比如不够清楚生僻的库函数的使用前提,又找不到其它可靠资料)。

论坛徽章:
0
107 [报告]
发表于 2012-06-02 03:06 |只看该作者
幻の上帝 发表于 2012-06-02 02:59
回复 102# wwwsq

你理解偏了。


我想你也理解偏了。

zyl所说的关于读C标准的实用性:
“反对的是, 实用为目的的前提下任意夸大语法作用, 甚至掩盖阻止研究其他更实用的领域的行为”
“模糊不一致其实是可控的”
“就算不知道什么UB, 也多数知道避免写这样的代码”

对大多数程序员而言语法的实用性就是不要写出有bug的代码,读C标准对这点帮助不大。

论坛徽章:
0
108 [报告]
发表于 2012-06-02 12:07 |只看该作者
回复 107# wwwsq


嗯,你也这么说了。“实用性就是不要写出有bug的代码”,不是说让写出的代码没有bug。
学习方法算各人自由吧。

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
109 [报告]
发表于 2012-06-02 12:10 |只看该作者
幻の上帝 发表于 2012-06-02 12:07
回复 107# wwwsq


不要写出有bug的代码 <=====> 写出的代码没有bug

这什么区别?看不懂。

你这属于文字游戏了哈,不带这么玩的,都玩文字游戏根本争论不出来结论。

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
110 [报告]
发表于 2012-06-02 12:25 |只看该作者
回复 108# 幻の上帝

别骂人啊。

其实我本不想骂人,前边几次都是你屡次上来就恶语相向,逼我骂你。 这样就没意思了,你可以有理说理,别上来就骂我啊。


前边回帖时,我本想反正你肯定又会恶语相向,不如提前骂你两句。

后来一想还是算了,毕竟要是万一你没先骂我呢,就显得我不讲究了,虽然这种可能性比较小。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP