首先声明下,发表本文仅仅是个人的一些见解,十分浅显,目的是将这种观点发表出来供大家思考。可能会遭到绝大多数人反对(尤其是C++程序员),但事情的关键不是谁对谁错,或是争论各方的输赢,而是对问题的思考由一份自己的见解。
我程序设计学习是 Visual Basic->Pasca->C->c++->c#,工作的时候开发ASP.NET程序,大量的用到了C#和JavaScript两种语言。前两种不再讨论了,就说说后三种语言吧。
C语言给我的感觉是,功能的强大,但同时实际使用起来也是最让人不省心的。说其强大,是因为它能够进行很多底层操作。但说起不省心,是因为需要程序员考虑方方面满的事情,比如内存管理。而在此,也能看出一个程序员是否优秀。一个好的程序员能够从容地解决这些问题,而素质较差的程序员遇到这些问题就开始头疼。
C++语言给我的总体感觉是高不成、低不就。C++基本是在C的基础上演变而来,有绝大多数C的东西,而自己又添加了一些高级主题。如果拿C++当C来用,在平常的开发中也没什么太大的区别,但在设计较为底层的东西的时候,就暴露出它的弱点了。而如果拿C++语言来开发商业软件,会遇到几乎与C语言一样的问题,要考虑方方面满的事情。这样的话,为什么为什么不直接用C语言来开发呢?
现在几乎没有人用C和C++语言开发商业软件了。现今很多公司首先讲求的是效率,其次才是质量。如果你在算法问题上纠结很多,只能说你精神可嘉,但方法不得当。
刚开始参加工作工作的时候用的是C#,我总是会考虑使用什么样的算法来提高性能。但经理对我这种做法是不入法眼,评价是开发速度太慢。后来我才知道,同事们其实使用大量的C#类库,甚至是滥用类库,但都能在很短的时间里将模块开发出来。C#有很多类库,几乎能解决商业软件开发过程中遇到的所有问题。如果自己写算法,不仅花时间,可能还没类库做的好。所以后来我也就用类库解决问题了。
说道C#语言,有一些人的评价是方便,容易上手。但除此之外,我另外的评价是,让程序员变懒,变傻了。前面说道C和C++在开发过程中都会考虑太多的问题,而C#却已经帮我们很好的解决了,它也不允许让我们考虑。但如果长期使用C#语言,我们开发的时候就会把很多的注意力放在业务逻辑上,不会考虑底层的问题。也就是说,我们的开发是从人的角度看待问题,而不是从计算机的角度看待。如果遇到些许很另类的问题,我们就一筹莫展了。
上面说了这么多,我并不是说那种语言绝对好,或是绝对不好。一个语言的好坏要看在什么情况下使用。如果是搞科研或是搞算法,那C语言是首选;但如果是搞商业软件,C#或是JAVA这样的软件是首选。但对于C++语言,我真的不知道在什么情况下使用最好。它在不论在哪种情况下,貌似都会被C或是C#所取代。
有的人会纠结,自己到底应该学习哪种语言好呢。我的建议是,首先从C#入手,这样可以避免遇到底层管理的问题,这样再学学类库就能开发出一些像样的东西来。要想提高自己,可以继续学习C语言,这样就有机会接触到底层的知识了。如果想再更深层次得了解底层,可以在C语言熟练后,学习汇编语言。
对于现在正在使用C#语言的朋友,我的建议是看看C语言的书籍和代码,这样可以补充或是复次下自己的理论只是。可能你觉得这个没必要,因为在实际的工作中不会用到C语言。但很多商业软件开发过程中用到的思想,都会有底层开发方法的影子。