Hello World
Spiga

我对“语言之争”的看法:别随便拉我入场

2012-08-06 13:11 by 老赵, 13012 visits

最近又有语言之争了,不过没我什么事情。事情起因可以在酷壳最新一篇文章里看到,简单地说是关于C++的复杂度问题的。我对文章内容其实没有什么看法,但对这句话深有感触:“我对C++的感情有三个过程,先是喜欢地要死,然后是恨地要死,现在的又爱又恨,爱的是这个语言,恨的是很多不合格的人在滥用和凌辱它。”,我以为我想说,这“现在”的状态,就是我对“语言之争”的看法,“语言之争”被太多不合格人凌辱了。

我很喜欢编程语言,但我争论语言时有着基本的原则和必备的知识,没有这些在我看来就不应该参与讨论。讨论时我也会严格控制范围,因此我基本不会使用类比,因为类比其实就是在用外部知识来理解当前的话题,很容易把话题扯开出去。同理,我也不会像高级分析师们讲一些初级程序员们都懂——但往往我不怎么理解或赞同的大道理。我就是怎么没出息,就像今天早上还有人在IM上对我说“老赵怎么可能还在写程序,你是冒牌的吧?”。

有一种观点是解决问题比选择工具重要,这是个可行的立论,但不是唯一的。语言本身也是问题,有积累,有知识,当然也有某些同学说的训练编程思维等等。争论语言时我看到说“语言只是工具”所以“没什么可谈的”就烦,“编程语言”似乎已经变成“经济”或“政治”这样的话题了,随便谁都觉得自己有能力参与讨论。有意思的是,许多人的论点居然是“无意义”。

编程语言是一门课,一门学科,不是什么人人都自然懂自然会的东西。我说过很多次,假如你觉得自己不知道该如何提高了,不知道学什么,就去翻教科书,那里东西多得你学不完。很多东西都是有定义的有概念的,不要我说编程语言安全性的时候,就有人跑出来说安全性什么和语言无关,去你妹的。

假如您不知道这方面有哪些内容可以参考,我这里倒也可以推荐两本书,一本是《Programming Language Pragmatics》,还有一本是《Concepts of Programming Languages》。这两本书国内都引进了影印版,也有对应的中译本,分别叫做《程序设计语言——实践之路》和《程序设计语言原理》。两本书我都可以算是看过,虽然并没有完整地仔细阅读。

所以以后有语言争论不要轻易拉我入场,我和你的语言争论很可能不是一码事情。同理,也别用你的争论是多么没意义来证明我的争论有没有意义。现在随便来一个人就会冲上来讲些大道理或者发表自己见解,当然你可以这么做,我也觉得没意义。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

