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

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

【51CTO.com快译自7月28日外电头条】有一天,我的朋友Ned的表弟问他,对于一个想做程序员的人来说,从哪门语言入手***?他的表弟并没有太多的编程经验,但15岁的年纪,未来实际上也快得很,他似乎对编程很感兴趣,希望这门语言可以给他打开编程世界的大门。“所以很自然的,”Ned解释说,“我告诉他,去学习Scheme。”

嗯?!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所说的那样,“我们做的是工艺,不是工程。”

如果单纯从软件工程和专业性角度解答程序员如何选择合适的编程语言,那我们必须考虑具体的需求和应用场景,是做Web开发还是桌面端开发?是做前端还是服务端编程?这样看来你讲面对PHP、C++或者XML或者C语言之类的选择。在51CTO.com与Windows教父一次关于未来编程语言的发展方向的对话中,Jeffrey提到了编程语言将向自动化和智能化发展,但这并不意味着我们不需要一些基本的编程逻辑和思考的训练,编程语言可以让我们控制硬件,但程序却需要程序员来控制。

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

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

投票调查

您的***门编程语言是什么?
C语言
C++
Java
Pascal
BASIC
其他

您认为哪种编程语言最适合入门学习?
C语言
Java
Ruby
Python
PHP

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

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

【51CTO.com译稿,非经授权请勿转载。合作站点转载请注明原文译者和出处为51CTO.com,且不得修改原文内容。】

原文:What's the best first language for a programmer?      作者:Neil McAllister

责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-02-27 09:25:28

编程语言程序员C#

2009-03-02 09:40:13

程序员程序语言开发

2017-12-06 08:01:52

程序员编程代码

2013-12-30 10:08:13

2021-10-26 16:25:25

编程语言JavaPython

2015-02-03 02:40:33

程序员盲人程序员

2010-03-22 09:32:42

自学编程

2015-03-20 10:40:29

程序员程序员如何开始如何入门

2015-06-10 10:43:07

2015-05-19 14:34:17

程序员编程语言

2013-08-23 11:06:34

编程语言

2013-05-30 13:30:00

代码效率程序员

2014-11-26 09:25:53

2021-06-29 08:29:25

开源程序员github

2012-08-30 10:05:40

编程编程语言程序员

2018-07-06 15:25:50

程序员编程python

2015-07-14 10:21:58

2015-10-28 09:33:31

程序员崩溃编程语言

2009-05-13 11:40:19

编程语言开发语言Perl

2022-05-23 07:56:19

语言DSLClojure
点赞
收藏

51CTO技术栈公众号