编程:是一门艺术

图片来源:accidentally in code

  1. 引言

"(program(computers) == *art) ? so : what"
“只有大约5%的程序员能够在编写代码时创造出艺术。其他95%一定是为了取得成功的科学家,不是艺术家。”

  谈及“艺术”,人们自然会联想到“美”、“技艺”、“灵感”等词,但很少会把它和“计算机编程”这听起来似乎无趣的词联系在一起。而Donald Knuth,《计算机编程的艺术》多卷书的作者,通过他的著作,成功地展现了计算机编程的艺术。随后他又在图灵奖演说[1]中对计算机编程的艺术做了科学地论述和诠释。他不是第一个这么做的人,但无疑他是最成功的一个。Guido van Rossum,Python的设计者,如是说:

“我同意Knuth对‘艺术’一词的定义(或使用)。对于我来说,它和创造性联系十分紧密,而这对于我的工作非常重要。如果(计算机编程)其中没有艺术,它将没有任何乐趣,而我也不会在30年之后仍然从事它。”

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

  2. 编程之美

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

#define X )*2+1
#define _ )*2
#define s ((((((((((((((((0
static unsigned short stopwatch[] =
{
s _ _ _ _ _ X X X X X _ _ _ X X _ ,
s _ _ _ X X X X X X X X X _ X X X ,
s _ _ X X X _ _ _ _ _ X X X _ X X ,
s _ X X _ _ _ _ _ _ _ _ _ X X _ _ ,
s _ X X _ _ _ _ _ _ _ _ _ X X _ _ ,
s X X _ _ _ _ _ _ _ _ _ _ _ X X _ ,
s X X _ _ _ _ _ _ _ _ _ _ _ X X _ ,
s X X _ X X X X X _ _ _ _ _ X X _ ,
s X X _ _ _ _ _ X _ _ _ _ _ X X _ ,
s X X _ _ _ _ _ X _ _ _ _ _ X X _ ,
s _ X X _ _ _ _ X _ _ _ _ X X _ _ ,
s _ X X _ _ _ _ X _ _ _ _ X X _ _ ,
s _ _ X X X _ _ _ _ _ X X X _ _ _ ,
s _ _ _ X X X X X X X X X _ _ _ _ ,
s _ _ _ _ _ X X X X X _ _ _ _ _ _ ,
s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
};

it知识库编程:是一门艺术,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。