中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Windows编程
Linux之父炮轰C++:糟糕程序员的垃圾语言(2)
作者:佚名 时间:2007-12-10 17:13 出处:刘江@图灵  责编:月夜寒箫
              摘要:Linux之父炮轰C++:糟糕程序员的垃圾语言(2)
争论还在继续。半个小时之后,半小时后,Dmitry回帖

“我说过,这是一种信仰问题。因此,任何讲道理和争论都会无穷无尽,而且也毫无意义,就像任何其他宗教问题一样。
我来讲讲Git开发应该使用C++的理由(而不是一般意义上C++对任何项目都更好的理由,这种说法同样也是毫无意义的):
1. 好的String类能够大大提高代码的可读性(而且代码也会显著减少)
2. 好的Buffer类——理由同上
3. 管理内存和文件/套接字/锁句柄的智能指针和智能句柄
就目前而言,通过这种繁琐的宏管理字符串和内存,很难看出高层逻辑。”
接下来他的语气变得缓和,甚至最后还用了一个笑脸:
“以我之见,Git具有非常漂亮的高层设计(对象数据库,使用散列,数据和元数据的简单而且容易访问的存储。)向你赞一个!
但是具体实现方式——C和shell脚本的混合、自底向上发展出来的命令行界面就很一般了。
我可没有将C与汇编语言相提并论。我只是要指出我曾经用许多不同的语言编程,目睹了糟糕的程序员用任何语言都会写出差劲的代码。因此这实际上是与语言无关的。”


Torvalds则依然怒气未消,他反驳Dmitry对Git用宏管理字符串和内存的批评

 

“完全是屁话。字符串/内存管理根本无关紧要。还是去看看源代码吧(我敢打赌你没有看过)。这不是重要的部分,而且也不复杂。唯一真正重要的部分是设计。有些部分之所以是用 ' 原型化语言 ' 编写,恰恰是因为它们不是核心部分,而且会被C慢慢地替换掉。C++可没有办法替换shell脚本或者Perl代码。而且C++也没办法让真正核心的部分变得更好。
显然你这一辈子已经经历了 ' 汇编-> C -> C++/C# ' 的转变过程,你将我这样一直坚持用C的比作 ' 恐龙 ',似乎这是一种向更好/更现代的语言不可避免的演进。这是毫无根据的,因为C在很多方面都远远优于C++(更优于C#),包括可移植性,还有接口和低层支持。
你当然可以用任何语言编写糟糕的代码。但是,有些语言,尤其是带有一些心理(mental)包袱的语言本身就非常糟糕。你这样的新手跑来指出一些绝对无关紧要的补丁特性(此处应该指C++对C的增强特性),用它们作为一种语言优越的论据(这些东西语言原作者都不喜欢),这一事实本身恰恰说明你满脑子都是糊涂概念,应该好好醒悟一下了。
对于Git核心代码真正重要的,是诸如这样的事情:编写自己的对象分配代码,使内存占用尽可能小,从而能够高效地记录百万对象的标志。这实际上是为树形关系的多个对象编写本质上非常优化的分析程序,因为这里没有任何抽象。这绝对是在原始内存字节一级上的。
这些事情能够用C之外的语言编写吗?当然可以。但是那些认为C++字符串处理这样的高级特性很重要的人肯定是写不出来的。
事实上,这正是C擅长的事情。不仅指语言本身,还包括一种必需的心态(mentality)。C最大的优点之一,就是它不会使你认为程序是什么高层的东西。正是后一种心态会使你明显偏向其他语言,但实际上从Git的角度看来,所谓 ' 高层 ' 恰恰是错误的。”

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有