C++是一种精神毒药,受害者往往中毒很深

忠实的C++信徒倾向于非常偏激,对敢于泻渎了他们信仰的人他们会予以强烈的攻击

C++是如此强大以至于它能做任何事情,从C的公共语 法部分学起,到类,模板。等把这些都搞透了,还有各种库STL,boost到各种实际的库

对于C++的很大一个误解在于,只要学会了C++语言,就学会了编程。后来才发现,C++是个学不到头的语言

C++太庞大了,它从一开始就没有一个好的定位。似乎是想把所有的东西都包括进来,使它看起来做任何事情

可以做过程式的编程,像C代码那样

也可以用面向对象或者模板编程那样的东西,语言作者本意是用户有自已选择的权利

但事实上仅从语法和代码风格上看,那几乎就不是同一门语言,这确实够糟糕的

可能教育方面的原因使得这门语言很被误导,很多书籍倾向语法而不是实际应用。没有比C++语法更复杂的语言了

新手常常被误导的去钻研语言本身。直到模板元编程,它的语法真的可以让人疯掉

有人认为C++语言固然复杂,但可以不必掌握全部细节嘛。事实上它的复杂性本身就是毒药,好奇的人们总想饮毒止渴

C++挖好了一个坑,很深的坑,等着一群无知的人往里跳,并没有一门最好的编程语言,那是新手选择语言时喜欢争执的问题

编程语言的选择不重要,所有语言都是等价的 持这种观点的常常是二类人,真心的和非真心的。

非真心的人,他们虽然还是觉得自己喜爱的语言拥有更好的特性,但他们已经厌倦了语言之争,不愿与某些极端信仰者发生冲突。这并不坏,至少中毒还不是太深,或者开始反省,他们有机会自拔

真心持这种观点的人淡化了语言的作用,他们的境界开始高了一层了

一直啃C++的语法是学不会编程的。多了解些操作系统,数据结构的知识有用多了

linux之父说的,C++是一门糟糕的语言,被一群糟糕的程序员使用搞问题弄得更糟

聪明的程序员能够看到这些,免于受到太多的伤害。至少从诡异的语法中解放出来去专注问题本身

那么随便选一门使用的人多的语言就合适了么?老板们倒是这么认为的。相比选择小众语言,项目风险会更低

程序员跳槽了,很容易就能从市场上找人来顶替。这是”编程语言的选择不重要,所有语言都是等价的“思想的沿续,只是更功利一些

往往精英有自己独特的喜好。Richard stallman混合使用C和lisp,Linus仅仅使用C

国外很多的高手,他们都是掌握数门语言的。如果用来编程仅仅一门语言就够了,为什么他们还会了解那么多的语言呢?Eric Raymond曾经说无论是否使用,lisp都是值得学习的语言

可见并不是随便的一门语言都是值得学习的。只可惜这种挑选语言的本领是那些精英黑客玩转多门语言之后获得的,我等愚民很难天生就有有这种悟性

不同语言的编程效率不同。但,这并不能变能评价语言好坏的衡量标准 底层语言(如C),强迫用户实现自己的算法和数据结构,了解一些底层的运作机制,重复造很多轮子,正是因为这样,C语言更容易出高手,而C#更容易培养一些只做为微软做苦力的码农

需要一个合适的层次。太低层的语言使用起来太累,而太高层的语言又使用户变得弱智。鱼与熊掌不能得兼

如果只是出于学习的目的,编程效率并不是一个首要考虑的问题.到底什么样的语言值得学习?

编程语言决定了思维模式。程序员由于使用的编程语言不同,他的思考方法和编写出来的代码都会受到编程语言的很大影响

不能改变编程思想的语言,不值得学习。C和lisp是两个极端,一个的基础是计算机的体系结构,另一个的基础是数学

只要冯诺依曼的体系结构没变,只要操作系统的源代码还是用C写的,这门语言就仍然会有顽强的生命力。至于数学,则是永远不会过时的东西了

lisp的基础是lambda演算,但还差一个真实的机器。早期的计算机时代可以看作lisp学派与unix学派之争,应该算unix学派胜了,因为lisp总是假装自己在一个凭空设想的机器中运行。emacs是硕果仅存,它假装自己就是一个操作系统,elisp是它的编程语言,linux只是它的硬件和驱动

早期机器性能太低,而现今,高层语言的动态性带来的好处完全大于虚拟机造成的性能损失

为了用好C++,人们会被迫继续研究设计模式,这也是语言对思维模式的影响。工厂模式,观察者模式搞出这么多种…这些本身都是好东西,是前人留下的宝贵的经验财富。只是我想说,通过强迫人们学习别扭思维方式来用好一门语言,这门语言的设计肯定是有问题的。

small is better。仅仅使用好指针和结构体,C语言足够发挥无穷的威力 “程序设计语言的设计不应该是特征的堆碓,而应消除那些需要依赖于多余特征的弱点和局限”

或许scheme的设计理论是对C++语言的绝好讽刺!C++中,受够了模板的伤害却一无所获,而从scheme的宏中才明白了什么是真正的元编程。C++不过就是想把别的语言上的好的特征都弄到自己身上,导致的结果仅仅是晦涩的语法

一个很有趣的东西,用易语言和lua语言做的一个游戏引擎Edgame maker。用易语言实现的IDE和库,然后用lua整合和提供编程接口。使用lua的面向对象弥补易语言的不足。从这种例子中可以学习到一个粘合层的语言如何通过模块化获得更好的实用性

各种编程语言都有自身的特点,如果学习一门新语言,更应该看到的是它背后的思想,而不是语法层面.学习语法容易,改变思维模式难