分享

想编写更好的程序?看看小说吧!

 天道酬勤YXJ1 2016-06-04

想编写更好的程序?看看小说吧!

2016年5月21日

J·布拉德福特·希布斯(J. BRADFORD HIPPS)

译者:巍峨群山 公众号:TransTea

加州山景市——对不起了,文科的学究们,人文科学现在没用了。放弃吧,在这个软件统治的世界里,我们只需要更多的工程师。

至少,越来越多的州支持这个论点,它们已经支持一种高等教育的资助模式,这个模式将学费资助用于理工科,如计算机科学,比用于文科要多。这个趋势在无数的时事短评里得到了验证。“《麦克白》对我并不重要。”SUN公司联合创始人,著名的博客作家维诺德·科斯拉(Vinod Khosla)在一篇名为《读文科是不是一个错误?》的博文中写到。(副标题:批判性思考和科学第一,人文第二)。

这位技术专家的论点从质疑人文科学的学术严谨性开始,认为它主要适合梦想家。然后提出一个暗示:现在软件统治着这个世界,因此,理工科教育是唯一合理的教育。最后,他害怕被指控是离经叛道,所以又说人文也可以学一学,不过应该在学生已经读完工程师学位,并找到了工作后,这时他们可以随便挑一两本,比如历史,诗歌等等,看看。

作为一位文科男程序猿,我不由得抓了抓脑袋。

1993年刚从学校毕业,我加入了一家大型技术咨询公司工作。这家公司的理念是:通过招收一位百分之百狂热的文科男,公司可以减少理工男的惯性思维。在六个星期的编程基础训练后,我们一头扎进了软件开发的深渊。

我的第一个项目糟得不能再糟了。我们(大多数是披着工程师皮的文科生)分配给了一个极大的移动交换机项目。我们的任务是重新编写它的计费系统——这个系统的复杂性可以媲美海洋法。

我的团队负责系统中超复杂的一个部分,这部分程序负责处理独立的移动用户从一个“账户”的资费套餐转移到另一个的问题。每一个这样的转移都会引发一连串的问题:套餐的激活和终止,累积的话费时间是带走还是减免,以及无数会影响用户账单的联动条件。

这个有着成千上万行代码,并且日渐增长的程序有如一个精致的僵尸,环绕在我们团队周围。用户和账户在我们的屏幕显示成一系列的“S”和“A”。(巍峨群山注:S,Subscriber用户,A,Account账户)我们日复一日地看着这些符号,几周后,它们开始进入我们的梦乡。(至今我还记得其中一个梦境,我变成了一个婴儿,躺在一个巨大的婴儿床里,在我的头上,缓慢而邪恶的旋转着一个发光的巨大的铁皮手机,手机伸出双手竭尽全力举着这两个大写字母。)

我们的第一次重大突破是由一位学音乐的搞定的。我想她应该是学钢琴的,她加入我们团队一起做这个项目做了好几个月。大约用了几个星期,她偶然发现了一个方法,可以在修改账户时让用户保留所有的正确属性。

那时我们已经被折磨的死去活来。每当我们调整一个细微的程序逻辑,我们就会发现另一个逻辑出错了。但我们这位学音乐的却是天马行空。她没有想着如何冻结每个用户和账户后面排成长队的逻辑关系,而是认为这些符号象是她脑海里的乐符。既然是乐符,它们就可以安排的有韵律,可以组成旋律。(巍峨群山注:不愧是搞艺术的,这牛皮吹的……)

在随后的一个项目中,我们遇到的问题是指针。在程序语言里,指针是代表引用一些存于它处的重要数据的符号。这样说可能很简单,但在系统里指针就是一个阴魂不散的幽灵,稍有不慎引用错误就会摧毁整个程序。我们的指针大师是一位学哲学的,他完全没有问题,不就是关于一个命名的“事物”短暂的代表一下其它的未知的事物吗?对于一位柏拉图的门生,这是他与生俱来的本能。

我做软件这一行很多年,不止一次看见谁谁谁通过借助艺术来解决系统问题。原因很简单,在实践中,软件开发更多的是一种创造,而非仅仅是机械的算法。

开发人员面对代码编辑器,与作家面对着空白的稿纸的情形是相同的。这是一个关于要创造什么的想法,并且认识到可以有亿万种方法去实现它(这令人胆颤)。在创作过程中,一分靠训练,三分靠创造性直觉。程序员和作家都有着对循规守矩的焦躁和对打破常规的热切。当完成编程或者完成写作,评判他们工作质量的标准很多是一样的:优雅、简洁、连贯,没有一丝一毫的冗余,堪称美丽。

当然,这两样作品都需要用到语言和语法,但语言和语法只是基础。声称将文科生换为工科生就能生产出更多的优秀的程序员,无异于说我们只需要重点研究句子图解法(sentence diagramming),就能生产很多伟大的作家。

这里这位技术专家可能会喊冤,说我曲解了他的论点,他们并没有呼吁完全放弃文科,只是在本科生学习阶段用工科取代文科。“让学院成为理工学院,把人文科学放到后面。”在工科生的讲话里,这是一种把文科当做插件的论点。

但是,任何被当做插件的都在学习如何编程。我花了18个月成为一位编程高手。这不是在假装编程很容易——这时间真不短,并且我从未达到过我那些有天赋的同行的高度。但以我的经验,专心孜孜地自学就能学会编程,但这却不能让你可以创作出小说《到灯塔去》(To the Lighthouse)或诗歌《最高虚构笔记》(Notes Toward a Supreme Fiction)。你只需要看几本简单的书就能学会编程。但要想有艺术家的灵魂,你需要有一位人文导师。

象科斯拉这样的家伙们,他们的观点是很危险的:“如果太早学习历史和文学这类学科,就会让人无法学会独立思考,不会质疑诸多的假设,结论和各种专业的哲学。”(当这些“干掉文科”的观点冒头时,最需要文科的理由就是让你怎么读懂他们在说什么。)

但更有力的反击是另一位硅谷图腾的观点,他认为:“光有技术是不够的——技术只有与人文科学结合,才能制造出直指人心的产品。”

这是哪位大神?史蒂夫·乔布斯。

巍峨群山简评:

1、看到这篇文章真亲切啊!93年我也在给北京电话局编制第一套电话话费语音自动查询系统哦。

2、关于编程,我也认为主要是自学,我也不是学计算机的,但后来也成了砖家一枚;很多世界顶级黑客是十几岁的小朋友,他们可没有什么数理化或人文科学的背景知识;

3、在现代软件业里,需要艺术创造力的是系统架构师(比如乔布斯),他负责设计整个系统框架,这种人很少,而大多数基层程序员是不需要创造力的,基本沦落到体力劳动的地步;

4、所以美国很多州政府试图立法将教育补助更多的用于理工科,这是为了给美国社会提供更多的白领劳工,以满足现代企业对高素质员工的需要,我相信他们的本意并不是文科无用论。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多