免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4873 | 回复: 13
打印 上一主题 下一主题

看C++设计和演化史,这几段让我有点激动,翻译了一把 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-07 17:42 |只看该作者 |倒序浏览
  通常认为一个系统的架构反映了这个系统创造者的组织架构。在常识范围内,我同意这种看法。因此如果一个系统主要是一个个体的劳动成果的话,那么这个系统就反映了那个个体的基本世界观。回首C++的设计历史,我认为我的基本世界观和那些细枝末节的计算机科学观念对于形成整个C++结构所起的作用可以说是平分秋色。
    在丹麦时我的专业是纯数学和应用数学,后来我的硕士学位(CandScient degree)是数学和计算机科学。这段学习经历使我欣赏数学美的同时,也使我有了一种偏见:那就是倾向于把数学作为一种解决问题的工具,反对那种对于数学真和美看起来毫无意义的里程碑式的追求。因此我非常同情欧几里德,他仅仅因为问了一个“数学到底是干什么的呢?”的问题而被驱逐。因此,我对计算机和编程语言的兴趣是非常务实的。她们可以作为一件艺术品来欣赏,但是美学因素对于实用性应该起到锦上添花的作用,而不是喧宾夺主或者使其打折扣。
    我的至少持续了25年的兴趣爱好是历史。而且在大学里和那之后我花了非常可观的时间来研究哲学。这段经历使我发现了自己的理智情感所在并且明白为什么会是这样。在一系列长期存在的哲学思想中,我喜欢经验主义胜过理想主义,至于神秘主义者就令我摇头了。结果是,我喜欢亚里士多德胜过柏拉图,喜欢休姆胜过笛卡尔,而对于帕斯卡尔,我就十分头疼了。我发现就整个哲学系统而言,柏拉图和康德都非常令人神魂颠倒,但是在基本方面我则不满意,因为她们看起来可怕地离开了日常生活体验和每个个体的基本特质。
    我也发现克尔恺郭尔式的近乎狂热地关注个体及其内心灵魂的哲学比那些宏观伟大的在抽象意义上关注人类精神的哲学(比如黑格尔,马克思式的)更有吸引力。尊重集体但如果不包括尊重那些集体中每一个活生生的个人其实就等于什么也不尊重。许多C++特性的设计决策根源于我对于强迫人们必须使用某一种特定方式做事的哲学的厌恶。在历史上,许多可怕的灾难的发生就是因为理想主义者强迫人们做对他们有益的事情。这种理想主义不仅导致无辜的受害者,而且也给理想主义者自己带来幻灭与堕落。同时我也发现理想主义者容易忽略那些和实验与经验已经非常不符的理论教条。当那些即使是专家学者都同意的程序设计理想和现实冲突的时候,我宁愿在语言中提供一种支持,使得程序员可以自己决策。
    对文学的爱好也增强了我的意愿,那就是不仅仅在理论和逻辑的基础上做决策。在这个意义上,作家马丁汉森,加缪,奥威尔等对于C++的贡献和计算机科学家David Gries,knuth roger needham等对于C++的贡献也是不相上下的,即使他们从未看见过计算机。通常,当我决定否决一个我不喜欢的C++特性时,我克制自己不这么做,因为我不认我有这个权利强加于我的观念于他人。我清楚地知道,通过对于逻辑的狂热追求以及对于“糟糕混乱过时的惯性思维方式”的无情谴责,很多事情可以在很短时间内达到目标。但是,人力成本往往是高的。最大程度的接受和容忍对我来说是更好的方式:那就是不同的人的确在以不同的思维方式思考,而且往往也以一种非常不同的方式在做事。
    我的倾向是慢慢地-虽然往往是令人痛苦地慢-说服人们试验新的技术并采用那些适合他们情趣与趣味的。有很好的方式可以实现“叛变”或者“革命”,但是我对这些方式有一种恐惧感,并且对它们在深度和广度上的影响持强烈的怀疑态度。通常,如果一个人很容易地就转向信仰X宗教,那么哪一天他突然转向信仰Y宗教就一点也不奇怪了,而最后结果不过是浮光掠影。我喜欢怀疑论者胜过忠实信徒。我把一丁点的实实在在的证据看得比大的理论重要,把实实在在的实验结果看得比逻辑推理重要。
    这些观点可能导致宿命式地接受现状。毕竟,一个人如果不打碎几个鸡蛋是无法做出鸡蛋卷的,而且,人们也的确不想改变,即使要改,也不是现在,也不是用那种打乱了他们日常生活的改革方式。这就是需要一点点理想主义的地方,因为我们也要尊重这样一个事实:我们的编程世界,我们活着的世界并不是处于一个最好的状态,我们可以做很多事情来改善这种状况。我设计C++的目的就是用来解决问题的,而不是为了证明某个观点,它的成长是为了服务使用它的人。根本的理念在于我们可以通过慢慢地改变来改善现状,取得进步,理想的情况是保持一个最大的改变速率来提高每个相关个体的福利。最大的困难在于如何定义什么是进步的因素,如何发展技术来弥合变迁裂痕,如何避免由于过于狂热而带来的极端。
    我乐意努力工作,吸收那些我深信对人们会有所裨益的思想。事实上,我认为专家学者有责任使他们的理念得以大众化并因此而对社会有用,而不是仅仅让这些理念成为曲高和寡的东西。然而,我不乐意人们成为思想的牺牲品,尤其是,我不想通过狭义地定义语言从而强制使用一种单一的设计风格。人们的思考方式和工作方式是如此的多样化,任何推行单一方式的企图总是弊大于利。因此,C++是有意被设计来支持多种风格的,而不是“唯一正确的方式”坚持到底。
    本书第四章更细节,更实际地展现了这些指导我设计C++的原则。在这些原则中,你可以听到我这里所描述的整体指导思想和理念的回声。
    一种程序设计语言会是一个程序员生活中最重要的因素。但是,它仅仅是这个大千世界非常小的一部分,因此,对它不必太过认真,保持一份幽默感是很重要的。在主流程序设计语言中,C++所获得的揶揄与嘲弄可能是做多的,这并不是一个意外。
    哲学如同讨论语言特性一样,容易变得过分认真,过分说教。为此,我向诸位致歉,但是我想告诉诸位我设计C++的思想源泉并无什么伤害吧,噢,应该没有大的伤害。哎呀,差点忘记一点,在文学方面,我并不是仅仅限制于喜欢这些强调社会性主题和哲学性主题的作家,以上提到这些只不过是因为他们在C++的设计过程中留下了比较明显的足迹。

