魏忠
今天,先來說一位詩人的故事。1815年,著名詩人拜倫與妻子安娜·密爾班克生下了女兒埃達并離婚。如今所有介紹詩人拜倫這段婚姻的文章都說“這是一個詩人一生最大的錯誤,安娜是一個心胸狹隘、理智、完全不能理解拜倫的漂亮貴族子弟”,也正因為這次離婚,拜倫遭到當時貴族們瘋狂的詆毀。當時,拜倫需要錢和上流社會,因此與安娜結婚。安娜理性,還是個數(shù)學家。離婚后,她獨自撫養(yǎng)女兒埃達長大,埃達后來還成為一位著名的伯爵夫人。埃達的數(shù)學也很了得,她繼承了媽媽的漂亮與理性,以及爸爸的文學素養(yǎng)與狂熱。20歲的埃達與父親一樣進入了劍橋大學學習,偷偷喜歡上了自己的數(shù)學老師巴貝奇,且理性地把喜歡埋在心里。
巴貝奇是什么人呢?劍橋大學最著名的盧卡斯數(shù)學教授席位只有牛頓和少數(shù)最著名的教授能夠得到,而巴貝奇24歲就得到了。可惜的是,巴貝奇后來沒有在數(shù)學方面繼續(xù)發(fā)展。當年工業(yè)革命如火如荼,大量計算應運而生,法國人發(fā)明了數(shù)學計算量表,而巴貝奇和同事打開第一頁錯誤,打開第二頁又是錯誤,最終無法忍受,決定自己造一臺機器來自動計算。于是,他在英國政府的資助下開始制造計算差分機。但大家請注意,今天所有的計算機領域的人都不認為這是世界上第一臺計算機,也許是因為巴貝斯根本沒有成功過。
10年以后,1842年,巴貝奇的世界上第一臺差分分析儀機械設備進入到了關鍵時候,但是資金出現(xiàn)了問題。這時埃達出現(xiàn)了,埃達不僅資助巴貝奇,還親自將他的理論算法(如《論用符號表示機器動作的方法》)編寫注釋,并且編寫成機器能夠理解和轉換成指代的各種程序:三角函數(shù)、微積分等。幾年下來,巴貝奇的成績顯著,但是埃達的私房錢已經(jīng)花完了。埃達就開始偷偷變賣自己的首飾盒、丈夫的古董,心疼她的媽媽就偷偷地再買回來。剛剛賣完首飾的埃達又開始投入到程序的編制過程中,程序員是勞累的,不久她積勞成疾,香消玉殞。此后,巴貝奇在差分機的研究上再也沒有任何進展。
雖然世界上第一臺計算機受限于硬件技術沒有研制成功,但世界上第一個軟件工程師誕生了,她就是埃達。1953年,埃達的手稿問世,舉世震驚。1981年,人們發(fā)現(xiàn)這個程序幾乎不能修改:它像拜倫一樣簡練優(yōu)美,像拜倫夫人一樣理智而充滿邏輯。人們?yōu)榘__命名了一種語言——ADA。
代碼來源于文學,是否會回歸于文學呢?
回過頭來,我們再看巴貝奇。巴貝奇在埃達去世后繼續(xù)研究了20年,幾乎沒有進展。但是,巴貝奇對機器的研究已深入到工廠和工業(yè)效率中,既然機械的運行能夠代替數(shù)學和用代碼來表現(xiàn),那么工業(yè)的效率和工人的效率也應該能夠用數(shù)學來計算和表示,進而提高效率。巴貝奇提出管理的科學化以及數(shù)學計算的那一年,著名科學管理學派創(chuàng)始人泰羅剛剛出生。沒有了埃達的幫助,巴貝奇的理論在管理上也沒有成功實現(xiàn)代碼化,又與科學管理擦肩而過。
事實再一次證明,文學不好、不會編程序的科學家也不能成為好的經(jīng)濟學家。
時間到了清乾隆年間,中國的文學發(fā)展已經(jīng)相當成熟,早期的歌、賦、散文,到唐詩、宋詞、元曲,再到明清之際的小說,到曹雪芹所在的時代已經(jīng)成熟。流傳百年的《金瓶梅》雖然不知道作者是誰,但寫人物從簡單的臉譜化到豐富的網(wǎng)絡化已經(jīng)成型。有人說曹雪芹的《紅樓夢》完全是一部潔凈版的《金瓶梅》,一點也不為過。曹雪芹將《金瓶梅》中的潘金蓮拆分為更加細分的一個人的兩面:林黛玉和薛寶釵,又將林黛玉拆分為上下兩層的林黛玉、晴雯,接著又將晴雯拆為青年的晴雯和老年的趙姨娘,其編寫程序的套路完全是今天程序員參考開源軟件并逐漸開發(fā)自己代碼的過程。更為重要的是,《紅樓夢》中曹雪芹引用自己過去文章的做法(如飽受猜測的“秦可卿與天香樓”可能就是原來另一部小說改寫的部分),以及引用詩歌、散文、戲曲、美學、食物、中藥的部分,幾乎完全和今天的Python程序ETL模式完全一樣。
軟件和代碼也是,直到Python的出現(xiàn),直到“王者榮耀”的閃亮登場。
2017年9月,高盛發(fā)布了對數(shù)千名青年人的調查,Python因72%的年輕人的喜歡而成為最熱門的計算機語言,人們驚呼:“計算機程序,即將超越漢語成為世界上使用最多的一門語言?!边@個預測一點都不過分,全世界60億人,只要有三分之一的人會編程,那么不管是Python還是其他計算機熱門語言,它一定會超過漢語成為世界第一語言,這一天其實并不會很遠。
1991年12月25日的圣誕節(jié),百無聊賴的荷蘭工程師嫌ABC軟件不夠開放,便開始開發(fā)一種腳本語言,使其將不同程序的結果連接在一起,于是Python被開發(fā)出來。Python作為一種“膠水”語言,特別擅長將不同庫的程序連接起來,因此,它具有所有程序種類最齊全的庫,并且全世界志愿者還在不斷地形成新的庫。在數(shù)據(jù)倉庫中有一個技術叫ETL,是英文Extract-Transform-Load的縮寫,是用來描述將數(shù)據(jù)從來源端經(jīng)過抽?。╡xtract)、轉換(transform)、加載(load)至目的端的過程。ETL一詞常用在數(shù)據(jù)倉庫,Python作為膠水語言的優(yōu)越性使其成為數(shù)據(jù)科學家和人工智能專家最常用的工具,他們利用Python調用各種各樣的程序和運行結果,這比起曹雪芹調用《金瓶梅》和自己的其他文章更加方便。
代碼是不是文學,有很大的爭議。高德納是結構化編程的創(chuàng)始人,后來他提出“文學編程”概念:不同于傳統(tǒng)的由計算機強加的編寫程序的方式和順序,讓程序員用他們自己思維內在的邏輯和流程所要求的順序開發(fā)程序、自由地表達邏輯,用人類日常使用的語言寫出來,就好像一篇文章一樣,文章里包括用來隱藏抽象的宏和傳統(tǒng)的源代碼。文學編程工具用來從文學源文件中獲得兩種表達方式,一種用于計算機進一步的編譯和執(zhí)行,稱作“繞出”(tangled);一種用于格式化文檔,稱作從文學源代碼中“織出”(woven)。雖然第一代文學編程工具特定于計算機語言,但后來的工具可以不依賴具體語言,并且存在于比編程語言更高的層次中。
如果編程成為一種文學,那么軟件程序員應該多讀別人的代碼才對,就像曹雪芹讀《金瓶梅》和唐詩宋詞一樣。但是,事實并非如此。在一項調查中顯示,程序員以不讀他人代碼為主流,甚至最好的程序員也不讀別人的代碼,這和我們印象中的好的作家要讀大量經(jīng)典文學作品形成巨大的反差。問題出在哪里呢?endprint
問題首先出在目前的代碼距離自然語言還有很大差距,更重要的是,由于越來越快的軟件發(fā)展速度和開源軟件熱潮,編寫代碼這樣的基本功處于數(shù)理邏輯和展現(xiàn)之間,已經(jīng)被越來越方便的膠水語言代替,并沒有太多的技巧,而最具有技巧的數(shù)理邏輯,已經(jīng)分離成為和編碼并沒有太大關系的數(shù)學和算法了。從這個角度上講,發(fā)展越來越快的軟件業(yè)對代碼的倚重越來越弱,其主要倚重的是代碼的高級形式:數(shù)理邏輯、膠水語言、展現(xiàn)形式和結構設計、應用設計。就像曹雪芹的《紅樓夢》并不需要曹雪芹唐詩寫得超過李白、宋詞超過蘇東坡,而需要的是其在《紅樓夢》中對人性的觀察和社會的深刻認識。從這點上來講,一個好的文學家并不比文筆,而是有更高的比較形式。就像小說之后的文學形式電影、電視一樣,雖然基礎還是文學和文字,但是對文學家的要求卻越來越遠離文人,更偏向于綜合的文學素養(yǎng)和社會素養(yǎng)。
2017年,“王者榮耀”這款騰訊出品的游戲收入已經(jīng)超過480億,超過了中國電影當年的全部收入。這個標志性的節(jié)點,我們雖不能說“王者榮耀”已經(jīng)成為文學,但是作為最主流的表現(xiàn)和媒體,身臨其境的玩家們已經(jīng)遠離影視是一個不爭的事實,而軟件業(yè)整合影視,更加能夠表現(xiàn)現(xiàn)實、超現(xiàn)實已經(jīng)是既定的事實。我不能簡單地稱它只是一款游戲,它應是一種以軟件代碼為基礎的更加新的表現(xiàn)形式,一種新的文學。這與小說取代和整合詩詞歌賦一樣,代碼一定會整合影視。
代碼成為文學并不是沒有跡象。當某一個新的文學形式出現(xiàn)的時候,最早體現(xiàn)的是它們自己的工具性,就像歌是為了唱、賦是為了吟、詞是為了填、小說是為了說故事、戲曲是為了娛樂、影視是為了真實一樣。當科學家退去的時候,工程師接任成為了匠心獨具的作品的創(chuàng)造者,當工匠退去,外行都能做好的東西的時候,技術外行所帶來的社會學意義的表現(xiàn)往往成為了文學。文學即表現(xiàn),喬布斯是學藝術的,表現(xiàn)的手機不僅僅是打電話;馬云是做生意的,表現(xiàn)的網(wǎng)站不僅僅是信息傳送;王堅是心理學教授,一句代碼也不會寫卻成為阿里的技術總監(jiān)。這個時候,難道你還認為阿里影業(yè)、騰訊影業(yè)他們拍的是電影嗎?這種團隊里充滿了文學作家的新的表現(xiàn)形式,不是文學,又是什么?
代碼成為文學,文字仍是最精煉的表達,但文字作為基礎的表達,相比代碼文字,確實是蹩腳的使者。曹雪芹再妙筆生花,“一千個人中有一千個林黛玉、有一千個賈寶玉”,但若今天我們寫一行代碼“女子眉纖,額下現(xiàn)一彎新月;男兒氣壯,胸中吐萬丈長虹”,一千個讀者會有根據(jù)自己閱歷的一千個林黛玉和賈寶玉的Python代碼被“import”,那么,作家還是那種當法嗎?
文字寫到這時候,我恰好看到清華附小的11歲孩子在用大數(shù)據(jù)研究蘇東坡,看孩子們用20世紀成年人的研究方法和研究報告展示的所謂創(chuàng)新教育,我一時不知說些什么。如果讓我教這些孩子,還是研究蘇東坡,我會讓孩子們用一塊樹莓派接上網(wǎng),教孩子們導入Python程序,學習網(wǎng)絡上爬蟲找蘇東坡的資料,讓孩子們用不同的爬蟲程序(普及知識,并不需要孩子們自己編寫)去爬各種蘇東坡的資料,然后讓孩子們用自購的、裝在開源硬件上的顯示屏顯示故事,用Tableau和數(shù)據(jù)講故事,講述自己爬到的蘇東坡是什么樣子的,什么是真的,什么是假的,什么是裝的。就像12歲的蘇東坡和弟弟,孩子們喜歡的都是一樣的,研究當時最好玩的:蘇東坡和弟弟玩抓老鼠并且寫出了文章,而今天的孩子就應該玩抓爬蟲,并用孩子們喜歡的方式,用數(shù)據(jù)講故事。
未來的文學,不僅僅是語文老師能教,雖然文字和語文依然很重要。代碼已經(jīng)成為文學,語文課還能教出文學嗎?endprint