为什么计算机科学界最高荣誉图灵奖获得者戴克斯特拉先生如此痛恨BASIC语言

戴克斯特拉先生是一位经常会被人们拿来引述的著名计算机科学家,人们谈论最多的是那些被他挑破的让人难以接受的事实真相。经常被人反复提到的一个就是他对BASIC语言的痛斥,但往往人们谈论这件事情时都忘了提到当时的背景——

对于一个之前接触过BASIC语言的学生,你基本上不可能教会他如何正确的编程:因为作为一个程序员苗子,他们已经脑残,无可救药。

戴克斯特拉先生的这番言论是来告诉大家“如何看出事实背后可能是对你有害的真相”——对有些事实人们广为接受,所有没有人思考它们,或不屑一顾,或避而不谈。戴克斯特拉先生对于这个问题给出的答案被证明极具轰动性。他用这种方式非常有效的挑起了争论,时至今日我们仍在讨论。

人们经常会忘记,在1975年,那时的编程跟我们如今有很大的不同。戴克斯特拉先生斥责的Dartmouth Basic——这是一种享有荣耀的汇编语言,它不是我们如今使用的BASIC语言——

  • 变量名称只有一个字符,或外加一个数字
  • 尽管有For语法可用,但循环,break,以及其它逻辑都用无约束的goto语句实现。
  • 空格在表达式间可有可无。
  • 有子程序。子程序通过行号调用或通过return转向。
  • 所有的参数都通过全局变量来传递。
  • 26个用户自定义函数可以排列成FNA—FNZ,里面可以有一行代码。
  • if语句被限制在一行上。

这样的限制我可以继续列下去,但事实非常明显:你很难用它写出可读性好,易于理解的程序。我们如今想当然应该有的一些语言特征它都没有。这种状况一直等到BASIC之后的语言发展起来才结束,成为我们如今熟知的编程语言。

当我们在学习第一种编程语言时,你可能会一直在用其它语言风格进行编程(“你可以用任何语言写出FORTRAN风格代码”)。程序员的成长过程中最难的不是如何获取新知识,而是如何抛弃陈腐的旧习惯。

学会如何小心的堆起一滩烂泥,这对你写出结构化的程序不会带来任何帮助。即使今日,你也能很容易的发现有些人被教育了basic的现代变体——尽管他们对这种basic老祖先知之甚少。后继者对此有很大责任。

编程很难。荒诞的语言特征让它变得更难,这无助于初学者,同样也无助于专家。戴克斯特拉痛恨basic,其实你也应该痛恨它。残酷的是我们只记住了戴克斯特拉先生尖锐的批评,但却忘了他对计算机编程卓著的贡献——这完全是另外一个话题了。

人物简介

220px-Edsger_Wybe_Dijkstra

艾兹赫尔·戴克斯特拉(Edsger Wybe Dijkstra,1930年5月11日-2002年8月6日)曾在1972年获得过素有计算机科学界的诺贝尔奖之称的图灵奖,之后,他还获得过1974年AFIPS Harry Goode Memorial Award、1989年ACM SIGCSE计算机科学教育教学杰出贡献奖。2002年,在他去世前不久,戴克斯特拉获得了ACM PODC(分布式计算原理)最具影响力论文奖,以表彰他在分布式领域中关于程序计算自稳定的贡献。为了纪念他,这个每年一度奖项也在此后被更名为“Dijkstra奖”。他曾经提出“GOTO有害论”信号量和PV原语,解决了有趣的“哲学家就餐问题”。

[英文原文:Why did Dijkstra Hate Basic? ]
分享这篇文章:

12 Responses to 为什么计算机科学界最高荣誉图灵奖获得者戴克斯特拉先生如此痛恨BASIC语言

  1. 哈哈哈哈 says:

    baisc跟vb是一回事么,编辑是傻鸟吧

  2. just says:

    不应该配这个图吧

  3. Khotyn says:

    看了英文名才知道原来就是迪杰斯特拉,汗!

  4. 依云 says:

    「26个用户自定义函数可以排列成FNA—FNZ,里面可以有一行代码。」–>「可以有26个用户自定义函数 FNA-FNZ,里边只能有一行代码。」

  5. 独行猫儿 says:

    空格在表达式间可有可无。
    有子程序。子程序通过行号调用或通过return转向。
    所有的参数都通过全局变量来传递。
    26个用户自定义函数可以排列成FNA—FNZ,里面可以有一行代码。

    其实这4个我都接触过,当年GVBASIC就是这样的(文曲星上的编程语言,当年我见过的唯一一个可直接在移动设备上编辑并运行的语言),这些都还好,对初学者不会有多少恶劣的影响。

    当今后见到C之类的语言之后,发现if可以{},会发现原来这么伟大。

    如果没有当年这些比较渣的语言,又怎么会发展出现在这些更好的语言?

  6. 风中浮云 says:

    VB也挺垃圾的,VB的思维是让你写对象,而不是写类。

  7. Luis.Zhang says:

    basic,我小学用过一点点呢,还蛮有意思的

  8. 打脸 says:

    为什么人越无知就越喜欢大言不惭。这就是在胡说。LISP是世界上第二古老的语言。在这些垃圾诞生之前,更好的语言早已出现了。

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据