论坛风格切换切换到宽版
  • 929阅读
  • 0回复

[新闻]幸为程序员 [复制链接]

上一主题 下一主题
离线quanbing276
 
发帖
3
C币
-141
威望
3
贡献值
2
银元
0
铜钱
0
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-03-31
— 本帖被 fangyang 从 新手接待厅 移动到本区(2010-03-14) —
前几个星期我们一直都在忙于一个项目。经过大家的一番呕心沥血,这个项目终于得以顺利结束,我们的作息也恢复正常。现在同事们每谈起那段疯狂的时光,总是唉声叹气。我觉得这不大应该,我就很少发牢骚。其实我觉得,只要环境对头,编程这项工作总是有一种难以言传的乐趣。
对这一观点,许多同行都表示赞同,不过其他一些人则不以为然。都怪万恶的制度,它能够把一切事情的乐趣都消灭无形—-学校可以把生动的知识搞成一堆冷冰冰的公式,企业也可以把挑战性的工作仅当成员工挣钱糊口的手段。
这样很不好。又有什么工作,能好过在一个创作环境里为自己杰作的出世而绞尽脑汁、废寝忘食呢?我这可不是在怂恿人们做工作狂—-一个稳定的作息是相当必要的—除却偶尔的狂欢。我要表达的是:编程是解题、写作和工艺的完美结合,在创造中你可以体会到超乎寻常的乐趣。
编程中存在许多诱人的挑战,并为创造提供了充足的空间。一些问题是研究性的:这段代码为什么如此慢?造成这个bug的原因究竟是什么?一些问题是建设性的,比如设计算法和架构。你若喜欢搞研究,这些怪物们都将变得可爱起来:malware、路由、缓存、协议、数据库、图和数。
这些研究就像个策略游戏,是程序员与编程距离最近、也是最有趣的地方。不过对于大部分软件开发而言,“交流”才是重中之重:通过代码与程序员的交流,通过界面与用户的交流。所以比起“解题”来,编程更像是“写作”。它要求你将灵感与设计清晰地表达出来,做到简洁明快。在代码与界面的设计中,创造的乐趣无所不在。
编程的另一个乐趣在于,编程中存在美。这话可能听起来像是狗屎,不过确实是实话。编程可以帮你找到更多的生活乐趣。如欧几里德关于素数无限多的两行证明,我相信很多人可以体会到其中的美感—-如此简洁、如此惊人!这便是数学的美:严谨、朴素。软件也是如此,这种美弥漫于精妙的算法(像quicksort)、内核和编译器的源码、巧妙的溢出攻击以及日常技巧之中。看到这些方法,不管是大名鼎鼎的算法还是稀松平常的技巧,你都可以会心一笑:“太妙了!”—-这感觉很棒。
编程中的美感并不仅限于数学。它还存在于良好的设计—-用少量的代码、整洁的方法来完成功能的实现。一些语言实现起来会比较困难,因而不是所有程序员都能做到游刃有余,但也正因为如此,搞这种代码就有了挑战性;若是用一种表达能力强的语言与同事合作,生活就更加明朗了。
再谈谈工艺。软件是抽象的—-除了人的思维,还有什么可以搞编程?说是“构造软件”,也是有道理的。程序都是一个特性一个特性地慢慢成型,从模型开始,渐渐增长成架构。同时也得考虑上用户界面,bug的修复以及瓶颈上的优化。它可以给人一种工艺上的满足感:由纯粹的想法出发,一步步“构造”出来,使之可以运行,从而能够给别人提供帮助—-没准还能彻底改变人类的生活。
就拿医学说吧。虽然经过了400年的科技革命,但今天的医学对病毒性感染或癌症等绝症依然是无能为力。领域内的很多成果都是出自偶然,像抗生素。你在搞肺炎药的临床试验—-唔—-病人们都勃起了!伟哥诞生。虽说机遇总是垂青有准备的头脑,但是物理和化学都依靠强大的理论基础取得了长足的进步,而医学却依然被限制到有限的运气上。要治疗癌症?给病人做放疗、化疗,然后祈祷它们先杀死癌细胞吧。这是个很出色的发明,我会乐于接受它们。不过在精度上,它们还是差得很远。
软件正在改变这一切。大约50年前,人类发现了DNA的结构。现在,每个人都可以浏览或下载上百个基因组,或是检索上千个基因(如DLEC1)的核苷酸序列以及对应的氨基酸序列,可以按照名字找到详细的介绍。或许你也可以通过一台廉价的设备检测自己的基因序列,再到基因数据库中检索,得到一份详细的匹配报告。使用标准的串搜索工具—-BLAST算法,将基因片段从数据库中按照匹配程度评分,因而完全不用怀疑其精确性。这将为药物研发提供巨大的突破。医学正借软件之力,进入了新的纪元。
当然,医学只是一小部分:P,科学、文化以及商业都从程序的进步中获益良多。如今第三世界的孩子都可以到wikipedia浏览资料,这也是我们的成就!是我们定义了RFC和协议栈,开发了浏览器和MediaWiki、操作系统和HTTP服务器。篇幅有限,我就不提wikipedia上的无数条目了。从字节到比特,技术的影响力已经无所不在:是程序员发明了wiki和blog。Henry Mencken说:“媒体的自由受其主人约束。”(freedom of the press is limited to those who own one)。很可惜,他没能见到我们的发明对传统新闻业产生的巨大影响。我们开发的应用使得生产力大为提高并且影响到经济,这在历史上也是少有的。
三年前我本科毕业(之前已编程多年)本打算学医,当时是有两次不爽的经历使得我差点对编程失去热情。很庆幸,我坚持了下来。到今天我依然对医学研究持有兴趣,但若再给我一次机会,我依然会选择编程。其中有太多乐趣。我妈妈则一直以为我的工作就是打字,也罢。
如果你发现自己被困在一个地方,使得自己对编程的热情不停地为之消磨,那就去他妈的,闪人!不要在平庸的地方浪费自己的热情。有热情的人千金难买,而这就是你的资本;有的是雇主—-尤其是创业者—-会适合你。对于拿不准自己是不是喜欢编程的人们,你们的能力或许有高有低,但我强烈希望你们能选择编程。不提工作上的光明前景,更应认识到,软件的应用已经越来越广,身为程序员,可以亲身参与技术带来的变革。毫无疑问,我会乐于参与其中,用我拥有的艺术和工艺。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个