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的单一平台,或说平台无关)不重要,而这种观点说的是语言不重要。