更抽象地思考

under reading programming

in thought

Published: 2016-10-12

最近读了三篇文章,第一篇是Joel SpolskyThe Perils of JavaSchools,译文:Java语言学校的危险性

文章大意如下:

[1]作者开始说的是递归,这里说的是函数式编程,递归可以看成函数式编程的代表特性,但其使用不局限于函数式编程

接着又读了文中提到的Paul GrahamBeating the Averages,作者分析了以前的创业项目Viaweb之所以成功,是因为他们比对手采用了更高级的编程语言。

文章大意如下:

Paul Graham还给出了这篇文章的素材来源:一篇演讲稿摘录,里面介绍了Lisp特性给Viaweb中的应用:

Paul Graham的两篇文章主要分析了用Lisp进行软件开发的好处,也确实如他所说,Lisp宏是独特的,因为其他好处只要是支持函数式编程的语言,比如Python或Javascript都能提供。因此这两篇文章留给我最主要的就是对Lisp宏的疑惑和好奇,有些语言(如C++和Ruby)的设计者提到他们可以避免了在语言中引入宏,但究竟Lisp宏是“强大”的还是“邪恶”的,只有用的人才知道。

给我留下最深印象的还是第一篇文章中的一段话:

But what about the CS mission of CS departments? They're not vocational schools! It shouldn't be their job to train people to work in industry. That's for community colleges and government retraining programs for displaced workers, they will tell you. They're supposed to be giving students the fundamental tools to live their lives, not preparing them for their first weeks on the job. Right?

即我们不能止步于眼前或未来用于求生的技能,掌握其思想才是更重要的,特别是在新/旧工作不断涌现/消失的现代社会。用一门编程语言产生可以使用的软件,不能算会程序设计,对大部分人而言,程序设计是从使用一门编程语言中产生,又独立(第一位程序员Ada去世一个世纪后第一台计算机ENIAC才诞生)于任何一门编程语言的能力。这种能力的获得,除了靠程序积累,更要靠有针对性的思维训练。

这里不得不提到文中建议查看的Structure and Interpretation of Computer Programs这本书。看了目录之后就惊了,原来编程可以这么学!但马上就反问自己,难道不应该这么学吗?回想以前,真是浪费了太多的时间。写到这里,又想起萧井陌写过一个“编程入门指南”,点开最新版本一看,这本书赫然出现在入门阶段,MIT CS600等教程之后,安排的顺序非常合理。是的,这是正确的前进方向,小小的一步,等不及要出发了。

(完)