编程的门槛
大约在游戏制作行业里,大家都把设计工作分成三大类:程序,美术,策划;其重要性相互之间都无分上下。这算是跟其他 IT 行业极大的不同点吧。
但这里面,程序的门槛是公认的最高。很少有听说有专职的美术或者策划人员,从对编程一无所知转变成一个程序高手的。按道理来说,编程需要的基础知识并不复杂,只需要加以时日磨练,任何人都有成为优秀程序员的潜质。谁都明白,当团队中的成员互相了解各个领域的工作可以提高整体的效率。可是,为何,许多人却经过努力,没有迈入程序设计的大门呢?结果,大多数美术人员不会编写 max/maya 脚本;策划没有能力编写复杂结构的脚本。
那么,编程的门槛究竟在哪里?是什么阻止了非编程人员在简单的程序脚本上更上一层楼?作为多年的程序员,我似乎忘记了当年入门时的心境。面对这样的问题时,便得在记忆深处挖掘答案。
现在看来,我和大多数有十年以上编程经验的程序员一样,认为学会这门技术是顺理成章的事情。学会编程的人也不会认为编程有什么困难。仔细的回忆,却想起事情并非如此。
记得第一次接触编程是大约 6 岁时在家中的计算机上,阅读父亲给我编写的 basic 程序,只有不到 10 行的那种。似懂非懂的修改了其中几行代码,满足的看着程序的运行结果因为我的修改而相应的变化。似乎那个时候就理解了程序的含义,但真的如此吗?
直到 8 岁的时候,我学会了解一次方程。对于一个小孩子来说,解二元一次方程还是很有挑战性的。那时的我曾经幻想把方程式输入计算机,就可以得到结果。有幸的是,父亲马上花了时间在这个机会给我重新讲解了变量和赋值语句的概念,从那个时候起,我真的理解了编程了吗?
10 岁的时候,我决定自己编写一个小游戏,唯一的参考资料是随计算机附送的一本 basic 教材。依稀记得是香港的版本,全是繁体字。同时,我跟着一个成人大专的 basic 课程随堂学习,每堂课程的作业都可以准确的完成。但是我在编写自己的游戏时却遇到了极大的困难,最终这个游戏流产。
最终,我认可自己已经迈过了编程的大门是在 12 岁,那时候妄想自己可以用程序解决任何问题了。觉得程序=算法+数据结构 就是唯一真理。同年,我开始学习汇编语言,非常的顺利;第二年,自学了几本 C 语言的教材。学习编程这件事情,已经不再需要老师的搀扶,这时距离第一次编程已经过去了 7 年。
在之后的很长一段时间里,我都觉得编程的门槛是很难跨越的。学会独立编程和学习新知识的能力,似乎需要一种顿悟。直到读大学时,同寝室的一个同学,不到半年就跨越了这个门槛让我明白,年龄也是一个重要的因素。成年人比小孩子更容易迈过这一步。
到底这个门槛是什么?我现在的理解是,学习新知识的方法。大多数人在人生的开始,学习新知识都是采取的类比的手法。了解一样事物的表面特性,就可以去推理类似事物的特性。比如教小孩子去打酱油,领着他到商店,把酱油瓶和钱交给售货员,然后把酱油拿回家。聪明的小孩下次不会教也会自己去买烟了。这是一种类比,然后发现了钞票在这件事情里的重要性;而酱油瓶就不那么重要了。
我们可以看到,很多人会做初级的脚本编写工作。但是他们需要一个范本,根据这个范本修修改改,就可以按自己的想法工作了。简单点的,只是改几个参数,换个颜色;复杂点的,可以调动一些逻辑。本质上,都是用类比的方式来学习编程。可惜的是,编程的本质却不那么容易在这个过程中被发现。
我想,依靠一张数学意义上严格的语法表,任何没学会编程的人都很难掌握一门编程语言。但是有经验的程序员却可以。这或许就因为,编程这件事情,本身就是依赖逻辑推理的。编程语言是建立在逻辑性上。这是思考世界的方法之一,很多成年人也未必熟练掌握这个方法,经验依然是大多数人的法宝。(当然,经验对于程序员也同样重要)
这么多年,我经常收到一些 email 向我索取各种各样的源代码。在网上见到“求代码”这样的帖子也是司空见惯。到底源代码有多重要?我想,对于真正的程序员来说,源代码的作用最多的是复用,省去自己的工作。从这点上来说,二进制复用更加有意义。通过例子代码来学习新知识也是为很多人喜爱的,毕竟不是每个人都喜欢读枯燥的技术定义文档。包括学习新语言,有几段范例代码来琢磨语言本身也是很直观的事情。但是,通过找到一些类似代码来解决类似问题,几乎是天方夜谈。平时我们也能见到一些部分伪程序员,为了解决代码中的问题,这里改改试试,那里改改试试;或者调整几行语句的位置,删掉几行代码,看看问题解决没有。我想这都是尚未迈入编程大门的表象吧。
如今理工科大学生,或多或少会开编程的课程。但是本科毕业生不会编程的人比比皆是。通过背出一段代码来应付考试已经不只是笑话了。编写教材和授课的老师应该检讨,是否教学方法出了问题。
Comments
Posted by: cc | (26) June 13, 2010 10:49 PM
Posted by: 耿浩 | (25) February 13, 2009 07:38 PM
Posted by: ghost | (24) May 13, 2008 04:40 PM
Posted by: ghost | (23) May 13, 2008 03:43 PM
Posted by: d | (22) February 11, 2007 10:12 PM
Posted by: translation | (21) October 25, 2006 01:44 PM
Posted by: 锋寒 | (20) September 18, 2006 10:21 AM
Posted by: jingye | (19) September 13, 2006 04:11 PM
Posted by: DarkSpy | (18) September 4, 2006 09:31 PM
Posted by: wangdali | (17) September 3, 2006 02:16 AM
Posted by: Anonymous | (16) September 1, 2006 03:31 PM
Posted by: loy | (15) August 30, 2006 01:59 PM
Posted by: 伊拉 | (14) August 30, 2006 01:17 PM
Posted by: wwxxdd1982 | (13) August 29, 2006 05:04 PM
Posted by: 大家叫我DD | (12) August 28, 2006 11:17 PM
Posted by: jzhang | (11) August 28, 2006 04:24 PM
Posted by: Atry | (10) August 28, 2006 03:30 AM
Posted by: Atry | (9) August 28, 2006 03:18 AM
Posted by: foxer | (8) August 27, 2006 01:18 PM
Posted by: xms | (7) August 27, 2006 11:06 AM
Posted by: N/A | (6) August 26, 2006 08:53 PM
Posted by: Zenberg | (5) August 26, 2006 02:51 PM
Posted by: sso | (4) August 26, 2006 01:06 PM
Posted by: chengmeng | (3) August 26, 2006 08:35 AM
Posted by: Yao | (2) August 25, 2006 07:10 PM
Posted by: sunway | (1) August 25, 2006 06:23 PM