|
圖片來源: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 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
};
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。