研究生,请你拒绝C++的爱(上)
昨天晚上,考研考的无聊了便冲到实验室去写了一点构思已久的代码,在实验室里面听见一个老板说里面有个女生看见我的一个师兄学C++便也要去学。我真的是觉得这个女生勇气可嘉。
细细想来,夸张点说我都有点悲从中来。那个女生应该是做遥感方向的,被逼到C++这条绝路上让我颇有些觉得悲凉,更主要的是她是自愿跳C++这个大坑的,这甚至让我有些想荆轲同志去做Suicide Bomber时“风呼啦啦啊易河冻死人”的感受。当然,我承认我的这份感觉是掺杂了95%以上的故弄玄虚的水分的。只是我很想问那个学姐,C++有那么重要么?
我所在的学校是一个非常一般的以工科为主的高校,有特色学科,但是不是什么特色学校。按照我的感觉,现在的工科专业对于计算机这个Tool来说,完全是一种极度功利化的态度,这种态度让我感觉很有些不爽。实质上在现有的工科专业中,计算机大约和数学是差不多的,都属于工具性的学科,只不过数学更要基础一点而已,大家似乎都对数学带有着很敬畏的态度,而对计算机则是有些鄙夷。不合不分,不亲不离,工科专业和计算机之间的关系很是尴尬,就有些像色情小说,是个男人总希望去窥探那么一把然而又耻于让人知道。于是这种鄙夷+需要便构成了工科专业对计算机有些畸形的态度。正像我的老板一边对我说,你学那么多计算机有什么用,一边又让我帮助那些不太会编程的师兄师姐们解决一些问题。
但是事情真的是这个样子的么?大家都喜欢中庸的文化,所有的老师都建议我这样对计算机有特殊偏好的人对计算机的追求要“适可而止”,要精深专业而粗通“The Art of Computer Programming”。然后给我举出一大堆的理由,告诉我单纯的编程好的人有多么多么的无能,他们面临专业问题的时候多么多么的无奈。我亲爱的老师们啊,在您劝导我不要走上一个极端的时候,为什么您要走上另外一个极端?
这个极端便是“极端的中庸”。不可否认,现代科学,尤其是工程科学是建立在大量的数学规则、海量计算和一些看起来合理或者不那么合理的推测和限制之上的。科学是讲究绝对理性的,而这个理性的基础却是感性(公理系统),而工程问题上,感性这一点表现的更为明显,有很多的问题实质上是半理性半感性所构成的,例如一些理想化的经济学模型,感性这个东西是有很多讲究的。和谐,美,合理化是理性化的感性所永远追求的主题。对不起,扯远了。也就是说,计算机在这里充当的角色通常有2种,进行海量计算,或者是使用理性去分析感性的模型。然而计算机本身也是个感性的东西。随着工程问题的日益庞大,相关的计算机软件也越做越大。当软件或者软件参与的计算复杂到一定程度的时候,便需要有理性化的感性去组织我们的工作使之容易为我们所用,往大了说就是要在工程中构造一种和谐的美。如果没有这种美,那么工程本身就可能会被魔鬼拖向深渊。
很可惜,有的时候人对美的感觉并不一定是天生的,后天的训练往往对于美感起到超乎想象的作用。训练本身不一定能让任何人都对审美达到一个不可逾越的高峰,但是至少它可以让大多数人都知道什么是美的,什么是丑的,这样才能树立正确的方向。
软件也是如此,没有相当的训练,写出来的一堆 Bad Smell 浓烈的代码任谁都是不敢用的。然而我们的传统观念恰恰在培养这些到处遗留 Bad Smell Code的人。如同鸡肋,食之无肉,弃之有味。
换过来来说,如果一个编程水平扎实然而专业基础太差的人负责整个专业软件的开发,这个软件的可靠度,易用性,功能完善度,用户友好度都有待考量。
我们该怎么办?这样的怪胎诞生自受过高等教育的人的手里,究竟是谁之过?
根本在于,我们忽略了“和谐”这样一个关键的词。和谐,而不是平均,这点在政治上,在美学上都已经是有了定论的,美的极致不是0.5,而是0.618。怎样去寻找那0.618?
先来说说,我们现在有些什么样的人才。
简单来说,工科和计算机的结合不外乎以下五种。
第一种是纯专业化的,除了专业,别的都不懂。现在除了一些做纯学术的人外这样的人已经不多了,但是不可否认的是,即使他们不懂计算机,他们仍然是专业领域里面的探路者。道路艰险,虽然他手无缚鸡之力,但是他们的助手,同事,学生都会帮助他劈开荆棘,而如果失去了能看见那来自允诺之地的光的prophet,所有的人都会迷惘的。
第二种是专业为主计算机为辅的。这些人专业功底扎实,很扎实,非常扎实。虽然他们不知道专业的路怎么走,但是他们能清理掉脚边的灌木杂草,在茂密的丛林里探寻出一条路,并且能告诉后人这条道的正确与否。但是他们往往执迷于自己的路上,越走越远,直到有一天他们发现了真正的荆棘林之后,发现自己无法走通,于是悲惨的死在那里,只留下一个凄凉的墓碑。
第三种是专业为辅计算机为主。这些人不知道路怎么走,也不太清楚对于错,但是他们都知道那个摆在遥远未知的乌托邦,并愿意为之而奋斗。对工具熟练运用的他们是拓荒的中坚力量,如果不是他们披荆斩棘,所有人都走不出茂密的丛林。
第四种是专业结合计算机科学。注意,我这里说的是计算机科学。这些人是那些迷路在丛林之中的最好的本地向导。他们和第三种或者第二种人一样,不知道真正的方向,甚至连对错都不清楚,但是一旦遇到无法强行撼动的障碍时,他们便会带领团队绕开那些阻碍他们的泥泞。
第五种是计算机的专业人才。对于先知看到的路,他们一无所知,不知所以。在某条特别的专业小径上,他们只能低着头,跟在前四种人后面,做些苦力的活计,却不能有半点想法,因为他们无法提出正确的想法。这些人实际上是一些悲情的人们,因为如果他们留在自己的家乡,或者出去寻找一些自己能做的活计,他们一样能活得很滋润。但是他们也是值得敬仰的,如果没有他们,单凭前四类那数量稀少的人,也是成不了什么事的。他们是专业领域值得然而没有得到尊敬的垫脚石。
你属于哪一种人?