浅谈程序语言之争

jackxiang 2011-5-12 20:34 | |
论语言:语言的决定权往往掌握在少数人的手里,平台制定者的手里,业界大佬的手里。而我们一帮民众就只能呼啦啦跟风,墙头草随风倒。需求到了哪里,语言就跟随到哪里。
论开放:Microsoft自己将一切包装的太好了,所以带来一些便利,但同时也给我带来了迷惑,当然我相信这份迷惑不是我独有的,每个学习这些东西的人都会有迷惑。还有一点,Microsoft就是大包大揽,什么都自己弄,虽说人多,但还是不利于技术的发展,而开源技术往往开发者众多,当然存在一些不稳定的因素,但还是广大人民群众的力量大。Windows最大的成功之处就是上面应用众多,这些应用谁开发的,99.9999%都不是Microsoft开发的,一个人的能力是有限的。所以Apple出了App Store收买开发者,这样人就多了,Google也出了Web Store。然而桌面应用在我国基本没钱赚,只能通过增值服务挣钱,想挣代码的钱那时绝对没有可能的,除非我国民对版权意识加强,然而我国倡导社会主义,最终要到共产主义的,就是大家有什么好东西就要共享,版权神马的都是浮云。飞信还因为.NET容易被反编译,又用C++开发了,大家觉得还是二进制安全。还有就是对于一些非主流的技术Microsoft团队维护能力有限导致bug丛生,又不开源用起来费劲,各种hack,别无它法。
最后,世界仍旧很美好,学习第二语言和其它框架具有重要性,有你好看。

有人的地方就有战争。——不知道谁说的话。

语言争论这事情实在太多了。浅谈语言之争,真的很浅。

比如C#和Java之争,如果你经常上C#社区或者Java社区,你会经常发现这些玩应。C和C++争论,这个没那么频繁,偶尔爆发。Linus一直贬低C++,说C++太臃肿了,据说git用C写,就是为了不让C++程序员参与。Python和Ruby之争,如果就Web开发来说,还可能有PHP,用这个,用那个,用哪个?Python和Perl之争,脚本语言的争论。Erlang,Haskell,F#,函数语言的争论,等等。

如果换个角度,还有动态语言和静态语言的争论,近年来函数式语言也掺互进来,各种争论实在太多了。

o然而我觉得其实大多数时候是与语言无关的,无论哪种语言都是不差别的,特别是类似的语言,语言之所以产生争论,本身在于平台和需求。

语言的发展也依赖于平台。比如说当年Windows下软件开发如火如荼,VC++很火,为什么很火,因为Windows很火,而且有个很火的框架MFC是用VC++写的,你不用这个不好写Windows下的应用啊。虽然有人觉得MFC很遭。C当年为啥火气来了,因为Unix,貌似C就是为Unix而开发的,而且Unix的嫡系Linux也一直在用C开发。Objective-C呢,近年来热度不断上升,为嘛?因为Apple的移动应用,因为iOS,因为App store。因为存在这么一个平台,而恰巧这个平台只能用Objective-C。为嘛Ruby火了,因为Ruby on Rails,因为快速建站的需求。为什么Python近年来不断提升,因为一方面Python做Web开发是一个不错的选择,还有Google App Engine也对Python助力不少(至少我是因为Google App Engine才认识了Python),还有系统管理不错的脚本语言,因为Perl的势衰,Python作为脚本语言因它的简洁性受到了不少的青睐。因为Android的兴起,也推动了人们对Java的热情。C#为什么也挺火,还是因为Windows,Windows近年来冷落了VC++,全力推广.NET平台,然而.NET平台从某种角度来说就是C#平台。

为啥我的一些同学要学C#,学Java,因为你满眼望去,各种C#,Java工程师的招聘,虽然有些东西让人觉得很俗,然而谁不生存呢,生存就不能免俗。当然我不是说C#,Java俗。我曾在博客园里贴了一篇《两年C#与.NET》,引来不少口水,我几乎没有回应,因为我一直觉得这些东西都是神马浮云。你不论怎么争论,那还是原封不动的站在那里,况且这玩应,看多了也就累了。

所以说语言本身往往并不会怎样,再难用的语言如果有需求在那里,也有人用。任何东西都是需求决定的,因为现在都有需求希望开发周期缩短,所以动态语言大行其道。因为一些应用需要强悍的性能,所以一些古老的底层语言至今来有它们的舞台。因为有并发的需求,所以函数式语言才越来越多的受到人们的关注。

语言的决定权往往掌握在少数人的手里,平台制定者的手里,业界大佬的手里。而我们一帮民众就只能呼啦啦跟风,墙头草随风倒。需求到了哪里,语言就跟随到哪里。

最后说点无关又相关的:

我想应该没人愿意把每个语言都学一遍,从经济学角度将这是不经济的。但是从技术这个角度讲,多学几种语言还是有好处的。

你可以对某种语言有偏爱,也可以诋毁某种语言,程序员是有性情的,因为语言是他们的挚爱。我觉得程序员应该对某种语言有偏爱,也应该有争论。因为这表明他们还是爱他们所从事的事情的,如果不爱,最起码还是有感情的。

有爱有恨,这样才爽快!

让争论飞一会。

=======================================================================
两年C#与.NET

两年,我细想了一下,时间应该不算长。我还很菜,这无论如何都是一个事实。

写之前其实我并没有明确主题,到底想说什么,是说坏话还是说好话,我没有明确立场。写这些东西应该是帮我梳理我的想法,帮助我思考,让我最终敲定一个我的想法。

