2008年11月9日星期日

鼓励未来的程序员

转自CSDN,原文请看这里

今天我在BBC新闻网站上看到了这篇有趣的文章,是关于英国游戏产业的,英国是如何一直在发展他们能力范围之上的游戏产业。这个问题总是被推向那些伴随着BBC Micro,ZX-81等的计算机长大的那一代人身上。那时候的计算机通常会有一个内置的BASIC解释器,你需要使用它来运行磁带或磁盘程序。

幸亏这些本地居民和便宜的计算机,英国多年来在游戏市场都占据强有力的地位。程序员通过进入杂志的列表开始了解编程,进而一步一步开始写自己的游戏代码。那时候的机器明显是比现在的机器要难用,但却是文档齐全,更具有编程文化——如果你想要使用,你至少需要学习少数命令。

现在,与今年的这篇文章比较一下,这篇文章就显得很压抑。很少人在学习编程,学校在全神贯注地教学生如何使用Word和Excel。难怪很多人都不愿意考虑去试一试OpenOffice!(好像老外也教小孩使用office。)

我现在将近30岁,在9或10岁的时候拥有了我的第一个计算机(Amstrad CPC 6128)。所以我认为我是处于伴随着第一代计算机长大的那一代人的末梢儿。像很多其他人一样,我按照电话本大小的手册书里的指南去编写程序,建立一个地址本应用程序,花费几个小时键入程序,同时调试来自杂志的游戏。

90年代被认为是计算机产业的一个糟糕时期,尽管计算机网络是出现于这个时代。Commodore沉没,Apple也只是死里逃生,在短短几年之内,Windows开始占据桌面统治地位,其它的几乎都消失了。

Windows毋庸置疑在使计算机更易使用方面做出了杰出贡献(其实我不喜欢承认这件事情,我是一个Linux用户),同时还提供了写信,制作电子表格,到后来的网络冲浪等一些了不起的功能。一定程度上来说,它使计算机变成了一个黑匣子,使人们对学习编码不感兴趣。(很正确。)

同时,游戏控制台开始占据更大的游戏市场。一些流派(如RTS即时战略),已经在家庭计算机上占有了很强的地位,而且现在仍然如此。平台游戏如Mario和Sonic游戏渐渐退去舞台。所以,像过去那种为了玩游戏买计算机,然后开始编程的情况已经很少见了。

现在,如果你买一台Windows PC,没有任何方式会鼓励你用它编程序。没有任何种类的指导,也没有BASIC解释器(或者任何其它解释器)。现在的PC杂志似乎没有做任何鼓励人们学习编程的事情,我觉得这有一些悲哀。(我刚开始学BASIC的时候,需要从软盘安装BASIC的开发环境。)

拥有一台Windows计算机,在我看来,你实际上应该从它开始对编程产生兴趣,应该知道你对它感兴趣,你可以使用它作为一个编程平台。我的意思是,它并不会鼓励你学习特定的编程语言。据我所知,微软的操作系统到目前为止还不包括任何编程工具。

让人感到受挫的是,他们其实已经有了近乎完美的编程工具,以Visual Studio Express Edition的形式。我希望人们能学习一种开源语言而不是依靠Windows,但我更希望看见人们能首先被鼓励编程。为什么微软的Windows操作系统不能包含至少一种Visual Studio Express Edition IDE(我预期他们大概主张Visual Basic,尽管那不是我的首选),以及一个用户手册(打印或pdf版本)?他们可以在桌面上放置一个链接“开始学习编程!”,让人们在好奇心的驱使下自然而然地去学习。如果人们不喜欢,他们可以删除它,那不是很好。事实上,现在你不得不到微软的网站上去寻找它。他们应该鼓励人们去学习他们的软件,并为之开发更好的应用。(VS的免费版本功能很强大,在做windows系统下的桌面应用的时候很好用。)

