[譯]組合軟體:書

zoomdong發表於2020-04-04

組合軟體:書

Smoke Art Cubes to Smoke — MattysFlicks — (CC BY 2.0)

注意: 這是“組合軟體”系列叢書的一部分,它最初以一個部落格文章系列的形式出現在這裡。它從頭到尾地包含了 JavaScript(ES6+)中的函數語言程式設計和組合軟體技術。“組合軟體”同樣也有印刷版本

“組合軟體”是一個熱門的部落格文章系列,介紹了 JavaScript 中的函數語言程式設計和軟體組合,現在是 Leanpub 上最暢銷的書。也有印刷版本

2017 年 2 月 8 日,我開始寫一篇關於函數語言程式設計的部落格文章。“跌宕起伏的函數語言程式設計” 作為《軟體組合》系列的介紹文章。當我開始寫作的時候,我並不知道它會吸引超過 10 萬的讀者,也不知道接下來的文章會有超過 100 萬的總閱讀量,更不知道它能夠出版,並在釋出的一週內躍升到 Leanpub 暢銷書排行榜。

我衷心感謝 JS Cheerleader,她使這本書在很多方面變得更好。如果你覺得這些文章是易於閱讀的,那是因為她仔細地校驗了每一頁,並在每一步都提供了深刻的反饋和鼓勵。沒有她的幫助,你現在就不會讀到這些文章。

感謝部落格的讀者,他們的熱情支援幫助我們把這個小小的部落格文章系列變成了一個吸引了數百萬讀者的現象級文章系列,併為我們提供了把它變成一本書的動力。

感謝電腦科學領域中為我們鋪平了道路的傳奇人物們。

“如果說我看得更遠,那是因為我站在巨人的肩膀上。” —— 艾薩克·牛頓爵士

組合是所有的軟體開發方式:將複雜的問題分解成更小的部分,然後將這些更小的解決方案組合在一起,組成了應用程式。

但是我在面試軟體開發工作的面試者時注意到,幾乎沒有人能描述軟體上下文中的組合。當我在面試的時候問 “什麼是函式組合?” 或者 “什麼是物件組合?”,得到的卻是支支吾吾的或者沒有任何實質的內容的回答。

怎麼會這樣呢?99% 的專業開發人員 —— 有些擁有 10 年以上的軟體開發經驗 —— 怎麼可能不知道軟體工程中組合的兩種最基礎形式的定義或例子呢?每個人每天都在構建軟體的過程中組合函式和物件,那麼怎麼會有那麼多人不理解這些技術的基本原理呢?

事實上,組合根本不是一門人們關注、教得好、學得好的學科。我突然想到,也許這就是為什麼過度複雜化是軟體開發人員每天犯的最大錯誤。當你不知道如何把樂高積木拼在一起時,你可能會弄壞膠帶和膠水,然後變得煩躁......對於軟體開發來說,你也會損害軟體、你的隊友和使用者。

你無法擺脫組合軟體 —— 軟體就是這樣組合在一起的。但如果你不認真組合軟體的話,你會做得很差,浪費大量的時間和金錢,造成漏洞,甚至導致嚴重的人類安全問題。我寫了這個系列和這本書來改變這一點。

部落格文章的麻煩在於它們從來沒有官方索引。歡迎使用“組合軟體:部落格文章”的官方部落格文章索引。


**Eric Elliott 是一名分散式系統專家,並且是 “組合軟體”“編寫 JavaScript 程式”這兩本書的作者。作為 DevAnywhere.io的聯合創始人,他教開發人員遠端工作和實現工作以及生活平衡所需的技能。他建立了加密專案的開發團隊,併為他們提供建議。他還在軟體體驗上為 Adobe 系統、Zumba Fitness、華爾街日報、ESPN、BBC 以及包括 Usher、Frank Ocean、Metallica 等在內的頂級唱片藝術家做出了貢獻。**。

他和世界上最漂亮的女人一起享受著遠端(工作)的生活方式。

如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章