|
建筑美和 Architecture Compiler
在前一段時(shí)間,由于我個(gè)人對(duì)代碼的熱情,使得我狂熱地相信 Knuth 說(shuō)的“編程是一種藝術(shù)”,并且對(duì) Wordpress 的口號(hào)“Code is Poetry”(代碼是詩(shī)) 推崇備至。很多對(duì)代碼有潔癖的人都是非常討厭“縮進(jìn)不整齊”、“多余空行”等壞習(xí)慣的,甚至有的編程語(yǔ)言把縮進(jìn)當(dāng)做是語(yǔ)法的一部分來(lái)迫使你寫出漂亮的代碼,比如 Python. 很多程序員會(huì)把代碼書寫上的“錯(cuò)落有致”描述為“建筑美”,認(rèn)為它形式上的優(yōu)雅是和建筑一致的。
我之前也相信這一點(diǎn),但是在之后我看到了一些建筑之后不得不承認(rèn),代碼的那點(diǎn)兒結(jié)構(gòu)美和建筑相比實(shí)在是不值一提,它缺乏很重要的一點(diǎn):空間感。因?yàn)樘摂M世界里沒(méi)有距離感和空間感,所以代碼可能會(huì)讓你覺(jué)得“舒服”,但是絕對(duì)不可能帶給你建筑可以帶給你的那種震撼。
不過(guò),在玩了 Kinect 之后我之前的悲觀有了一點(diǎn)兒改觀。試想一下,如果以后虛擬現(xiàn)實(shí)的技術(shù)足夠發(fā)達(dá),那么完全可以在屏幕里面創(chuàng)建一個(gè)世界出來(lái),而那個(gè)世界的建筑、道路??所有的一切都是字節(jié)組成的,也就是說(shuō):它們是完全用代碼實(shí)現(xiàn)的。那個(gè)時(shí)候,程序員就是建筑師,如同黑客帝國(guó)里面的那個(gè) Matrix 創(chuàng)造者一樣。到了那個(gè)時(shí)候,我們或許可以再來(lái)聊一下代碼中的“建筑美”。
如果代碼真的可以創(chuàng)造建筑的話,那么理論上來(lái)說(shuō),任何形式的代碼都可以被形象化為一棟建筑,甚至是一座城市。到了那個(gè)時(shí)候,應(yīng)該有很多編程語(yǔ)言可以用來(lái)創(chuàng)造建筑,而且它們都可以通過(guò)一個(gè)叫做 Architecture Compiler(簡(jiǎn)稱 ac,屬于 gcc 的一部分) 的“建筑編譯器”來(lái)編譯成建筑。它的用法大概是這樣的:
ac house.a
ac house.a -a kitchen (建造一個(gè)廚房)
??
我想,如果用這個(gè) Architecture Compiler 把現(xiàn)在的代碼重新編譯一下的話,應(yīng)該會(huì)出現(xiàn)一些有趣的事情。Linux 會(huì)被編譯成一座不起眼甚至有些簡(jiǎn)陋但內(nèi)部宏偉的教堂,Windows 是一座外表看上去不錯(cuò)但內(nèi)部糟糕的大廈,Mac OS X 則會(huì)是一棟豪華別墅。那個(gè)時(shí)候如果帶著小孩子們?nèi)⒂^ Linux ,讓他們親身感受到那種迷人的美,順便告訴他們什么是 KISS 法則,或許他們會(huì)更愿意去學(xué)習(xí)命令行。
另外,寫代碼也是一種形式的創(chuàng)造活動(dòng),等到 Architecture Compiler 出現(xiàn)以后,那就真的應(yīng)了包豪斯的宣言:一切創(chuàng)造活動(dòng)的終極目標(biāo)就是建筑。
音樂(lè)美和 Music Compiler
另外,我一直覺(jué)得代碼有音樂(lè)美,或者說(shuō)應(yīng)該有音樂(lè)美。你看每行代碼的長(zhǎng)度和邏輯都不一樣,如果把代碼長(zhǎng)度、邏輯等屬性和音色、音調(diào)等一一對(duì)應(yīng),那么每個(gè)源文件都可以和一首音樂(lè)對(duì)應(yīng)起來(lái)。去年的時(shí)候也看到過(guò)一篇新聞“艾滋病毒“美好的”一面:創(chuàng)作音樂(lè)”說(shuō)的就是類似的事情:一個(gè)研究生為每一個(gè)單獨(dú)的艾滋病病毒的DNA片段分配最精確的音符和音調(diào),成果就是17段、52分鐘長(zhǎng)的DNA音樂(lè),專輯名就恰如其分地叫作“HIV之聲”(Sound of HIV)。我覺(jué)得這個(gè)想法說(shuō)不定可以應(yīng)用到代碼上面,創(chuàng)作出一個(gè)名為“Song of Code” 的專輯。假設(shè)以后出現(xiàn)了一個(gè)叫做 Music Compiler (簡(jiǎn)稱 mc, 也屬于 gcc 的一部分)的編譯器,可以根據(jù)一定的規(guī)則把代碼文件編譯成音樂(lè),那肯定很好玩:
mc source.c -s happyhacker.mp3 (編譯一首歌,叫做“快樂(lè)的黑客”)
??
這樣一來(lái),hacker 們的樂(lè)趣可就不止是在代碼注釋里面寫笑話或者寫詩(shī)了,他們完全可以在代碼里隱藏一張專輯:在項(xiàng)目正式 release 的時(shí)候,順便也出一張專輯,說(shuō)不定會(huì)很流行。
Architecture Compiler 和 Music Compiler 的出現(xiàn)也可以幫助老板們解決讓人頭疼的招聘問(wèn)題:我不懂技術(shù),但是把你的代碼拿出來(lái),編譯成建筑或者音樂(lè),如果建筑足夠美或者音樂(lè)足夠好聽(tīng),OK,那么你是個(gè)好的程序員,因?yàn)?ldquo;完美的代碼每一行都是完美的,包括注釋中的句號(hào)。”不然,你就露餡啦,IT 圈也沒(méi)那么好混了。
還有,現(xiàn)在我們可以把很久之前的東西數(shù)字化,比如我們掃描圖書把印在紙上的文字變成字節(jié),把圖片掃描進(jìn)電腦。或許我們可以改進(jìn)一下 Architecture Compiler 和 Music Compiler , 讓他們也可以編譯源代碼之外的東西,比如編譯一本書或者一幅畫,那么我很樂(lè)意相信莎士比亞一直都在偷偷創(chuàng)建一個(gè)奇幻的城市,達(dá)芬奇在“蒙娜麗莎的微笑”里面藏了一座宏偉的建筑,而米開(kāi)朗其羅在西斯廷教堂頂上寫了一整部交響樂(lè)。
從這個(gè)層面上講,他們都很擅長(zhǎng)寫代碼,是很好的 Hacker。
it知識(shí)庫(kù):代碼與建筑美、音樂(lè)美,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。