2012年(158)
分类: C/C++
2012-11-23 16:05:16
原文:
# 给星星 :) 2007-10-29 11:32 龙泰旭
星星, 其实 ASM 跟 C 没有本质区别, 而 C++ 跟 JAVA
又是同出一脉
其实主要是程序思想!
我感觉程序员的最高的境界 当是 小到 函数算法 大到 框架结构!
而现实中,可能两者居其一者就已经算是不错了.
回复:
目前有两种很流行的观点:
a. 语言不重要,重要的是算法
b.
语言没本质区别,主要是程序思想
这两种观点字面上自然是正确的,但引申出的暗意(无论是作者本身的意图,还是读者的误解)我都觉得有一点点不妥。
从纯理论上来讲,如果语言真的没本质区别,不重要,那么就不会产生那么多种语言,即使因为历史的原因产生了多种语言,也会在进化过程中趋于一致,从而最终只留下一种语言。但我觉得在即使在将来,Shell语言取代ASM语言,或ASM语言取代Shell语言都是不切实际的。
如果多种语言的存在在理论上是合理的,那么现在仔细推敲一下她们存在的理由。既然人们说“算法”重要,“程序思想”重要,那么可以推断出多种语言的存在就是为了体现/表现出不同的“算法”和“程序思想”。
继续再思考一下先有鸡还是先有蛋,我想不会有人先发明一种语言,然后再去找它的“程序思想”,如同不会有人先去写一段代码,再去从这段代码中看看它实现了什么算法。如果这样做的话,就成了让黑猩猩做在电脑面前随机敲键盘,期望足够的数量下会产生莎斯比亚一样的名著。
所以我的一贯观点是:不同“软件观”(就像人生观,世界观一样)的社团创造出不同的“计算机语言”,从而利用这些不同的“计算机语言”去体现他们不同的“软件观”。
换一种说法就是,因为需要某某“算法”,某某“程序思想”,所以需要某某语言,“算法”和“程序思想”绝对是语言相关的。
只要你觉得“程序思想”之间是有“本质区别”的,那么语言间就一定是有本质区别的。
(这一段本来写得很多,但觉得太啰嗦,就删除了)简述为:“语言不重要,重要的是算法;语言没本质区别,主要是程序思想”其实是语言(包括C++)世界观下的一种子世界观。这种观点类似于Java思想,只是Java思想说的是平台(Java的单一平台,或说平台无关)不重要,而这种观点说的是语言不重要。
网友评论2012-11-23 16:07:27
周星星
其实我在bbs上已经发表过一些个人观点,大致意思是:
1。一个特性不能因为自己不需要就认为它是累赘的,只有证明它对大家都无用才可以对其“非议”。
2。一个对自己无用的特性,仅当不使用这个特性也会影响到自己时,才可以对其“非议”。
3。对于自己需要的特性,如果能找到另一种更优秀且普遍适用的实现机制才可以对其“非议”。
比如多态,它并不会对于不需要使用它的场合产生负面的影响,也就是当你不需要用到它的时候,它并不会使得你的设计难度加大,并不会使得运行效率变低,等等;
而对于需要多态的场合,到目前为止还未发明出比虚函数更优秀的机制。
网友评论2012-11-23 16:06:27
周星星
语言不仅仅只是自然语言,Tree就是树,树就是Tree这么简单。
比如数学语言,那些符号,公式,它们是数学语言的元素。或许你可以在其他语言中找到同样的符号,或同样意义的符号,但它们却并不适合用来描述数学问题。比如“界”和“熵”,每一种语言(即使靠得最近的物理和数学)对它们都有不同的明确的含义,虽然用自然语言必然也能精确的去描述它们,但谁愿意付出这种代价。这一点就如同你不管使用什么计算机语言,什么“编程思想”,都能做出同样功能的,能被CPU执行的代码,但却没有人愿意用机器语言来描述业务层逻辑一样。
所以“语言这玩意儿”一部分可能确实如你所说的那样,是出于历史原因造成了重复(比如汉语和洋文),从而带来了“交流的严重障碍”。
但这不是全部,另一部分语言(比如数学语言),恰恰就是为了便于交流而形成的新式语言。