本杰明·富蘭克林會(huì)怎樣學(xué)習(xí)編程?
優(yōu)秀的編程方法是極難教的。編程書籍大抵都是這樣開頭的:“這是X方法的例子,還有下面這個(gè)例子”。教教基礎(chǔ)是容易的,因?yàn)榛A(chǔ)知識(shí)也就那么多。難 就難在,要教明白每種選擇帶來的結(jié)果。一般我們會(huì)建議多寫代碼,慢慢提高水平。這是必要但非充分條件。要想學(xué)的更好,我們還要判斷應(yīng)該寫哪些代碼,以及如 何改善這些代碼。
我們接下來轉(zhuǎn)向與編程緊密相關(guān)的領(lǐng)域——寫作,尋求改善技藝的靈感。從很多方面看,編程就像是寫作。二者的核心關(guān)注點(diǎn),都是以容易溝通的形式表達(dá)自 己的思想。我們會(huì)發(fā)現(xiàn)二者都很困難,因?yàn)槲覀兊乃枷胧歉叨让芗诲e(cuò)的,而文本又是極其地線性化。利用文本,我們有無數(shù)中表達(dá)思想的方法,這使得學(xué)習(xí)寫作的 藝術(shù),以及編程的藝術(shù),變得很困難。
幸運(yùn)地是,本杰明·富蘭克林記錄下了他鍛煉寫作技巧的方法。我們只需要查看Amazon網(wǎng)站上傳記暢銷書單,就會(huì)發(fā)現(xiàn)富蘭克林的寫作水平之高超。數(shù)百年后,他的自傳仍位居暢銷書之列。如果這都證明不了他的寫作能力,我不知道到底還有什么可以證明。
本杰明在少年時(shí)期就找到了練習(xí)的方法,并且一直刻苦地按這種方法練習(xí)寫作。下面是他的自傳中相關(guān)介紹的摘錄。
大約在這時(shí)候,我偶然看到了一本《旁觀者》的零本,是第三冊。在這以前,我從未曾看見過這個(gè)刊物。我買了這本散冊,反復(fù)讀了幾遍,十分中意,我認(rèn)為文章寫得好極了,如果可能的話,我想模仿它的風(fēng)格。
因此我從中選了幾篇文章,簡要地摘錄下了每一句的大意,接著把它們擱置幾天。然后不看原書,用我自己想得起來的合適辭句,把每一個(gè)句子盡量完整地表 達(dá)出來,又湊成整篇的文章,使它表達(dá)得像以前一樣地完整。***,我把我自己寫的《旁觀者》與原文比較,發(fā)現(xiàn)了一些我的錯(cuò)誤,作了修正。
但是我發(fā)現(xiàn)我的詞匯貧乏,或是說我不能很快地想起適當(dāng)?shù)脑~來用。我想,假如我以前沒有放棄寫詩的話,那時(shí)候我的詞匯一定會(huì)豐富得多了,因?yàn)榻?jīng)常不斷 地有機(jī)會(huì)尋找具有同樣意義而有不同長度的詞去適合詩的韻律,或是不同音素的詞去湊韻腳,會(huì)迫使我不斷地搜索具有不同形式的同義詞,這將有助于我記憶這些不 同的詞并使我掌握它們。因此,我把其中的一些故事改寫成了詩,過了一些時(shí)候,當(dāng)我差不多已經(jīng)遺忘了原來的散文的時(shí)候,我又把它們重新還原。有時(shí)候我也把我 摘錄的思想搞亂了,經(jīng)過幾個(gè)星期以后,設(shè)法把它們用***的次序排列起來,然后再把它們寫成完整的句子,組合成文章。這樣做,是為了教我如何整理思想的方法
本杰明·富蘭克林式編程練習(xí)模式
-
找一個(gè)你特別喜歡的程序,閱讀它的代碼。
-
記錄下每個(gè)主要組件的角色、輸入和輸出。
-
記錄下每個(gè)組件之間是如何交互的。
-
重寫這個(gè)程序。
-
把你的代碼與源代碼進(jìn)行比較。
-
記錄下你要在哪方面改進(jìn),并學(xué)習(xí)相應(yīng)的知識(shí)。
不要只是一味地寫程序。通過學(xué)習(xí)偉大的程序,并嘗試模仿這些程序,將會(huì)極大地提升你的能力。
如果你覺得本文介紹的方法有用,請(qǐng)與朋友分享!每一次分享,都是一份關(guān)愛!