在这两年里,其实很多时候我分不清什么是C#里的语言特性什么是.NET里的类库,对于语言C#,我所知甚少,对于框架.NET我所知更少。.NET是个庞大的框架,我接触过WinForm, WPF, Silverlight, ASP.NET, ASP.NET MVC, .NET CF, 之前主要参与应用WPF或ASP.NET技术的项目的开发。.NET提供了庞大的类库,所以个人认为语言往往显得相对很是无力,有的时候,我会迷惘,学语言到底是学什么?

事实是我已经好几个月没有接触过C#和.NET了,最近学习了一些别的语言,了解了很多开源技术框架。然而这话又不准确,中间由于一些原因用过一次C#和.NET。时隔一段时间后,反过头来用,反而有一种清爽的感觉。由于很久不用,有了一些生疏。这时候再用,就不是像过去的惯性一样,无脑敲代码,似乎一切就应该是那样,什么都不想。经过一段不用后,再用的时候敲每一行的时候似乎都要想想,思路反而开阔了很多,想通了一些东西。

虽说写了两年的代码,做了两年的技术,可大多都是业务逻辑,对技术本身知之甚少。后来接触一些开源技术,主要是学习了Python,Google App Engine,Linux相关知识,接触到了广阔的开源世界,并且Follow了一些开源人士,耳濡目染,了解了很多东西。所以视野开阔了不少,而且了解了一点技术细节,稍微底层的一些东西。而且这段时间自己独立做了一些面向用户的项目,虽说之前也曾做过自己独立完成的东西,但都是作业课设之类的。而其它团队项目都是项目一角,很多方面没有接触过。而这段时间自己独立做了几个小项目,项目虽小,但五脏俱全。从创意想法、制定计划到编码实施和中间的不断更改维护,从前端到后端都自己动手。有的时候你面对需求变更觉得很烦,觉得辛苦写的代码不能用就白写了,经过一些事情后开始觉得有些代码写起来就是为了将来扔掉。当然对于不了解的技术细节和非技术方面的事情会觉得很辛苦,但还是体会到一些不一样的东西,而且对于一些当前流行的技术,特别是互联网技术有了初步的掌握。而且通过将这些网络应用部署到网上,吸引用户也是一大问题,或者说是主要难题。有没有人用是很重要的一点,所以这段时间看了一些商业书籍,不能说没有收获,但总觉收获微乎其微。

回来说C#和.NET,其实细说起来我没有系统学习过C#,在C#之前有那么一点点C++基础,面向对象的知识主要从C++身上继承学习而来,当然细节是有不同的,但面向对象思想的无差别的。对于C#语言细节看书看过一些,但都止步于前面那些最基本的东西,大部分都是现学现卖。所以用了C#很久之后,我才知道泛型,知道lambda表达式,才知道有Dictionary这个东西。虽说了解一些面向对象的知识,但其实很少有用武之地。主要是被.NET的迷雾搞得不分东南西北,理论上还有那么点感觉,一实践就全然无知了。Visual Studio生成的代码模板,又是什么partial局部类之类的,很久以前什么都不知道,事件委托什么的,也什么都不知道。就知道这样行,不知道为什么这样就行,自己什么都不知道。后来通过深入学习,了解了一些,但所知仍然甚少,所学甚浅。

Microsoft自己将一切包装的太好了,所以带来一些便利,但同时也给我带来了迷惑,当然我相信这份迷惑不是我独有的,每个学习这些东西的人都会有迷惑。还有一点,Microsoft就是大包大揽,什么都自己弄,虽说人多,但还是不利于技术的发展,而开源技术往往开发者众多,当然存在一些不稳定的因素,但还是广大人民群众的力量大。Windows最大的成功之处就是上面应用众多,这些应用谁开发的,99.9999%都不是Microsoft开发的,一个人的能力是有限的。所以Apple出了App Store收买开发者,这样人就多了,Google也出了Web Store。然而桌面应用在我国基本没钱赚,只能通过增值服务挣钱,想挣代码的钱那时绝对没有可能的,除非我国民对版权意识加强,然而我国倡导社会主义,最终要到共产主义的,就是大家有什么好东西就要共享,版权神马的都是浮云。飞信还因为.NET容易被反编译,又用C++开发了,大家觉得还是二进制安全。还有就是对于一些非主流的技术Microsoft团队维护能力有限导致bug丛生,又不开源用起来费劲,各种hack,别无它法。

又跑题了,接着说C#和.NET,我常上博客园看看,这是.NET社区中较大的。经常在上面看到有人批评.NET,说着说那,我觉得都是没事闲的,你要是不喜欢,就退出搞别的技术就完了,我觉得这事没必要表态,你的态度也无法左右Microsoft。然而这类文章,往往置顶,而且引来众多口水。讨论什么的都是浮云,点击量才是王道。

我接触C#和.NET不过2年,没有能力评判是非,虽说我有意向别的技术靠拢,但是C#和.NET还是陪我度过了我的启蒙阶段,不敢说爱,当然也对它基本无爱。

写完一通,也没梳理顺溜,就此作罢。当然如果没有感情是不会写这么多得,无论爱恨。所以说无论如何不能在一棵树上吊死,偶尔出来看看,世界很美好。这也是很多前辈提出的学习第二语言和其它框架的重要性。

我突然蹦出来,发现外面世界很美好。



来源:http://www.cnblogs.com/onm123/archive/2011/03/05/talk-about-programming-language-argue.html
      http://www.cnblogs.com/onm123/archive/2011/01/07/two-years-csharp-dotnet.html


作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/4301/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2011-5-13 14:50
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]