|
圖片來(lái)源:accidentally in code
1. 引言
"(program(computers) == *art) ? so : what"
“只有大約5%的程序員能夠在編寫代碼時(shí)創(chuàng)造出藝術(shù)。其他95%一定是為了取得成功的科學(xué)家,不是藝術(shù)家。”
談及“藝術(shù)”,人們自然會(huì)聯(lián)想到“美”、“技藝”、“靈感”等詞,但很少會(huì)把它和“計(jì)算機(jī)編程”這聽(tīng)起來(lái)似乎無(wú)趣的詞聯(lián)系在一起。而Donald Knuth,《計(jì)算機(jī)編程的藝術(shù)》多卷書的作者,通過(guò)他的著作,成功地展現(xiàn)了計(jì)算機(jī)編程的藝術(shù)。隨后他又在圖靈獎(jiǎng)演說(shuō)[1]中對(duì)計(jì)算機(jī)編程的藝術(shù)做了科學(xué)地論述和詮釋。他不是第一個(gè)這么做的人,但無(wú)疑他是最成功的一個(gè)。Guido van Rossum,Python的設(shè)計(jì)者,如是說(shuō):
“我同意Knuth對(duì)‘藝術(shù)’一詞的定義(或使用)。對(duì)于我來(lái)說(shuō),它和創(chuàng)造性聯(lián)系十分緊密,而這對(duì)于我的工作非常重要。如果(計(jì)算機(jī)編程)其中沒(méi)有藝術(shù),它將沒(méi)有任何樂(lè)趣,而我也不會(huì)在30年之后仍然從事它。”
編寫優(yōu)美的程序需要靈感和高超的技巧,就像詩(shī)人寫詩(shī),畫家作畫,建筑師構(gòu)筑,充滿了樂(lè)趣、挑戰(zhàn)和美。優(yōu)雅的程序會(huì)像詩(shī)歌一樣耐人尋味,像名畫那樣大開(kāi)眼界,像教堂一樣堂皇華麗。所以,計(jì)算機(jī)編程也同樣是一門藝術(shù),程序員就是創(chuàng)造這種藝術(shù)的藝術(shù)家。
2. 編程之美
什么樣的程序才是美的程序?這個(gè)問(wèn)題似乎沒(méi)有完整的答案。一個(gè)很酷的Demo或一個(gè)很炫的視頻游戲都能讓我們贊嘆不已。Doom和Half Life可以說(shuō)把3D技術(shù)推向了極至,這種程序總能給人一種視覺(jué)上的美,就像畫家手中的美麗油畫,只是程序員們的畫布在電腦屏幕上,畫筆是鍵盤。Linux也是一種美,一種開(kāi)放的美,從Unix那里繼承來(lái)的優(yōu)雅的設(shè)計(jì),強(qiáng)大的可移植性,豐富的工具,這讓它看起來(lái)像優(yōu)秀建筑師們?cè)O(shè)計(jì)的一座富麗堂皇的教堂。這些美是顯而易見(jiàn)的。還有一種美,隱藏在程序背后,流動(dòng)于源代碼之中。什么又是美的代碼呢?可能它們一看上去就很美。這里有一個(gè)驚人的宏定義的C代碼集合[2]:允許程序建立常量,使它們看上去像是屏幕上的圖形!程序的自描述能力大大加強(qiáng)!
#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知識(shí)庫(kù):編程:是一門藝術(shù),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。