我认为在很多方面,Apple做的更好。通过在OS X的每一个拷贝中包含Xcode IDE,伴随计算机同时提供了一个有力的编程工具。而且,OS X本质上来说是Unix的一种形式,很适合编程用。但是,事实上,Xcode不是预安装的,意味着它不是默认安装的,使得使用性变小,人们可能会出于好奇心而安装它。同时,尽管XCode确实装载了文档,但却没有包含任何“初学者向导”,看起来像是只为那些已经成为程序员的人提供的。他们应该明确地做更多能鼓励人们开始编程的事情。所以,我再一次感觉到像Windows,OS X都是很少的努力来鼓励人们开始学习编程。(没用过MAC 不清楚。)

另外一个Apple和微软的共同点是,他们过于强调IDE而不是文本编辑器。我曾经短暂地试过使用Visual Studio Express Edition,也试过Xcode,我同意这种观点,就是IDE是你开始编程的最后一个选择。学习一个全新且复杂的应用程序,同时学习编程,对大多数人来说都有些困难,但任何人都会使用基本的文本编辑器。甚至是更复杂的,如Vim(我个人喜欢的)也远比使用大多数IDE容易得多。毫无疑问IDE提供了大量特征供用户体验,但当某人开始他编程第一步时,却是极其不应该选择的。(windows平台的程序员很多人连编辑器和解释器都分不清楚,这实际上是IDE的功劳。我自己喜欢VIM和EMACS这两个编辑器,各有各得好处。IDE在JAVA EE开发的时候很有用,可以避免自己手动配置那些麻烦的参数。)

有一件事情让我喜欢Linux超过OS X和Windows。目前,在某些流行套件如Ubuntu中,你实际上不需要为日常作业而使用终端,现在有一个很强的文化在做这件事情,你可以使用它来解决问题。我认为部分原因是由于主要支持来源于论坛,对某个人来说,很容易就可以给你粘贴一个命令,粘贴到终端,然后告诉你“点击这里,然后这里,然后这里……”。同时,bash shell比Windows的配对产品更有力。总的来说,可能会存在一个学习曲线,使用bash通常是完成一项任务的最快、最方便的方法。从使用 bash,通过编辑文本文件改变设置,然后到编写shell脚本或是学习使用Perl或Python编程并不是很困难的事情。很多套件包含语言的同时也会包含大量文档。同时,Linux中使用的语言几乎是一成不变的,可以使用一个简单的文本编辑器而不是强迫你去学习使用某个IDE,我感觉这让他们更容易理解。(linux下的编译器和编辑器是分开的。很多人可以几十年的使用VIM做编辑器,使用GCC来编译程序,使用FLEX和BISON做语法分析。每一个工具只完成一项工作,这样程序员就不用老更换工具。而且linux下的编程语言主要是C语言,好像这么多年来几乎没变过。)

但是,我还是感觉甚至是Linux也可以做跟多鼓励人们学习编程的事情。我不得不想做的最后一件事情是,当人们不想学习编程的时候强制他们去学习。但我认为我们不应该采取更多的措施去鼓励新程序员。可能只是手头/home目录下的一个pdf文件,叫做“学习编程”的就足够了。

最近,我开始学习Python。很快地我就开始喜欢学习它了。它可能比BASIC更强大,但我发现它正如入门容易那样简单。过去我曾学过Perl和 Java,发现学习一个新语言或多或少会有点困难,但Python让我感到很惊讶。所以一个新计算机应该包含一种理想的语言。OS X和大部分Linux套件已经包含了Python。我找不到任何微软的产品不包含它的理由。只需要添加一到两个pdf指南,放在那里。如果处于某种理由他们不想使用Python,我们当然还可以为初学者提供其他好的语言。

还有其他可以让人们对编程产生兴趣的方法吗?我们应该推动哪种语言?我们是否应该鼓励他们使用IDE,或者使用像Vim这样的文本编辑器?欢迎给出你的答案!(要推动的语言我觉得C和JAVA,PATHON,对初级程序员应该推广VIM/EMACS,如果使用IDE的话推荐使用eclipse。有了这些工具我们就能学习编程了,连操作系统和数据库都可以用这些工具做出来。)

没有评论: