程序语言理论的学习对于程序员教育的作用

By guenchi at 2018-02-06 • 0人收藏 • 139人看过

作者:王垠


推荐 Dan Friedman 的这篇文章 “The Role of the Study of Programming Languages in the Education of a Programmer”。它介绍的是对程序语言理论的学习会对程序员的教育产生什么样的作用。这是一篇很长的英语文章,到后面会非常技术性,所以一般人只需要看前10页的小故事就行了。

其中的几个要点是:

  1. 在一个实际的工程项目中,当需要数据库的时候,人们召唤数据库专家;当需要网络方案的时候,人们召唤网络专家;当需要操作系统的时候,人们召唤操作系统专家。但是所有这些事情都离不开的一个东西是程序语言,所以程序语言专家往往能够起到总览全局的构架和协调作用。但是人们往往不知道程序语言专家是什么,以及如何找到他们。

  2. 这里的 "study of programming languages" 并不是指学习某一种特定的程序语言(比如 C, Java 或者 Scheme),而是指学习如何实现程序语言的一些概念,也就是写一些解释器。

  3. 学习任何知识的最好方法,就是对它进行建模。所以学习程序语言最好的办法,就是实现程序语言。对于普通的程序员(不打算成为程序语言专家的),这不需要特别专业高效的实现,一个大概的实现也行。

  4. 这样的学习能够让人掌握编程语言的一些“精髓”(essentials)。之后学用一种新的语言,不过是把这些已经学到的精髓筛选组合一下。

  5. Friedman 指出,对程序语言理论的学习最重要的两个作用是:1)它教会你如何避免程序语言中的不好的思想。2)它教会你如何在任何语言里使用好的思想(包括本身没有这种好的设计的语言)。文中提到的例子包括动态作用域 (dynamic scoping),Java 的缺少尾递归优化等为什么是坏主意,以及为什么程序语言的理论知识可以教会你如何在没法改变语言的情况下绕过这些问题,达到好的设计。

  6. 这个文章里面提到的人 Jon Rossie 和 Anurag Mendhekar 都是 Friedman 的学生。他们用亲身经历讲述程序语言的理论知识如何在他们的现实工程中起到重大的作用。Jon Rossie 现在是 Cisco 的 Principle Engineer。Anurag Mendhekar 是 Online Anywhere 的总设计师和创始人,后来被 Yahoo! 收购,现在是另一家公司的 CEO。Friedman 还有很多其他学术后裔都在世界上最好的工作职位。比如 Google 的 V8 JavaScript 编译器的构架师,Cython 的设计师,Cisco 的另一个 Principle Engineer,还有一些是创业家,终身教授等等。

This article was posted on yinwang's sina blog, on 2012-06-13. Though it's not available now.


登录后方可回帖

登 录
信息栏

Scheme中文社区

推荐实现 ChezScheme / r6rs / r7rs large
theschemer.org
Q群: 724577239

精华导览

社区项目

包管理器:Raven
HTTP服务器:Igropyr (希腊火)
官方插件:vscode-chez

社区目标:

完善足以使Scheme工程化和商业化的库,特别是开发极致速度的Web服务器和ANN模块。

一直以来Scheme缺少一个活跃的中文社区,同时中文资料的稀少,导致大多数因为黑客与画家和SICP而接触Scheme的朋友,在学完SICP后无事可做,不能将Scheme转换为实际的生产力。最后渐渐的放弃。
同时Chicken等实现,却因效率问题无法与其他语言竞争。本社区只有一个目的,传播Scheme的文明之火,在最快的编译器实现上,集众人之力发展出足够与其他语言竞争的社区和库。


友情链接:

Clojure 中文论坛
函数式·China


Loading...