杂谈后记~~~关于编程语言的争论

杂谈后记

   学生成绩管理系统

    最近几天因为一个小题目,一直在研究各种语言版本的学生成绩管理系统。说起可爱的学生管理系统相信大家都还是很熟悉的吧,尤其是对于专科出身的程序员们。学完C语言课程后的第一个实践可能就是用指针链表写一个简单的学生成绩管理系统。亲切程度绝对不亚于hello world啊。记得当年自己年少无知、好逸恶劳,跑去CSDN论坛发帖“跪求”程序源代码。结果差点被人家鄙视完了,自此也给我留下了深刻的阴影。虽然现在也算不上什么技术牛人,但是在学了点东西之后,对于曾经视为难如大山的学生成绩管理系统,现在也有了一丝不屑。但是通过这几天的研究才知道看似微小的学生成绩管理系统其实还是大有气象。

    话说这简单的学生成绩管理系统其中包含着朴素的编程知识和哲理。首先当然是编程语言了。C语言,自顶向下模块化构建程序,深入底层,内存分配管理,算法设计优化等等细致入微。C++引入简单的面向对象设计,自定义类型,封装继承,再拿来STL的数据结构和算法,引用修饰一番,大功告成。C#就更好办了,类库资源尽可取来,还用LINQ实现了一个简单的功能。三下五除二,很快就搞定。其次学生成绩管理系统包含了最基础的数据结构:链表。当然还可以添加一些自己实现的排序算法之类等等。最后当然仅仅是局限于控制台应用程序那就太过低级了。于是又搬出年久失修的曾经用MFC作的“大作”,稍加休憩,修正了原来的几个bug。再翻箱倒柜找出C#做的Windows Forms版本来,用想再完美下的冲动却没有动手的气力。可见这个学生成绩管理系统承载着很多与我们第一次接触的程序设计的东西。使命如此之重大,只是现在才能发觉。

   通过这次与学生成绩管理系统的各种斗法,确实又重新学到了不少的东西。特别是对于C语言,原本就学得不够扎实,现在权当是重新复习了一番吧。虽然用各种语言实现个学生成绩管理系统,但是我可是没有想比较一下孰优孰劣的意思,更多的是想复习锻炼一下自己武器还好不好使。当然一个小小的学生成绩管理系统的确也难以堪此鉴别语言优劣的大任。比起园子里最近的热闹景象,小弟蠢蠢欲动、跃跃欲试,但是无奈才疏学浅、不够资格只有隔岸观火,好不痛快。其实我还是比较喜欢的辩论的,自我感觉逻辑思维比较活跃,恰好又刚刚写了自己对于编程语言的一俩点看法,所以在此硬着头皮,谈谈对于编程语言的争论。  

  关于编程语言的争论

    其实对于编程语言的争论是最没有意义的事情,但是也貌似是程序猿们最乐此不疲的事情。因为编程语言或多或少的体现出一种宗教信仰的样子。大多数人不过是站在自己角度上,管中窥豹。争论的焦点也往往不是什么是具体事实什么不是,而更多的是能不能让你接受我的想法。这是很无趣的。譬如现在园子里蹦出来的那位,自称是做了n多年C#开发的资深程序猿,但是不知道是受人家大牛Linus批判C++的刺激还是一时抽风,跑来喷C#,而且大笔一挥,嗯。。。C# 应该去掉这些特性云云,不看不要紧一看吓一跳,这单子上几乎把C#新加的特性全部给抹杀了。很怀疑啊,你说这个lifelong到底是不是用C#的呢?难道是从Java里跑来的卧底?哎。。。既然说了辩论没意思那我也就没有纠结于此了。还是说点我自己的一些想法吧。

  .NET和JAVA的不同哲学

    首先既然是争论编程语言的优劣,那么就一定所比较。但是显然那位大牛没有让我们弄清楚他到底是想拿C#和谁来做比较,貌似是C#在和不同的战场和不同的无形对手在做比较。其实C#不仅仅使一个编程语言在战斗,它更多的应该与.NET平台和为一体。所以在评论C#时不可避免的也会涉及到.NET平台。当然关于平台的争论似乎就是另外一个问题了。其实关于C#性能低的问题很大程度上还是归结于.NET平台的问题。其实.NET和Java平台是两种不同的哲学。现在很多人说Java不如C#,但是那些比较的都是编程语言的特性,而忽视了Java平台的优势。Java这几年发展比较缓慢,Java 7也是遮遮掩掩的欲出还羞。但是不要忘记了,Java一出道就是秉承着简单的风格,其大力简化了复杂的C++,强化了面向对象,增加了垃圾回收机制。简单就是Java的哲学。其次Java发展缓慢的另一个原因是Java已经有了广泛的应用,而语言的每一次升级可能会导致兼容性问题,而兼容性如果处理不好的话可能导致致命打击。Java语言自身虽然不是很潮流,但是Java平台却在此不断的升级提升,像Java6就打了十多个补丁,当然更多的是对平台的修补和改进。另外Java平台繁衍上的其他语言也是一片繁荣景象。像Scala、Groory、Jython、Juby等等。当然这也得力于Java的开源策略,但是也证明Java平台的优秀。然后我们再看看于此走向反方向的.NET平台。C#一出道先是吸取了Java语言很多特性,同时也吸收了Java摒弃的一些C++的特性,像操作符重载、别出心裁的unsafe里面的指针等。当然也顺理成章的继承了C++的品质:强悍而又复杂。到.NET2.0时平台已经发展到一个相对不错高度,于是微软全力发展C#语法糖。各种新特性纷至沓来,C# 3.0其实还是运行在CLR 2.0上。只有.NET 4才使用了最新的CLR 4.0。当然说C#提供的各种语法糖并没有贬低之意,相反这些可爱的语法糖改变了编程思维,提高了开发效率。对于Java和.NET这两种哲学孰优孰劣在此也无法定夺,因为只有市场才是最佳的天平。

    但是在此我想说的是.NET 平台现在真的还有很大的提升空间。而且现在就有一个最佳的契机,那就是多核程序设计!现在对于多核编程莫衷一是,还没有一种完美的解决方案,有的侧重平台或操作系统,有的侧重编程语言。当然现在不好说微软到底采取何种方式,但是还是希望微软能够抓住时机推出一个比较好的解决方案。另外一个是云计算,云计算这个也很华丽,但是与更多的因素相关,相对于程序员来说反而不是那么贴切。

    额。。。貌似又有些跑题了。有人说(貌似是老赵的观点吧)Java是JVM上的汇编语言。我倒觉得汇编可能有点低级,还是C语言比较贴切吧。而且都崇尚简单的哲学。C#就是.NET上的C++,不解释了。。。个人以为C#代表了编程语言的发展方向,Java平台式目前最优秀的平台。要是两者…….额……..当然这是不可能的。

  对于这个园子

    最后再说说园子的管理者,我觉得对于编程语言的这种争论是很不好的,而且会把大家的注意力都吸引到无意义的争论上,这样氛围就是变得乌烟瘴气。所以博客园就该把这些争论的苗头扼杀在萌芽之中,或者选择息事宁人。而不是放在首页,甚至做个专题!这样只会害了这个社区。博客园需要改进的还有很多,例如是不是可以开辟一个可以发布开源项目的专区让大家积极参与到这些积极向上的方向上来呢?总之还是那句话,争论时没有意义的,还是安安心心的做技术吧!

posted @ 2010-06-22 23:25  frcsun  Views(933)  Comments(4)    收藏  举报