编程是一门技术,更加是一门艺术

来源:互联网 发布:淘宝客服企业介绍范文 编辑:程序博客网 时间:2024/05/22 21:12




最近一段时间在学习“大话设计模式”,书籍开篇就提到“编程是一门技术,更加是一门艺术”这句经典。读罢,我不得不被作者程序设计模式这种与众不同的思维所折服。其实软件编程真的是一门了不起的艺术。


谈及“艺术”,人们自然会联想到“美”、“技艺”、“灵感”等词,但很少会把它和“计算机编程”这听起来似乎聒噪的词组联系在一起。呵呵!你如果那样想就错了,下面由我来为大家揭开“编程之美”这层美丽的面纱。


什么样的程序才是美的程序?这个问题似乎没有确切的答案。一个很酷的Demo或一个很炫的视频游戏都能让我们赞叹不已。Doom和HalfLife可以说把3D技术推向了极至,这种程序总能给人一种视觉上的美,就像画家手中的美丽油画,只是程序员们的画布在电脑屏幕上,画笔是键盘。Linux也是一种美,一种开放的美,从Unix那里继承来的优雅的设计,强大的可移植性,丰富的工具,这让它看起来像优秀建筑师们设计的一座富丽堂皇的教堂。这些美是显而易见的。还有一种美,隐藏在程序背后,流动于源代码之间。什么又是美的代码呢?可能它们一看上去就很美。这里有一个“C#代码集合宏观定义”:允许程序建立常量,使它们看上去像是屏幕上的图形,程序的自描述能力大大加强!


这种只能在C#代码竞赛中才能见到的代码虽然没有多少实用价值,但它的确能让我们感受到代码 ——“一堆有规则的符号”——也能创造出视觉上的美。也可能是程序使用的技巧 —— 算法很美,快速排序程序,自然而然地使用递归让它们看起来很紧凑,易读,这当然也是一种美,是只有程序员才能体会到的美。还有一种美,深藏在代码之后,是程序的设计思想之美,一种需要领悟的美。

人们都喜欢美的东西,程序员们更是珍视美的程序,我们把那些创造美好程序的人尊称为“尖端程序员”。尖端程序员和画家的共同之处是,他们都是创造者。他们和作曲家,建筑师,作家一样,尖端程序员和画家尝试去做的也是创造好的东西。他们本身并不做研究,但是如果在创造好东西的过程中发现了一些新的技术,那就更好了。



好的画家是艺术家,那么好的程序员——也是艺术家。像我们熟知的Microsoft、Oracle、Amazon、Google、Facebook等的创始人、李彦宏、马化腾、周鸿祎等等他们一样,都是一些了不起的艺术大家。难怪有人说:最顶尖的5%的程序员写出了全世界99%的优秀软件。

编写优美的程序需要灵感和高超的技巧,就像诗人写诗,画家作画,建筑师构筑,充满了乐趣、挑战和美。优雅的程序会像诗歌一样耐人寻味,像名画那样大开眼界,像教堂一样堂皇华丽。所以,计算机编程也同样是一门艺术,程序员就是创造这种艺术的艺术家。


计算机给人的乐趣在于,如果你有什么好的想法,你可以马上实验去得到结果。当然,你可能不会立刻得到正确答案,而必须坐下来,盯着电脑屏幕,苦思冥想求解问题的有效方法,通过不断的尝试去验证你的结果。可以通过找到正确的方法,使问题突然消失,也可以换一个角度,突然灵光闪现:原来是这样!


编程是对创造力的训练,好的程序员不会循规蹈矩,不会使用平庸的方法去解决问题,而是根据自己的见解去寻找更简单的方法,因为他们能看到隐藏在问题背后的实质。然后他们会写出全新而漂亮的程序去验证他们的方法。“不过还是很难说清楚,闭门苦思冥想地要找到解决某个问题的漂亮答案,为什么竟会有如此巨大的魅力。但是,你要是曾经有过找到更好方法的经历,你就会明白,这简直是无以伦比的感觉。”这种感觉能让我们快乐得像一个孩子,乐不知疲。


这种“无以伦比”的感觉,流动在程序员体内,让程序员们为之痴迷,疯狂。而痴迷的程序员从他艺术性的创造中得到了难以言传的乐趣,并让为之上瘾。

正如他们如是说:「电影人似乎不能理解程序员创建一样东西纯粹的是因为他们喜欢创建东西。」 ——马克•扎克伯格评电影《社交网络》。

「我们不停地添加代码,像画家添加色彩,作曲家添加音符,每一个小细节都必须有依据……努力使每件事情完美地组合在一起,以一种前人未曾做过的方式。这使得工程师称为真正的艺术家。」——斯蒂夫•沃兹尼亚克

硅谷创业孵化公司Y.Combinator创始人保罗•格雷厄姆的说法则更为直接:「程序员是现存最大的手工艺人群体,程序员你与画家的共同之处,在于他们都是创作者,都试图创作出优秀的作品。」

「光有科技是不够的。科技要和人文、艺术联姻,才能产生让我们的心为之歌唱的结果。」——史蒂夫•乔布斯



编程给人带来最初的兴奋很好解释:那就是通过编程你可以支配一台计算机,你叫计算机做什么,它就做什么,永远准确无误,而且毫无怨言。这本身就很有意思。

它比下棋之类的游戏更有乐趣得多,因为它可以由你自己来制定游戏规则。而你制定什么样的规则,也就会导出与此规则相符合的结果。

在电脑世界中,你就是创世者,你对所发生的一切拥有最终的控制。如果你功力深厚,你可以是上帝——在一个较小的层面上。

无疑,乐在其中,外行人永远体会不到,毕竟“子非鱼安知鱼之乐”。无穷无尽的乐趣让程序员们模糊地体会到了作为艺术家的快乐,并且开始享受他们的工作。

“我们已经看到,计算机编程是一门艺术,因为它把积累的知识应用于世界,因为它需要技巧和灵巧,尤其是因为它创造出了美的目标。模糊地意识到自己是一个艺术家的程序员将会享受他所做的工作,而且将会把它做得更好。”




下面是一些编程黄金法则,很美很犀利,望各大程序员好好体会和领悟。

 “小巧就是美的。”(Small is beautiful.

“让每个程序都擅长做一件事。”(Make each programdo one thing well.

“一切都是文件。”(Everything is a file.

“沉默是金。”(Silence is golden.

“让操作系统内核小而轻巧。”(Make operatingsystem kernels small and lightweight.

 

原创粉丝点击