软讯网络 > 编程语言 > C/C++ > 有感于“评论C语言”
【标 题】:有感于“评论C语言”
【关键字】:
【来 源】:http://blog.csdn.net/skys712/archive/2007/01/23/1490941.aspx
有感于“评论C语言”
最近一段日子,看了一堆评论语言的文章,忍不住,还是发了第一篇文章。
一群人争的面红耳赤,无非是争论着C语言该不该从主流语言中消失。如此多的人热忠于此争论,使我不解:语言真的那么重要吗?一个语言就真的能决定一个软件的成败?
不解,就不妄下断言。只说下自己的亲身经历,来印证一下自己的想法:语言,其实并不重要。在一个软件中比语言重要的东西太多了。
我学的第一门语言不是C,而是Pascal,直到大学以后才开始学着用C写程序。对于这些语言的学习,有了一门语言的基础,其他的学起来基本上都只需要很短的时间。当时认为,能用学会的语言实现一些小程序便是学会了这门语言。
当对程序的理解,积累了一定的程度,才发觉一门语言的博大精深。由于大学时候课程的安排,基本上大家争论的三个语言(C,java,.net)都接触过,也用过这些语言开发过软件。说句心底话,用C开发应用,真的很复杂,特别是在自己当时还是半调子的C语言水平时,一不小心就忘了释放内存,或者一不小心就使用了野指针。往往调试一个软件的时间比写代码的时间要长的多的多。而JAVA和.NET就基本上很少出现因为这样的错误而浪费的调试时间。不可否认,在当时每个语言都是半调子的情况下JAVA和.NET的开发效率要比C语言不知道高出好几倍。如果只是开发一个可以用的软件,我会毫不犹豫的选择它们,而不是C。
而当我再过了2、3年后,当再用JAVA或.NET写程序时,我会有一种非常强烈的不安。这种不安源自我本身对系统的理解,和对程序的掌握。我对那种内存的申请和释放不能掌握在自己手中,系统底层通讯自己不清楚它的实现,数据的访问也都被封装的机制,强烈的缺乏安全感。当知识的积累过程中,让我了解了操作系统的运作过程、程序运行的管理机制,硬件调用的具体步骤等等计算机相关的基础知识后,我不可能安心的把自己写的软件的50%甚至更多的性能交给JAVA或.NET。我宁可相信自己写的代码,针对每一个过程的优化,针对每一个中断、每一个内核通讯的优化,甚至是吹毛求疵的一个字节一个字节的节省。这样至少,写出来的程序的性能有90%是可以自己把握的。
此时说到了程序的性能让我对JAVA和.NET失去安全感,而选择了C。很多同志都会反对:用他们的言论来说:“现在的CPU够快了,没必要为一点运行效率、内存开销而计较。”对,CPU是够快了,可CPU的性能是让你的软件在单位时间内可以做更多的事的,而不是让你有足够的时间来做完你的事。CPU并不是为了你的软件而升级的。做软件仍需要吹毛求疵来提升性能的原则。
对于性能的讨论,占了前段时间讨论的大部分内容。软件性能和语言的关系真的很大吗?就经验来看,代码的优化对性能的提升是最小的。代码上优化的累死累活,不如使用更好的算法。而算法上的优化,更不及架构上的优化。如同这样的关系式:100*代码优化==10*算法优化==架构优化。
而架构和算法是完全和语言无关的东西。在做软件的过程中,只要能实现的语言,皆可以用,皆是好的语言。这样看来,争论语言的优劣又有何意义?
【相关文章】
没有相关文章