Erlang:寫作的歷史

jopen 10年前發布 | 20K 次閱讀 ErLang

  英文原文:Erlang: The Written History

  Erlang 現在 25 歲了。我從最開始就接觸了 Erlang,看著它從一個想法成長為一個擁有大量用戶的、完全成熟的編程語言。

  我寫了第一個 Erlang 編譯器,教了第一門 Erlang 課程,和我的同事合寫了第一本 Erlang 書。早期成功的 Erlang 公司之一是我創辦的,涉及了該語言及其應用程序的各個開發階段。

  在 2007 年,我寫了《Programming Erlang》(官網) ——自從《Concurrent Programming in Erlang》(Prentice Hall, 1993)出版,已經過去 14 年了——我們的用戶正迫切需要一本新書。因此在 2007 年,我咬緊牙關開始寫作。我非常幸運,Dave Thomas 做了我的編輯,他教我很多寫作方面的東東。第一版是相當有野心的,我想描述該語言的每一個地方和主要類庫,還有示例代碼和實際運行著的、真實世界的例子。 因此這本書包含有可運行的代碼,比如 SHOUTcast 服務器,因此你能夠向設備添加音樂,以及一個全文索引系統。

  《Programming Erlang》第一版刺激了一批活動,這本書賣的很好。它是通過 Pragmatic Press Beta 出版過程發布的。這個 beta 出版過程很棒,作者可以從讀者那里很快得到反饋。讀者下載一個未完成的書的、PDF 版,開始閱讀并就文本進行評論。既然這本書本來就是未完成的,他們就可以影響到書的剩余部分。當書的完成度有 70% 的時候,就能以 beta 形式發布了。

  第一天,超過 800 人買了這本書,第二天在書的勘誤頁多了大約 1000 個評論。怎么會有這么多錯誤呢?我的五百頁的書,貌似每頁就有 4 條。這讓我大吃一驚。Dave 和我像奴隸一樣,辛苦地修復了錯誤。盡管我知道當這本書完成的時候,我要花費一個兩周的假期。

  在最初的 PDF 版發布數月之后,最終版準備好了,我們開始發布紙質版。

  一個奇怪的現象發生了——Prags 已經出版了一本 Erlang 書,有傳言說它賣得很好。很快我開始聽到謠言,O’Reilly 正在尋找作者,我的很多朋友被聯系到,詢問他們是否對編寫 Erlang 書有興趣。

  真是奇怪,當你想寫書的時候,你找不到出版商。但是,當一個已證實的出版商想出版關于某個特定話題的一本書的時候,它卻找不到作者。

  下面是 2007 年以后的時間線

  不僅僅 Erlang 得到了關注,像 Haskell 之類的語言需要去競爭,因此 Bryan O’Sullivan, John Goerzen 與 Don Stewart 合著的《Real World Haskell》在 2008 年出版了,Miran Lipovaca 在 2011 年跟著出版了《Learn You a Haskell for Great Good》。

  我的 Erlang 書好像打破了沉默,O’Reilly 跟著的《Erlang Programming》和《Real World Haskell》,鼓舞了 Starch 出版社,《Learn You a Haskell for Great Good》鼓舞了《Learn You Some Erlang for Great Good》,輪子開始轉起來了。

  快進到 2013 年

  Prags 聯系到我,”你的書想補充嗎?“,補充什么?這本 2007 年的書有一些過時了。Erlang 核心變化了一點,但是類庫已經變化了,用戶群有了增長。但是,對于第二版而言,最重要的是當時市場上已經有其它四本書了。

  我在第一版的目標一直是”描述所有“、”記錄沒有被記錄的所有點“。我想要一本覆蓋全面的書,我想要一本同時面向初學者和高級用戶的書。

  現在,當然是不可能的。面向初學者的書有大量的、高級用戶不想看的解釋。面向高級用戶的文字,初學者理解起來有困難,或再糟糕點兒,不可能理解。

  當我想著手第二版時——我想——”我不得不做的所有工作就是掃一遍示例,確保它們運行良好.“我也想過,要去掉一些相當煩人的附錄,去掉一些古怪的章節,增加一個關于類型系統的章節,我是這樣想的。

  結果沒有成為這樣子,我的編輯,曾經給予我幫助的 Susannah Pfalzer,可能了解這一點,只是沒有告訴我。

  這個過程我寫了七個新章節,去掉了一些相當煩人的附錄和舊的章節。

  第二版最大的不同是對于目標群體的重新定位。還記得我說過,第一版目標是高級用戶和初級用戶。現在市場上有四本具備競爭力的書了。Fred Hebert 的書面向初次使用的用戶是非常棒的,帶有美麗的手繪卡通。Francesco and Simons 在 OTP 上做得好,因此我要重新定位這本書,集中在一個小眾群體。

  那么是誰呢?在寫第二版時,我們花了大量時間聚焦在目標用戶上。當前七章準備好的時候,我們給 14 位評論家發送了這些章節。他們當中有 3 個高級用戶——精通 Erlang 的程序員,他們對 Erlang 不了解的東西應該刻在了茶葉后面。我們也找了 4 個完全的初學者——會用 Java 編程但是不懂 Erlang,剩下的全是中等用戶:他們已經做了一年 Erlang,不過仍然在學習中。我們把這本書扔給了他們,看看會有什么效果。

  最吃驚的是:一些真正的初學者不理解我們寫的東西,某些想法只是”太陌生“了。我很驚奇,天呀!當你 25 年來一直與 Erlang 生活、呼吸、做夢、睡覺時,你知道 Erlang 的家底,你認為這是理所當然的。

  因此我丟棄了這些家伙不能理解的文字,重新開始。我的一個評論者(一個完全的初學者)有問題,我重新寫這些文字,他們再讀,他們仍然不能理 解。”這都是什么人呀,白癡或者其它?我正在拼命解釋所有東西而他們仍然不能理解!“我(再次)丟棄了重寫的這些文字,給他們發送了第三版。

  好了!他們理解了!快樂的日子再次到來了!有時候新想法只是”太陌生“而不能領會。但是到目前為止我對于我要增加多少解釋已經了然于胸:大約比我想的多出 30%,畢竟,如果你寫了一本書,你不想讓買了這些書的人因為它太難而讀不下去。

  我也從 Bruce Tate 那里得到了建議——Bruce 寫了《10 分鐘學習 600 種語言》(在 Seven Languages in Seven Weeks)。如果你給 Bruce 提供啤酒,友好地詢問,那么他會是一個不錯的人,帶有刻薄的德克薩斯口音。Bruce 可以在 10 秒內給任何人教任何語言,因此他是評論你的書的、不錯的人選。

  那些高級用戶反映如何呢?我的書長了 30%,針對轉換那些已經看到希望、想放棄邪路的 Java 程序員,給他們帶來 Erlang 編程的樂趣,但是高級用戶呢?

  拋棄了高級用戶——他們甚至不會買這本書,因為他們無論如何都懂的。因此我扼殺了我的孩子,放棄了很多沒有人曾看到過的高級資料。我的目標是把這些忽略的高級材料放在一個網站上。

  我還從 Francesco Cesarini 那里得到了一個不錯的提醒:”他們喜歡練習題。“因此我差不多在每章的后面增加了練習題。

  因此沒有理由不去抓住一個 Erlang 編程的課程:每章后面有練習題!

                    <span id="shareA4" class="fl">                            
                        </span>                 </div>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!