Nov 17

编程语言迷思

P.S:非程序员勿入,大量专业词汇出没注意

前两天培训时Herman讲后台开发,他说后台开发有个好处,就是更新得没前端什么的那么快,学一个技术可以用很多年。但我总觉得,满足于传统,其实也是在给自己设限。gcc的确鲜有变化,而gnu阵营却无比混乱,无时无刻不在进行着剧烈的化学变化与物理碰撞,这是不是也能说明点什么东西?

的确gcc鲜有变化,C/C++似乎永不过时;但重点不在于他们的一成不变,重点在于以他们为基石繁衍出了那么丰富的GNU世界,就算对封闭的软件世界也造成不可磨灭的巨大影响。

我听到一个阵营在说,所有语言其实都是一样的;我听到另一个阵营又在说,每种语言其实都不一样,否则为什么会有那么多语言的诞生。QUORA曾看到人说,如果你问一个优秀的程序员:哪种语言才是最好的?他的回答多是一笑置之、不予评价。因为,这问题上实在吵了太久。我相信优秀的与时俱进的人做出的选择,会是因为适用场景和个人品味,而绝对不会孤独求败似地只认为C++无敌。

《黑客与画家》专门就有章是《编程语言解析》,里面如是说:

“一些黑客只喜欢自己用的语言,反感其他所有的语言。另一些黑客则说所有的语言都一样。事实介于这两个极端之间。语言之间的确有差别,但是很难确定地说哪一种语言是最好的。这个领域依然还在快速发展。”

“语言设计者之间的最大分歧也许就在于,有些人认为编程语言应该防止程序员干蠢事,另一些人则认为程序员应该可以用编程语言干一切他们想干的事。JAVA是前一个阵营的代表,Perl则是后一个。(美国国防部很看中JAVA也就不足为奇了)”

也许,现在后者的代表应该换成RUBY了吧,哈哈。

EXAMPLES

俺前阵子有缠着maomao问shell和python的区别,他说这两门语言完全不可比,被我穷追猛打以后(我是比较崇尚于python),他举了两个例子:

  • mysql -uroot -p < xxx.sql
  • ls -a|grep xxx

唔,好吧,这的确是可以让我闭嘴了……结果很杯具的是,我的语言比较维度又多了一个:贴近系统的程度。

不过,除了运维人员或是系统级的开发,谁关心那个啊?累不累?

嗯,反正我是最关心程序可读性和维护性的了,这个倒好办,维基上的“快速排序”词条就能说明很多问题:http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F

动态语言完胜!哈哈!

这些东西还真是争论不休的。至少我们都得承认,编程语言正处于高速发展的阶段(相对于传统工业……当然还是无法跟互联网行业比),而且它的高速发展肯定有他的道理,也不见得就是坏事。

In my opinion:

今天也跟阳杰也聊起语言,胡说八道了一把,也拿出来让大家都讨论讨论吧,先说明,这纯粹是个人见解:

  • C语言:擅长处理硬件问题,“堪称可移植的汇编语言”
  • C++:对系统的把控比较强 (多泛式这是好事,但C++的语言复杂度也太恐怖了……)
  • JAVA:企业级开发(毕竟他的可用组件是最丰富的(由SUN支撑),语言上的受限也是最多的:要求只能用面向对象这个范式编程)
  • PYTHON:代码可读性最强(这个俺感觉没有“之一”。)
  • JS:@帝归 说丫是个披着C外皮的LISP,好吧,不过反正浏览器端脚本也只有这个选项,真是舍我其谁啊
  • PHP:HTML混合式编程最强(应该也没有“之一”)。他生来就是做HTML生成的。

其它有些我不熟悉的语言,俺说下俺的印象:

  • Perl/Ruby :最自由,想怎么玩都行,也可能导致混乱不堪的代码(我感觉ruby应该算是进化版的Perl?但就没Perl那么靠近系统吧,大概……但据说最自由的其实是LISP,这个俺就不评价了……)
  • Lisp :最高层次抽象的语言,大概是编程语言之神(总之我还没到那层次去理解他的好……我还停留在函数式编程、动态语言的层面吧……)
  • VB/Asp :菜鸟上手速度最快(其实俺初中时学过,但基本忘光了……)
  • C#.NET  :windows编程最强。(也许C# 生在了.net上实在是鲜花插在狗屎上……虽然我还真不明白C#到底有哪些好?)
  • Haskell:可能FP风格编程是这个比较强?不晓得跟JS差别在哪……

还有些乱七八糟的不是编程语言的语言:

  • SQL:对于关系型数据的操作与读取没有比这个更强的了
  • Markup Language:对结构化信息的组织肯定是这个最好哈哈(最典型的就是HTML和XML了,其它的像BB码、WIKI格式这些也是挺实用的,JSON甚至CSS大概也能纳入这个范畴?除了信息组织之外,这些玩意也越来越多用在程序配置文件上了)
  • CSS:有人说它是排版的未来,谁知道呢?(其实它就是张表格,拿来描述信息在视觉上应该如何展现,果然纯粹的东西总是威力巨大呐)
  • 传输协议:这个大概也能算语言?像TCP、HTTP啥的,其实里面也算是对结构化和流式传输有很强的能力吧。

一路写来,真是深有感触:黑客真伟大啊!

面对这很多各有千秋的语言,就算是有一万小时天才理论摆在那,我也不敢说一万小时后我就能得心应手。

程序员是吃青春饭的?

让这句话见鬼去吧!

晚安 :D

原文地址:http://itswater.com/thinking_programming_languages/ 转载请注明出处 :)

Posted in 开发 | Tagged , | 7 Comments

7 Responses to 编程语言迷思

  1. pizn

    November 17, 2011 | 9:24 am

    喜欢写程序,但不喜欢做程序员的咋办?

  2. diryboy

    November 17, 2011 | 10:40 am

    Haskell是强类型的纯函数式语言,副作用和无副作用代码是清楚地区分开的。而JS是弱类型的,只带有一点函数式的东西,JS更像杂交的东西。Haskell 的核心在monad,JS的核心在原型链……

    • watert

      November 17, 2011 | 12:29 pm

      具体语言细节的问题扯开来可就是长篇大论了,我还是比较关注适用范围这个问题。

      不过话说回来,原型链虽然自由,但也很危险呀,我可以随意的修改很多原本已经良好测试的代码,追踪问题时可就够呛了

    • diryboy

      November 17, 2011 | 4:00 pm

      适用范围差别就更远了吧……虽然Haskell可以做web的,但是貌似没怎么听过哪家公司用(或许他们叫得不响),更不用说前端了……

    • watert

      November 17, 2011 | 6:03 pm

      难怪他在TIOBE榜里都排到40名了。不实用的语言要来实在没啥意义。

  3. QQending

    November 18, 2011 | 8:59 am

    “程序员是吃青春饭的?
    让这句话见鬼去吧!”

    这句好

  4. 独自流浪

    November 18, 2011 | 5:38 pm

    真正的程序员,有历史的沉淀,任外界如何变化,依旧能轻松应对,游刃有余的将自己的想象转变为现实

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.