编程

如今,计算机已经成为我们生活中的必需品,但是,我们真的有必要去学习编程吗?

对于编程,相信许多人和我一样,是一种敬而远之的态度。就是说将其视为一项专业的技能,便如同律师、医生、工程师一般,属于专业人士的范围。非专业人士不了解一行代码对于生活也毫无影响。不过我偶尔还是对编程有些兴趣,特别是在 Codecademy 这样方便的教学工具出现以后,很有兴趣去写行代码。究其原因,可能是因为编程本身是一种创造的过程,也是对思维能力的一种锻炼。

最近,Codinghorror 网站出现一篇文章,叫做“不要学习编程”。作者非常反对“每个人都需要学习编程”的想法。最近,编程热似乎感染到了纽约市长,他在 Twitter 上宣布自己要学习编程。

对此,Jeff Atwood 认为这是一个糟糕的姿态,他讽刺道:

如果 Bloomberg 先生真的“学习编码”,我觉得我们得到的结果是:

10 PRINT "I AM MAYOR"20 GOTO 10

他认为市长应该做好自己的本职工作,而那份工作和编程无关。编程并非一项必要的技能,认为每个人都需要编程,就像要求每个人都学习管道工一样荒唐。这是将编程等同于必要的生活技巧,比如阅读、写作和数学。

我非常同意 Jeff Atwood 的看法。如今的教育试图将过多的技能强加给人,而在实际生活个人能够用到的技能却很有限。不过,什么是必要的技能,不同的人的看法显然不会相同。Jeff Atwood 的论据同样可以用来反驳自己,因为在我认为,在必要技能中,除了阅读之外,写作和数学似乎也不必过分强调,领导的讲话稿常是秘书写好的,而不懂数学并不妨碍你成为文学家。同样,我也可以辩论说,编程和写作一样,都是必要的技能。

就在 Coding Error 的文章发表不久,Mike Loukides 就在 Oreilly 做出了这样的回应。他说编程已经成为文化的一部分,因此学习编程是有必要的。最近的一个例子就是 Google vs Oracle 案,相信许多人都有这样的疑惑,决定案件结果的都是不懂编程的人,他们怎么做出正确的判断?

或许你没有想到,法官 William Alsup 还真的学过编程,而且现在还学了 Java。当 Oracle 的律师宣称 Google 侵权的  rangeCheck () 耗时很久,Alsup 说他写过许多类似的代码。

我已经写过上百遍 rangeCheck 这样的代码了。我能做到,你也能做到。想想这件事,他们自己能很快的编写这样的代码,还会拷贝吗,那是一个巧合。你不能说这会使得他们的代码更快进入市场。你是美国最好的律师之一,怎么能做出这样的推断?

以这件事为例,Mike Loukides 认为,学习编程不是让我们都去做程序员的工作,而且了解编程的原理。编程已经成为我们生活的世界的一部分。

我们有太多的法律人士认为互联网是管道,对于文件传输工具的合法使用一无所知,对于在线空间的隐私没有丝毫概念。我们已经有太多的专利审查官将多年前的“现有技术”批准为专利。而且我们已经有太多的法官在听过律师讨论技术之后,在毫不理解的情况下做出了裁决。学些编程不能解决这些问题,但是编程能够使我们和科技产生联系,这比单纯的无知要好。

即使你从不专业去做编程,它仍是文化技能的一部分。Alsup 是个现代英雄。

这足以证明我们都需要学习编程?似乎仍过于牵强。现实生活中,可能随时要求我们展示各种技能,事先筹备一切的想法有些荒唐。不过 Alsup 的事情再次验证了一句俗语:技多不压身。如果你有时间和兴趣,不妨多了解和掌握些技能,或许随时可能有用,比如编程这项技能。