24 条回复

  1. xinghang
    61.171.96.*
    链接

    xinghang 2012-08-06 13:17:35

    好,赞态度。

  2. tinyfool?
    218.1.97.*
    链接

    tinyfool? 2012-08-06 13:23:46

    这个这个时间不对吧。

  3. 老赵
    admin
    链接

    老赵 2012-08-06 13:49:11

    @tinyfool?

    差了8小时,服务器时区需要调一下……

  4. 韦恩卑鄙
    116.231.114.*
    链接

    韦恩卑鄙 2012-08-06 13:49:12

    格林尼治时间 +8

  5. lulu
    125.71.228.*
    链接

    lulu 2012-08-06 20:45:57

    程序设计语言中文版翻译不给力啊,有条件的还是看英文的或者直接看裘宗燕老师的程序设计语言实践之路

  6. tanglei
    124.127.137.*
    链接

    tanglei 2012-08-07 13:06:38

    每个语言都有各自的特点,有优点也有缺点。笼统的说哪种语言怎么样怎么样确实很没意义。在具体问题上讨论适合用什么语言还差不多。

  7. jiyinyiyong
    183.147.58.*
    链接

    jiyinyiyong 2012-08-07 14:26:19

    Haskell 不归路.. 还是继续找 pdf 去.

  8. 我的温柔
    80.254.148.*
    链接

    我的温柔 2012-08-07 15:56:26

    写了那么多字就想说水平不到你那个层级的最好多看点书再来讨论。这种表达在编程界里跟骂大街差不多,白辱没了你的IBM高级咨询师,InfoQ中文站编辑,某某技术议题讲师...的头衔。

  9. mathgl
    42.2.38.*
    链接

    mathgl 2012-08-08 14:30:44

    争论语言好坏本来就很无聊。脱离了具体的场景单纯争论好比

    英语和法语谁更好一样。毫无营养。

  10. 老赵
    admin
    链接

    老赵 2012-08-08 15:18:26

    @mathgl

    又见套话,你是来对号入座故意在这里凌辱“语言之争”的吗?

  11. 老赵
    admin
    链接

    老赵 2012-08-08 15:24:46

    @我的温柔

    有些人看到这些话就觉得有道理,你看了就觉得自己被看贬了?你非要这么理解我也没办法,总之,别心虚。

  12. boxsir
    66.212.31.*
    链接

    boxsir 2012-08-09 11:07:14

    向老赵推荐王垠的博客,感觉他对编程语言的某些观点和你接近,他的一篇博文<<如何掌握程序语言>>阐述了对程序设计语言的误解,我节选了其中一段如下:

    程序语言无用论。这是国内大学计算机系的教育常见的错误。教授们常常对学生灌输:“用什么程序语言不重要,重要的是算法。”

    而其实,程序语言却是比算法更加精髓的东西(不知你是否认同?)任何算法以及它的复杂度分析,都是相对于某种计算模型,而程序语言就是描述这种计算模型的符号系统。算法必须用某种语言表述出来,通常算法设计者使用伪码,这其实是不严谨的,容易出现推理漏洞。

    算法设计再好,如果不懂得程序语言的原理,也不可能高效的实现。即使实现了,也可能会在模块化和可扩展性上面有很大问题。某些算法专家或者数学家写出来的程序极其幼稚,就是因为他们忽视了程序语言的重要性。

    原文:http://blog.sina.com.cn/s/blog_5d90e82f01015271.html

  13. boxsir
    66.212.31.*
    链接

    boxsir 2012-08-09 15:23:04

    两位对"低级语言与编程本质之间的联系"的看法

    From 老赵

    举个例子,C语言体现了编程语言的本质吗?在我看来,没有,因为它体现的是冯诺依曼机的本质,是操作机器的本质,和“表达人类思考”,“辅助人类解决问题”无关。因为,要不是有冯诺依曼机就不会有C语言;同时,在我看来人类也不会在“思考”时关心指针、地址、堆/栈、偏移量、字节等事物。

    当然,如果您是一位C语言粉丝,看到这里也不要急着反驳。首先,我只是说“C语言不能代表编程的本质”,并没有说“不本质就不好了”,也没有对C语言做出“不重要”或是“不值得了解”之类的评价。其次,我不都已经说过我不懂所谓“本质”了嘛。

    From 王垠

    那么是否 C 这样的“低级语言”就会好一些呢?其实也不是。很多人推崇 C,因为它可以让人接近“底层”,也就是接近机器的表示,这样就意味着它速度快。这里其实有三个问题:

    1. 接近“底层”是否是好事?
    2. “速度快的语言”是什么意思?
    3. 接近底层的语言是否一定速度快?
  14. shell
    114.89.47.*
    链接

    shell 2012-08-09 23:11:40

    语言~有的很美,有的让人喜欢也让人讨厌。。

  15. boxsir
    66.212.31.*
    链接

    boxsir 2012-08-10 12:27:23

    @我的温柔:写了那么多字就想说水平不到你那个层级的最好多看点书再来讨论。这种表达在编程界里跟骂大街差不多,白辱没了你的IBM高级咨询师,InfoQ中文站编辑,某某技术议题讲师的头衔

    @老赵:“编程语言”似乎已经变成“经济”或“政治”这样的话题了,随便谁都觉得自己有能力参与讨论。有意思的是,许多人的论点居然是“无意义”。

    也许事实有点残酷,至少在我认为:只有高水平的程序员才有资格参与讨论,并能给出一些对我有启发的观点。在我的浏览器收藏夹中有这些人博客:

    1. 王垠,作品是一个静态的Python分析器
    2. 老赵,作品是Jscex
    3. 云风,知名游戏程序员
    4. fleurer-lee,这位同学很强啊,作品是另一个unix-like内核
    5. ...

    如果一个人完成过一些具有相当难度的程序,我才认可他是一个高水平的程序员。如果去看一下他们的博客,你会发现他们都有讨论编程语言好坏的文章,而不是简单的说“算法是精髓,语言是工具”之类的废话。

  16. acao
    50.116.26.*
    链接

    acao 2012-08-14 11:46:11

    老赵,你的博客背墙了?

  17. 宇宙大将军
    120.85.211.*
    链接

    宇宙大将军 2012-10-25 09:21:59

    感觉像《为什么乡下人的素质比上海人低》的作者表白自己不是地域歧视者。 也要反省一下自己,为什么别人一提到编程语言之争就想到你。 我这样的评论应该会被放到隐藏区吧,哈哈。

  18. 老赵
    admin
    链接

    老赵 2012-10-31 10:01:11

    @宇宙大将军

    别过于自我感觉良好,要胡搅蛮缠很长时间才能有这个待遇的,目前只有一个人有这个待遇。

    回到正题,我知道原因,只不过不觉得自己有问题,嘿嘿。

  19. fuckgfw
    74.125.184.*
    链接

    fuckgfw 2013-01-24 14:59:17

    这个是你们学院的老师吗?

    http://bbs.fudan.sh.cn/bbs/con?new=1&bid=205&f=112206

  20. 老赵
    admin
    链接

    老赵 2013-01-24 22:28:12

    @fuckgfw

    卧槽,韩sir彻底堕落了么……

  21. 青山白水
    121.225.52.*
    链接

    青山白水 2013-02-28 21:41:42

    我一直用.Net,接触过java,也一直都认为C#比java优秀,.Net Framework比java的类库要好,可除此之外呢。

    最近我在反思,以前看语言之争是不是太片面了。因为语言是为开发服务的,而开发软件的目的是要用的,语言仅仅是整个软件生态的一部份,此外还有类库,架构,开源产品。

    说语言之争没有意义可能你不赞成,但至少可以说语言之争意义不大。

    微软的东西,是由微软主宰的,只能是微软给你什么,你用什么,是一个相对封闭僵化的;并且受制于微软的Windows,从分布式架构上来说缺少提升的空间。

    而开源的软件生态要有生气的多,从操作系统、开发语言、系统架构、开源产品上来说,完全是百花齐放,百家争鸣,没有谁能主宰,开发人员说了算。

    因为项目中需要几个功能,在开源产品里都能找到实现,可都是java的,在.Net里用起来很麻烦,这时认识到即使.Net Framework类库再好,也是有局限的。

    我一直比较在意的是代码的精简,实现某个功能,代码越简单越好;如果有现成的产品能用,不要编码岂不更好;所以再优秀的语言,也比不过满足要求的开源产品。

    我是做企业定制应用的,项目规模都不大,但对开发效率要求高,所以觉得.Net很好;

    最近了解了一下云计算,发现自己坐井观天了;随着互联网的发展和小型机被x86替代,云计算会越来越普及,不仅仅是Amazon和Google的公有云,还有企业的私有云,将来微软很多企业应用都会被迁移到云端,而在这块微软受制于Windows,几乎是无能为力.

    看过你的一些博客,知道你对技术研究比较深,有很多Fans,这些Fans会受你的影响,如果仅仅给他们片面的信息,是要误人的。

    我做开发很多年了,也一直保留着兴趣,不过现在开发越来越变成谋生的手段了,将来的目标就是什么也不做。

    为学日益,为道日损,损之又损,以至于无为

  22. 老赵
    admin
    链接

    老赵 2013-02-28 21:53:38

    @青山白水

    语言的确只是生态的一部分,但也没比框架类库什么的意义小,怎么“类库之争”的时候就没见什么人讨论说没意义了?说白了还是你不理解语言的价值罢了。

    还有别把微软和开源对立起来,没人说你搞微软技术就得放弃开源。至于你觉得我给片面的信息是你的问题,不是我的问题。更何况说破天最多是观点不同,别说得好像是我故意样的。

  23. tinytian
    122.194.1.*
    链接

    tinytian 2013-11-10 01:34:47

    我觉得随便说什么讨论无意义的人,没有做到老赵博客标题说的先做人再做事的要求。当然,这个做人不能是做中国人,应该具有最基本的独立思考能力和独立的人格。

已自动隐藏某些不合适的评论内容(主题无关,争吵谩骂,装疯卖傻等等),如需阅读,请准备好眼药水并点此登陆后查看(如登陆后仍无法浏览请留言告知)。

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我