>> 有偏见的永远只是个体,而不是群体。作者加了后面那句
错了,真理是站在少数人这边的,当一种变革将发生的时候,带有偏见往往是大众是传统力量。
>> 这段话更加荒谬了。没见过优秀的C/C++代码? C++标准库(STL)如此优雅。况且,有那么多经典的C/C++开源作品,以及无意之中泄漏的Windo
STL的代码并不优雅,缺乏functional programming机制支持的C++对于实现algorithm非常的牵强,比方我要find(v.begin(), v.end(), compare);的时候(v是一个自定义的结构),我必须在函数外面写一个比较函数,如果要带一些上下文的话还得写一个functor类,非常的丑陋不堪,实用性大打折扣。而FP系的语言来说,可以非常自然的写一个匿名函数。STL里所标榜的容器,算法等概念,在FP里早就原生支持了,而且要优雅的多。至于NT代码这个我没看过不好说,但是据说代码里有不少当初程序员留下来的抱怨BUG及设计失误的话。
>> 内存管理是程序设计中最经典的话题。GC无疑是内存管理一个伟大的变革,但是我只是把它看作内存管理的一个解决方案,而认为不是唯一的解决方案。比GC更加优雅的方案不
实话说我也不喜欢GC,没有GC的C也可以工作的很好,但是对于FP系的语言来说没有GC是无法正确工作的,所以我还是得接受GC这个东西。当然我更喜欢的是将两者互相结合的方式。
>> C/C++语言本身确实没有太多MultiThead的支持
C/C++不能适应未来多核时代的发展,这个会是它没落的最大原因。库不能真正的解决问题,我们需要的是在语言层面的进一步发展。在现阶段C/C++连标准的多线程库都没有,更不要说高层次基础设施了,编写并发程序基本上还得靠程序员手工实现基础设施,并且跟同步、并发、死锁等疑难问题纠缠不清,程序的开发难度很大,可靠性很差。至于OpenMP,设计思路上就有问题,可以给程序员提供的帮助很少。
>> 指针是C/C++过于灵活的体现。使用指针的代码可以写得很丑陋
>> 算法优化是程序设计的关键。但是通常情况下,所有语言(包括C
说到优化,话题就多了。我曾经向C#的Dictionary中插入
多年以前程序员们还在C程序里面内联汇编以实现代码级的优化,但是如今已经没有人这么做了,因为CPU越来越复杂了,大多数情况编译器做的比手工的要好。现如今的java/.NET的JIT引擎也已经能够达到非常高的优化水平,在性能上C代码的优势已经越来越不明显了。对于未来而言代码级的优化也已经不再是重点,哪个语言可以适应多核的发展,谁就将成为性能的王者。如果大家对并行算法的威力还没有一个清晰明确的概念,那么就看看google的搜索算法、现代GPU的计算能力,这不是代码级优化所能得到的1倍2倍的性能提升,而是以数量级方式的性能提升。
>> 新生的语言,必然会在吸收旧的语言上基础上进行改进
说一门语言死了,不是说完全消失,而是退出主流开发语言行列,逐渐的被边缘化,这些年鼓吹C/C++的人已经越来越少了,在很多开发领域C/C++的地位已经被JAVA、.net、脚本语言等所取代。C++0x出不出来已经不重要了,倒是C++/CLI的出现带给C++一些新意,不过虽然我很欣赏C++/CLI,但是它不会成为主流。在多核到来的时候目前编程语言还没做好准备,未来我们要面临的不是2核4核而是百核千核这样的规模,这不光要在算法领域继续发展,编程语言也要来一次重大的变革才能适应这种发展,至于方向在哪里,FP系的语言或许会给你带来一些启示。
附,对各位评论的回应:
一、对于动不动就拿底层出来说事的,我告诉你像操作系统、虚拟机这些东西确实是用C/C++来构建的,将来很长一段时间内也会是这样,但是你省省吧,你只是一只做做应用开发的菜鸟程序员,写操作系统这辈子都轮不到你,没有几十年的开发经验没有对计算机体系结构的深入理解,你根本没这个资格。这些底层开发并不属于主流的应用开发领域,跟这世界上99%的程序员没有关系。
二、目前C/C++的主要优势还是在性能上,但是到了多核时代这点仅存的阵地也将失去,因此在应用开发领域已经没有站得住脚的理由再选用C/C++。多核时代将要带给软件工业的变革可以看这篇我新写的http://blog.csdn.net/Analyst/archive/2007/01/09/1477870.aspx
三、java/.net以及各种脚本语言可以在很多领域取代C/C++,但是谁将成为多核时代的性能王者目前还很难说,Erlang是一个探索,我非常期待有一门全新的语言诞生。