程序员如何选择入门编程语言?

嗯?!Scheme?既然Ned打开了类似于“哪种编程语言是最好的”这样的话题,看上去我们一定会陷进没完没了的争论中去。有人可能说是Perl,别人会说C++,而估计有三分之一的人会推荐Visual Basic,他们会不停的争论,从51CTO.com每月一期的编程语言排行榜来看,似乎每种语言都有自己的支持者和反对者,在最新一期的榜单中,使用率最高的Java也遭到了人们的质疑(详细请参考7月编程语言排行榜:Java,正在老去的王者)。从口水上升到砖头。但选择Scheme?这我倒没预料到。

Scheme:编程语言中的拉丁语?

请注意,Ned并不孤单。许多著名的大学在第一年的计算机科学课程里都有Scheme。在实际的工作中也有许多人需要它。事实上,我敢说,如果你的大学只设立了C++或者Java的课程,你的学校可能不咋的,但如果你们学校有Scheme的课程,那很可能你幸运的去了一个一流的学校。

Scheme是Lisp语言的一个分支,它是现今仍然在使用的最古老的编程语言之一。它提供了最少的语法和极少几个操作符。同样重要的是,Scheme支持函数式编程范式,这意味着它可以用数学函数表达式来编程。任何计算问题都可以使用称为兰布达演算的独特数学符号来表达,从某种意义上说,Scheme算是一个兰布达演算的解析器。

对于学生来说,这意味着Scheme可以让你专注于算法本身,而不是语言的语法。主流的编程语言如Java和C++等都有着极其复杂的语法,这往往是由于语言在演变过程中不断增加的新功能带来的。它们迫使你学习许多种不同的控制结构和处理不同问题的不同方法。但Scheme不是这样,它为每个计算问题提供同样的简洁而可预见的语法。“我感觉Scheme在给电脑下指令时更自然,相对于其他语言,”Ned说。

不过,Scheme?我无法看到它的优势。为今后的编程学习打下简单而坚实的基础确实很好,但是当我15岁时,我对真正的逻辑和数学没有什么兴趣。我着迷的只是怎样让电脑完成各种各样好玩的工作――我要很遗憾地说,“执行兰布达演算的算法”,没意思;而编个视频游戏?很酷。

当然,除了运行算术题,你也可以让Scheme做更多。今天,它已经是一个正式的语言,可以在几乎所有平台上运行。
但是,我对Scheme最大的怀疑仍然是,它本质上是一个只写的语言。一个程序看起来非常像另一个。它的语法很简单,但副作用是你必须要读懂源代码才知道Scheme想要做什么。这使Scheme成为一门良好的教学编程语言,但对于一个15岁,对计算机能做什么非常好奇的孩子,Scheme是糟糕的。

软件工程的现状

不错,有些人会说,我们不需要那么多黑客,需要的是更多受过训练的软件工程师;从Windows SDK入手学习编程,被漂亮的用户界面吸引只会导致坏习惯;还有不理解基础算法的程序员算不上好程序员――我自己就说过很多次。

可是 “软件工程”的概念到底是什么呢?它是否真的算是工程学呢?也许不是,大西洋系统行会(Atlantic Systems Guild)会长Tom De Marco说。“软件开发在本质上不同于自然科学比如物理,它的特性注定了无法非常准确的捕捉到所描述的东西,”这是De Marco在最新一期IEEE软件杂志上发表的文章。“软件开发在某种程度是而且永远是一种实验。实际的软件建设虽然不一定是实验,但它在概念上还是实验。”

换言之,编程是艺术的科学,无论程序员多么精通于实践。创造有效的软件解决方案需要洞察力、灵感、大胆,并经常要有些运气。当然,有好的程序员和不好的程序员――但要把软件开发和土木工程画上等号是件愚蠢的事。正如Jeff Atwood所说的那样,“我们做的是工艺,不是工程。”

因此,15岁,我想说,Scheme可能是“最好”的学习编程的方式,但可以等到大学里去教。在这样一个年纪,我认为鼓励学生发展天生的好奇心和热情更为重要,这可能会造就出一位真正出色的程序员。如果这意味着在Visual Basic中编码,那也没问题。Scheme可以稍后。

最后,我还是直说了吧,我建议的第一门编程语言是Python,现在让砖头飞过来吧!

投票调查

您的第一门编程语言是什么?
C语言
C++
Java
Pascal
BASIC
其他
您认为哪种编程语言最适合入门学习?
C语言
Java
Ruby
Python
PHP

【更多关于编程语言的讨论】

  1. 程序员如何选择合适的编程语言
  2. 详谈学习编程语言的策略
  3. 对话Windows教父:未来编程语言的发展方向
  4. Java以外的选择 Scala编程语言简介
  5. 教你如何有效编程的十四种方法

相关推荐