点击在新窗口查看全图

   我们该选择还是放弃C语言

                                       一个软件专业学子的困惑....


"
为什么每个程序员都应该学习C语言?",这篇文章看起来像是12年前写的。

有人说,“每个”程序员都应该学习C语言,这太滑稽了。在2006年,我甚至想不到那怕一个让“每一个”程序员都学习C语言的原因。事实上,我能想到的需要用到C语言的地方,仅仅是在编写设备驱动程序的时候。我认识大约200个程序员。其中有多少个是编写驱动程序的呢?一个都没有!

今天,连微控制器这种东西都嵌入到了JAVA虚拟机中了。

一个计算器参数,比如说JAVA虚拟机,数据库,操作系统是用C语言写的。这是事实,但是实际上有多少人在写这些东西?在所有程序员里面恐怕只占5-10%。

噢,等等。忘了游戏。但游戏也大部分是由C++写的。尽管比较C和C++就像比较C#和C,有一些人还是会争论说那是用C写的。确实,“看”上去他们可能一样,但事实上他们的区别就像是大宇和法拉利的区别。

下面,我对那篇文章逐条列出我的反驳意见:

1)相比较其他的编程语言(像C++,JAVA),C语言是个低级语言。从总体上来说,低级的编程语言可以让你更好的了解计算机。

确实在C语言中你不得不进行分配/释放内存的工作,但除了C语言有指针(C++也有指针)和C语言的字符串处理有点难看之外,C语言真的和其他高级语言没什么不同。

2)设备驱动程序和操作系统只能用C语言来编写。现在,你可能还从来没有编写过一个设备驱动程序或者一个操作系统,但是如果你需要去修改他们的时候,怎么办?

这完全是错误的。设备驱动程序现在已经用C++写了(C++离C比C++离C#还要远)。而操作系统(单一的)的内核,操作系统和设备驱动程序都是用C#写的。但我还是不得不承认确实有一部分是用C语言写的。

3)如果你想要得到一份编写微控制器程序的工作的时候,该怎么办?他们都是用C语言编写的。就因为不想学习一门新的语言,你就准备限制你能得到工作的机会吗?

再说一次,很多很多微控制器是基于JAVA的,所以这个观点是站不住脚的。这个观点的另一部分更是毫无意义的。因为你懂C语言,并不代表你懂微处理器的每个方面。就像,我不知道怎么开飞机,那就限制了我可能得到工作的机会了吗?

4)C的程序比其他用别的语言写的程序,实现相同的功能,它用的代码行数更少,而它带来的运行效率却更快。有时候,你的程序所需要的速度,只有C语言能做到。

这完全是谬论。一个程序的速度大部分情况下取决于那个写代码的人,而不是取决于算法。这个观点就像是说印地×××能跑400千米/小时而一级方程式仅仅能跑360千米/小时一样。尽管那个印地×××的速度比较快,如果那个开车人不能很好的驾驶它的话…

5)如果你学习过C语言,你就能学习现在任何的高级编程语言。因为所有的高级语言都是以C语言为基础的(像JAVA,C++,C#等等)。

大部分的现代计算机语言的学习,早已不仅仅是语法了。.NET和Java都有大量的支持框架,你需要学习的绝不仅仅是那些看起来JAVA,C++,C#都有的的FOR循环。

6)因为C语言已经存在很多年了,它有广泛的使用团体并且有大量的现成代码可以利用。这就使你能在过去程序的基础上,快速和高效的编写新的算法和函数。

嗯…你听说过GOOGLE吗?我用C#,DELPHI和C++编程,已经不记得上一次我找不到一个具体编程问题的解决方法是什么时候了。

7)C语言是一个开源组织的语言。一个开源组织的产物--LINUX,就是用C语言写的。如果你会C语言,你就能参加这个组织并且还能向众多的开源组织投稿,比如参加Source Forge并且给他们投稿。

我简直不想谈论这个问题。有一个无可争辩的事实是,有同样多的Java、C#或Delphi的开源组织。

8)C语言是唯一一个向你阐述指针的本质的语言。而C#和Java干脆跳过了指针这个题目。可是指针确实使C语言变得更加强大。

指针同样是C语言最大的麻烦。我宁愿让Gurus为我写一个编译器或者框架,那样我就不用担心那些最基本的细节了,好让我能够继续编写应用程序。

9)找编程开发方面的工作时,C语言仍然是最普遍需要的语言。所以它值得你花时间去学会它。

这也是值得怀疑的。我估计在这个世界上写COBOL代码的人要更多一些。难道这就意味着我们都应该再去学习下COBOL语言?

10)任何里面有微处理器的设备都支持C语言。从微波炉到手机, 都是由C语言技术来推动的。

是的,C语言可以用来写微波炉和手机的程序,但是经常是有其他选择的。如果我想写手机程序的话,我就能用VB来编。

别误会我的意思。在适当的环境下使用C语言是非常合适的,我就有可能在80岁以后开始从头学习C语言。但是恕我直言,要是说“每个”程序员都应该学习C语言,那就有点夸张了。

相关文章:
C语言已经死了,我们需要忘却它,不要在它上面浪费时间