Chinaunix首页 | 论坛 | 博客
  • 博客访问: 871015
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

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

阅读(1324) | 评论(8) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-23 16:07:27

周星星
其实我在bbs上已经发表过一些个人观点,大致意思是:
1。一个特性不能因为自己不需要就认为它是累赘的,只有证明它对大家都无用才可以对其“非议”。
2。一个对自己无用的特性,仅当不使用这个特性也会影响到自己时,才可以对其“非议”。
3。对于自己需要的特性,如果能找到另一种更优秀且普遍适用的实现机制才可以对其“非议”。

比如多态,它并不会对于不需要使用它的场合产生负面的影响,也就是当你不需要用到它的时候,它并不会使得你的设计难度加大,并不会使得运行效率变低,等等;
而对于需要多态的场合,到目前为止还未发明出比虚函数更优秀的机制。

网友评论2012-11-23 16:07:18

cppfan
星哥的话很精辟,说的很到位,一针见血。前段时间看到Linus对C++一顿狂骂,我对Linus的狂妄感觉到很失望,也为C++感到很冤枉。

为什么总要把STL当成C++,写内核代码时为什么我不能用纯的C++代码,为什么总要拿string去和char *做比较,我怎么就不能在C++里用char*了,为什么我不能自己重载new运算符自己进行内存管理,为什么我不可以关掉C++异常和RTTI机制用C++写内核,真不懂这些人是真的精通C++还是人云亦云的小P精。

希望星哥可以抽空写篇评论,说点公道话。

网友评论2012-11-23 16:07:07

玻璃小屋

楼主的贴子 和 所有回贴,乃至这个争论,都属于[“所以“语言这玩意儿”一部分可能确实如你所说的那样,是出于历史原因造成了重复(比如汉语和洋文),从而带来了“交流的严重障碍”。”]

哈哈~

网友评论2012-11-23 16:06:27

周星星
语言不仅仅只是自然语言,Tree就是树,树就是Tree这么简单。
比如数学语言,那些符号,公式,它们是数学语言的元素。或许你可以在其他语言中找到同样的符号,或同样意义的符号,但它们却并不适合用来描述数学问题。比如“界”和“熵”,每一种语言(即使靠得最近的物理和数学)对它们都有不同的明确的含义,虽然用自然语言必然也能精确的去描述它们,但谁愿意付出这种代价。这一点就如同你不管使用什么计算机语言,什么“编程思想”,都能做出同样功能的,能被CPU执行的代码,但却没有人愿意用机器语言来描述业务层逻辑一样。

所以“语言这玩意儿”一部分可能确实如你所说的那样,是出于历史原因造成了重复(比如汉语和洋文),从而带来了“交流的严重障碍”。
但这不是全部,另一部分语言(比如数学语言),恰恰就是为了便于交流而形成的新式语言。

网友评论2012-11-23 16:06:19

oshj
我相信语言这玩意儿和人类自然语言的多元化一样,发明它是为了交流,却无意中成了交流的严重障碍~ 肢体语言最终会一统江山成为自然语言的主宰,而编程语言的主宰,得等火星人来缔造了 @_@