频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

每个程序员都应该学习C语言?我可不这么认为

作者: 作者James、编译李安民 出处:51CTO.com  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2006-12-20 11:00
关 键 词:程序员  C  语言
阅读提示:作者在读过“为什么每个程序员都应该学习C语言?”这篇文章后,十分不同意文中的观点,在本文中对上文的观点逐条列出了自己的反驳意见。

Linux之父炮轰C++:糟糕程序员的垃圾语言

Linux之父话糙理不糙 不得不看的两次从C++回归C的高手评论C++ C语言是否该扔进垃圾桶
为什么每个程序员都应该学习C语言? 每个程序员都应该学习C语言?我可不这么认为 C语言已经死了,5个需要忘却它的理由
用C设计 用C++编码
为什么使用C++
C++0x:崭新的C++,还是另一个Java?
编程语言的三大定理 动态语言为何难堪重任 动态语言面面观

 

【51CTO.com独家特稿】 这篇文章看起来像是12年前写的。

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

作者简介

来自新西兰的James,涉猎非常广泛,对网站程序、C语言和微软的Visual Studio都有很深的研究。 

来源链接:http://softwarex-nz.blogspot.com/2006/11/why-idiots-shouldnt-write-top-10-lists.html

51CTO.COM独家特稿:为什么每个程序员都应该学习C语言?

51CTO.COM独家特稿:C语言已经死了,5个需要忘却它的理由

Java替代C语言的可能性

如果没有C语言,世界将会怎样?——有感于“C语言已死”

我--曾经的C语言痴迷者,就算C死了,也永远活在我心里

C语言的确死了

C语言:生得伟大,死得光荣

 

更多网友讨论内容,请进入专题:“C语言是否该扔进垃圾桶”专题

(责任编辑 火凤凰 sunsj@51cto.com  TEL:(010)68476636-8007)


发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看52473次)
·UML类图详解 (查看46951次)
·Java编程开发手册 (查看25172次)
·UML统一建模语言 (查看24155次)
·C#技术开发指南 (查看22515次)
·Java编程开发手册 (1195个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (304个砖)
·PB开发教程 (220个砖)
·.NET开发手册 (217个砖)
·Java编程开发手册 (653个好)
·Java基础教程 (569个好)
·.NET开发手册 (251个好)
·PB开发教程 (209个好)
·Delphi开发技术手册 (174个好)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有