[ 本帖最后由 huxk 于 2009-1-9 12:50 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-01-07 19:07 |只看该作者
我觉得吧,丫要真的数学系出身,应当把C++搞成函数式编程,函数式编程才真正体现了数学的美感;丫要真有哲学造诣,应当把C++搞成逻辑式语言,能做自动推理;丫要真搞文学,应当把C++搞成Perl那样,Perl发明者是语言学家。可归根到底,丫啥都不是,丫除了是工程师还是工程师,找不出一丝数学家,哲学家,文学家的气质了。所以,C++不能函数式编程,不能逻辑式编程,不能perl,C++再怎么折腾也是C,也要被说成是“C/C++”。lex与yacc后,在无语言,就像OO里,meta class后,再无class。再怎么吹牛OO好,Intel也不把CPU给做成OO的

论坛徽章:
0
3 [报告]
发表于 2009-01-07 19:11 |只看该作者
我觉得吧,丫要真的数学系出身,应当把C++搞成函数式编程,函数式编程才真正体现了数学的美感;丫要真有哲学造诣,应当把C++搞成逻辑式语言,能做自动推理;丫要真搞文学,应当把C++搞成Perl那样,Perl发明者是语言学家。可归根到底,丫啥都不是,丫除了是工程师还是工程师,找不出一丝数学家,哲学家,文学家的气质了。所以,C++不能函数式编程,不能逻辑式编程,不能perl,C++再怎么折腾也是C,也要被说成是“C/C++”。lex与yacc后,在无语言,就像OO里,meta class后,再无class。再怎么吹牛OO好,Intel也不把CPU给做成OO的

论坛徽章:
0
4 [报告]
发表于 2009-01-07 19:15 |只看该作者
我预测这个帖子会聚集一批神棍,会有人引用海德格尔,康德的三大批判,老子的道德经,最新天文学理论,弦振动科学来证明
1)C++不如smalltalk

2)或者smalltalk不如C++

3)或者c++与smalltalk不可比

4)或者c++和smalltalk都是垃圾,计算机科学家就应该用XXX.

5)或者XXX也是垃圾,YYY才是真正的编程语言

6)或者YYY才是最大的垃圾,ZZZ还有点味道

7)ZZZ是bullshit!............

.........

[ 本帖最后由 lipingtababa 于 2009-1-7 19:18 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-01-07 21:54 |只看该作者


omg,这都是啥

论坛徽章:
0
6 [报告]
发表于 2009-01-08 09:21 |只看该作者
我也发现克尔恺郭尔式的近乎狂热地关注个体及其内心灵魂的哲学比那些宏观伟大的在抽象意义上关注人类精神的哲学(比如黑格尔,马克思式的)更有吸引力。尊重集体但如果不包括尊重那些集体中每一个活生生的个人其实就等于什么也不尊重。

我喜歡這句

论坛徽章:
0
7 [报告]
发表于 2009-01-08 09:21 |只看该作者
如果一个人很容易地就转向信仰X宗教,那么哪一天他突然转向信仰Y宗教就一点也不奇怪了

還有這一句

论坛徽章:
0
8 [报告]
发表于 2009-01-08 09:28 |只看该作者
不過我有時也似乎覺得他似乎把C++也搞得太認真了

盡最大可能體現他的這些哲學理念的同時反而讓人覺得有些認真

很多人也可能認為我需要這些理念,但是不是在這裡,不是在編程方面,相反,他們可能覺得在編程方面我愿意接受設計者的主觀臆斷獨裁方式,這個世界可能真的很複雜

论坛徽章:
0
9 [报告]
发表于 2009-01-08 09:30 |只看该作者
當我們想努力不認真的時候,是不是在某些方面已經太過認真了

C++設計者可能就是犯了這樣一個毛病

论坛徽章:
0
10 [报告]
发表于 2009-01-08 09:41 |只看该作者

回复 #3 reiase 的帖子

這個評論讓我知道有些事情的緣由
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP