
在公司,敲代碼,啪啪啪;回到家,寫文章,啪啪啪。忽然發(fā)現(xiàn),編程與寫作,不只聲音一樣,不少方面都挺像的,不信你看。
1.創(chuàng)作目的
編程和寫作這兩種創(chuàng)作,本質(zhì)上都是一種與外部世界的溝通。
寫作是給讀者的,根據(jù)寫作文體,讀者群體是不同的,也可以說根據(jù)不同的讀者,使用不同的寫法。小說寫給喜歡讀故事的人,書信一對一寫給私密交流的人,日記寫給自己。但不管讀者是誰,寫作大致都要清晰明了,溝通無歧義。
程序是寫給機器的。不同的機器,程序的形式也不盡相同。手機上是APP,Windows系統(tǒng)上是exe,但程序的目的是與機器充分溝通,盡可能利用其資源,快速高效運行。
這兩種溝通方式在某種程度上都十分高效,可復(fù)制性特別強。一篇優(yōu)秀文章寫好后,可不限時處處流傳,具備與無數(shù)讀者溝通的潛力,比如莫言的小說。一個優(yōu)秀程序完成后,可處處部署,具備與無數(shù)機器交互的潛力,比如微軟的Office。
2.學(xué)習(xí)歷程
寫作需要掌握文字。我們學(xué)習(xí)語文,從識字開始,學(xué)習(xí)成語、造句,學(xué)習(xí)文章結(jié)構(gòu)。當(dāng)我們剛開始寫作文時,特別注重文章的格式,注意辭藻的華麗。慢慢地,將寫作轉(zhuǎn)化為了一種和人溝通的方式,淡化了實現(xiàn)的細節(jié),不再斤斤計較一個成語是否最好?,F(xiàn)在,我們點評戰(zhàn)友文章,大多數(shù)情況下不會說某某個詞語十分傳神,而是說從文章里讀到了什么思想。
編程需要掌握語言。我們學(xué)習(xí)某個語言,從基本數(shù)據(jù)類型開始,學(xué)習(xí)流程控制、運算規(guī)則,學(xué)習(xí)函數(shù)結(jié)構(gòu)。寫第一個程序“Hello world!”,緊張地對了一遍又一遍。慢慢地,將編程轉(zhuǎn)化為了與機器交互的方式,不再執(zhí)著于一行代碼的實現(xiàn)是否最優(yōu)。因為我們知道,程序運行在手機、電腦中,是在又快又好地實現(xiàn)各種功能,機器不會贊揚一行代碼的巧妙。
3.制作步驟
寫作雖然有時候自稱碼字,但總是碼字的肯定不是作家,而是打字員。實際上,碼字只是寫作的一個實現(xiàn)階段。動筆的很久之前,我們就在構(gòu)思應(yīng)該寫一個什么樣的主題,就在思考用一個什么樣的文章結(jié)構(gòu),就在盤算著如何吸引更多人的注意力。碼字只是想法的一個輸出。好文章是改出來的,初稿完成后,還需要三番五次的修改,才趨于完善。
編程的人雖然自稱碼農(nóng),但只會敲代碼的肯定不是一個優(yōu)秀程序員。實際上,編碼只是編程的一個實現(xiàn)階段。動手寫代碼很久之前,我們就在追蹤用戶的需求,就在設(shè)計程序的框架結(jié)構(gòu),就在比較不同的設(shè)計模式。編碼只是所有設(shè)計的一個輸出。程序?qū)懗鰜砗缶褪锹L的調(diào)試,如同文章的修改。幾乎沒有一個程序是一次就成功運行的。不斷Debug,才趨于穩(wěn)定。
有人說,編程是寫作的一個子集,從廣義上來說是對的。一個條理清晰、排版優(yōu)美的寫作者去編程,大抵是不會太差的。