《七週七語言:理解多種程式設計範型》書評整理
任何一個想在程式開發這條路上走遠點的人都應當多瞭解幾門語言,多接觸一些程式設計泛型,才能開啟眼界,提高自己。 國內絕大多數程式設計師可能就知道個OOP,藉著javascript的興起可能有小部分人能夠對原型有所瞭解,至於函數語言程式設計之類的有個明確概念的就很少了,像prolog這樣的“奇特”語言能有所瞭解有所接觸的可說是萬中無一。 《七週七語言》這本書最大的價值在於讓你知道:“原來世界上還有這樣一種語言,是基於這樣的概念的啊”(商品評價)。這本書在去年6月份出版上市,獲得了2012最佳十大引進版圖書的稱號,在京東和噹噹,很多妹子買給了自己的程式設計師老公,成了床前必讀,是不是有些意思?
身為程式設計師的你,這本書不容錯過,如果你還沒讀,建議馬上列選入你今年的讀書計劃,如果你已經讀了,我想你應該細細琢磨回味一下,把你從中學到的東西分享給大家。如果你現在還沒時間分享,那麼先來看看其他人對這本書的領悟!提前祝你閱讀愉快! 另外,這本書的電子版已在多看上架哦!
1.學語言其實不是這麼學
感謝圖靈給了我試讀這本書的機會,也抱歉這本書評一直拖到現在,過程遠遠超過了七週,可是我覺得這本書也許叫做七天七語言來的更合適,也更有噱頭。
我是一個語言愛好者,我喜歡看各種冷門語言,從中學習他的語法精髓,曼妙之處,並且試著去理解它的設計和程式設計思想。在讀這本書之前,對一些語言就有一些瞭解,例如本書的Ruby ,Io , Erlang和Scala,所以其實書看的還是很快的。大概一個語言一兩天就看完了。書的翻譯很不錯,基本沒有遇到什麼理解的障礙。
但是在我看來本書的內容並非足夠恰當,其實大部分人工作只能用到一兩門語言,大腦也沒辦法(至少從我的自身情況來說是這樣的)儲存過多的語言細節,但是本書還是稍微的過多糾纏於語法細節,而在程式設計思想上鮮有提及,並且缺乏語言之間的橫向對比,只是淺顯地說了下該語言的優點和缺點,但是這樣簡單優點和缺點的理由是不足以為讀者作出業務場景語言選擇的理由的。
但是無論如何,我認為作為一個IT從業者,僅僅把思想上侷限在同一個語言上是一定會受到發展瓶頸的,這本七週七語言還是推薦給所有程式設計師來讀....
作者:飛林沙
2.計算機愛好者不應該錯過
首先,看了此書的英文版之後又看了中文版,翻譯應該算值得信賴。
Jolt的獎項也是對這本書的肯定。而最近這本書火起來,中文版也功不可沒。
眾所周知,每一種語言或複雜或簡單,使用者想要使用到一定境界,都不是短短一週可以達成的。所以這本書從根本上就不是像副標題中描述的A Pragmatic Guide to Learning Programming Languages。這本書更像是對“非主流”的語言界的一次全面概括。作者精挑細選的7門語言基本囊括了“非主流”界的各種正規化,也不乏“非主流”界中的主流,名門望族。細緻的描述了每一個語言的特性,以及多種語言之間的對比。對於每一個喜歡language,想要了解language的計算機愛好者都不應該錯過。有志想去獨立的設計一個language的愛好者當然更不應該錯過。
作者:vincent
3.Good Book
如果你想花很少的時間,只是去了解這麼語言,那麼你錯了。你應該去找一些簡明教程。
本書為你鋪就的學習途徑,較之網上那些20分鐘教程可謂略勝一籌。我知道,你我同為善用Google 之人,隨便搜尋書中某門語言的簡明教程自是不在話下。不過本書的高明之處在於,它會帶你踏上快速成長的互動之旅。你每週都會遇到一些小型的程式設計挑戰和一個實戰專案。解決它們 雖非易事,但這既能增長你的見識,還可讓你體驗程式設計之樂。
如果你閱讀本書時不做任何習題,那不過是對語法有了個粗淺認識。如果你在嘗試獨立解答習題之前,先去網上搜尋答案,那也一樣意味著不及格。你首先要有試著解答習題的主觀願望,同時也要充分認識到,有一小部分習題可能超出了你的能力範圍。要知道,學會語法永遠比學思考簡單。
作者:Steven
4.這書真是一本非常好的書
雖然這本書可真夠貴的,中文版不到300頁,碼洋近60元。但是這書是我見過的計算機教程中資訊密度最高的一本。作者很淡定的說,你會google我也會google,沒必要寫一些你隨便搜搜就能找到的東西。於是就有這種三十頁就包括一門語言的書。而且每個語言又分三段,大概就是語法入門,高階特性,高階特性與實踐結合。完全沒有安裝指南,做得好!很多語言書的安裝指南過時又錯誤百出(這不完全是作者的錯,很多書引進之後,對應的軟體版本已經過時了),最後還是靠google到的文件解決問題,索性沒有也是一件好事。如果讀者靠裡面的語言吃飯,就完全沒有必要讀這書。但是如果沒接觸過,讀完這書裡一門語言之後就能比讀完這語言的其他教程多知道一點東西,此可謂多元化的犒賞。
這書類似於我母校某老師宣稱的一種理論,計算機教學應該不走尋常路,應該去模仿學自行車的過程,把人扶上車座,然後對準車屁股一腳踹上去。然後能學會的人自然搖搖擺擺的就上路了。這書裡面第一天大概類似於扶人上車座,然後第二三天就是猛踹的過程。
裡面反覆提到DSL,可見DSL畢竟是解決大多數實際問題的大勢所趨。
此外這書很有趣,把每個語言都用經典電影裡的角色做比,讓人很輕鬆的記住每種語言的特點,有些電影我看過,有的還沒看。本來打算找來一一看過,但是發現最後一門語言對應的是Star Trek,就打消了這個念頭。
作者:肥小滿
5.推薦
書中的每一種語言都有各自的特色,每一中語言代表著一種程式設計正規化。知曉這些語言,瞭解和理解這些語言所蘊含的知識,對於軟體開發者而言是非常有必要的。這會開闊他們的眼界、開拓他們的思維,讓他們在實際工作中更容易和更願意去探索解決問題的不同方法。我推薦每一個軟體開發人員都來讀一讀這本書,尤其是從業三年以上的開發人員。
作者:特價蘿蔔
6.讀《七週七語言》有感
前一段時間看完了《七週七語言》,這本書的書寫風格有點像教材,會要求你回家做作業。
但說實在的,不做作業真的無法理解裡面的全部內容。
或許抽空我也應該再看一遍並且把裡面的作業做一遍。
之前對 C# 最熟悉,所以難免會把裡面的各種程式設計模型和 C# 進行比較了。
約束—邏輯程式設計(Prolog)
Prolog出身於一個專用於約束-邏輯程式設計的語言家族。我們用Prolog編寫各種應用,全是為 瞭解決一小類問題。然而,解決這一小類問題獲得的成果卻蔚為壯觀。簡單地說,這類問題為某 個已知問題域定義一些邏輯約束,然後就可以用Prolog求出這類問題的解。
當我看到 Prolog 這門語言的時候,實在是讓我眼前一亮!簡單的來說, Prolog 就是用來做規則引擎的。
前一段時間,部門的另一個專案組在 C# 中利用 Ruby 實現了規則引擎。本來對這塊還不是很理解,但是看完 Prolog 的介紹後,對規則引擎的基本概念瞭解得更深入了。
還記得高中的時候想:老師是怎麼排課表的呢?能不能用一個演算法來排一個課表?
現在回想起來,如果老師們有 Prolog,那這一切是不是就太簡單了?
用 Prolog 程式設計,其實不是在程式設計,而是告訴程式一條條規則,也就是邏輯約束。
Prolog 就會在內部利用相關的演算法進行高效的運算,然後告訴你滿足條件的結果。
或許以後再遇到這樣的問題,就不要去編寫複雜的演算法了,交給規則引擎吧~
函數語言程式設計(Scala、Erlang、Clojure、Haskell)
你已經瞭解到,函數語言程式設計語言通常比面嚮物件語言有更強的表達能力。用它們寫的程式碼顯 得比面嚮物件語言更短小精悍,因為它們用來程式設計的手段要豐富得多。
看到各種函數語言程式設計語言,和 C# 比較後發現,C# 真的很好地把函數語言程式設計融入了自身。Java 在這塊差距就很大了,Java 8 中才剛剛引入了 lambda 表示式…
書中的 Scala 正式為了在 Java 中實現函數語言程式設計而產生的,它執行在 JVM 之上,可以直接使用現有的 Java 資源。
最後不得不佩服 C#,在物件導向的強型別程式語言上,優雅地實現了函數語言程式設計。
更佩服的是,C# 在函數語言程式設計的基礎上,把它擴充套件為了 Linq,開發者可以使用同樣的一套語法,實現兩種功能(便捷地處理記憶體中的資料 & 便捷地處理遠端資料)。
兩種功能雖然在語法上完全一樣,但在底層卻截然不同(一個是 lambda 表示式,一個是表示式樹)。
可惜 C# 出自微軟之手,是一門商業化地語言,在開源社群不受待見。但如果拋開偏見,作者也應該把 C# 寫入這本書~
併發
併發是物件導向程式語言永遠的痛。函式和資料捆綁在一起了,所以呼叫函式的時候就必須額外小心。
而在書中介紹的許多語言都是變數不可變、函式同樣的輸入就有同樣的輸出。這些規矩讓這些語言在併發操作的時候變得格外簡單了。
當然,它們也會有自己的侷限性…
微軟在 .net 的幾個最新版本中,不斷的改善著併發體驗。書中介紹了幾種併發模型,會讓你有眼前一亮的感覺,但是目前我也沒吃透,還需多讀才能深刻地理解。
想想以前,一提到併發只知道 lock,真是井底之蛙啊!
範型演進之路
如果你下定決心,以後多用函式式語言來程式設計,那麼有幾條路可供你選擇,你既可以徹底與 OOP決裂,也可以選擇較為溫和的漸進策略。
我們學這七門語言花了不少心力,但也見識到了叱吒風雲四十餘載的幾門語言,以及多種編 程範型。但願你現在已經對程式語言的演化有了一個正確認識。你可以看到三條截然不同的範型 演進之路。
在沒有閉包、沒有 lambda 地 Java 中,某些時候的開發效率真的是低了好多好多。
而 C# 在這條路上走得還是蠻快的。
2.0 泛型;3.0 lambda+擴充套件方法;3.5 Linq…
三大版本,幾年的努力,最終對函數語言程式設計有了一套優雅的實現方案。
4.0 並行;4.5 async+await 改善並行編寫方式…
希望 C# 最終能有一套優雅的並行模型!
Java 君在這塊你要加油了!
贊助
如果你讀了我的文章,覺得有幫助,歡迎向我支付一小筆金錢作為回報。
希望我能早日用上Macbook Pro,iPhone5,the new iPad。
贊助地址:Dozer Zone
7.書看完了,學習才剛開始
這不是一本教我每種語言寫一個Hellow World的書,雖然只有不到三百頁,還是盡力展現了每種語言的特質。
因為只有很短的篇幅,又要介紹很酷的語言特性,這本書採用和不同的敘述方法,基本不會介紹語法的全貌,而是通過自己語言的特性和相鄰語言的關聯性,來直擊要害。
我感覺這種方法非常有趣,但同時對作者、譯者和讀者都是種挑戰,當然,幾種語言互相聯絡其實也有助於理解一些概念。不過,我覺得如果讀者有幾種語言的一些初步瞭解,或者對函數語言程式設計有點了解的話,還是會容易讀一些,否則,曲線就比較陡了。
這本書的另一個要點是,書看完了,學習才剛開始。這本書向讀者展示了語言最酷的地方,讓讀者決定是不是喜歡或需要這門語言,但要想真正掌握一種語言,必須要進一步學習很多知識 。
8.微博評論:
一個老IT編輯:今天仔細研究了下《七週七語言》這本書,發現本書真是市場空白,但同時也有一定的高度,不是一般讀者能學好的,必須對語言研究到了一定高度的人才能看。又看了看各個網站對它的點評,我想可能它銷售上沒有一本普通C語言入門書銷量高,但實際上它將Coder帶入一個更高的領域,讓Coder的視野更寬。
更多好文:
相關文章
- 第七章——程式設計語言基礎知識程式設計
- 第七次高階程式語言設計作業
- Go 語言程式設計規範Go程式設計
- 七種常見的陣列排序演算法整理(C語言版本)陣列排序演算法C語言
- 2021 年 iOS 應用程式開發七種最佳語言iOS
- Java語言學習報告第七週Java
- 重磅!七國程式設計集團決定製裁Go語言!程式設計Go
- 《Go 語言程式設計》讀書筆記 (七) Goroutine 與系統執行緒的區別Go程式設計筆記執行緒
- 高階語言程式設計課程第七次作業程式設計
- 高階語言程式設計第七次個人作業程式設計
- 20165234 《Java程式設計》第七週學習總結Java程式設計
- 程式設計師最全必讀書單(包含各種語言)程式設計師
- 高階語言程式設計第七次個人作業(102400106劉鑫語)程式設計
- 23種設計模式(七)-狀態設計模式設計模式
- 高階程式語言設計課程第七次個人作業
- 高階程式語言設計第七次作業鄒毅軒102400136
- 102400133詹志瑜高階語言程式設計第七次作業程式設計
- 高階語言程式設計課程第七次個人作業程式設計
- Java中的函數語言程式設計(七)流Stream的Map-Reduce操作Java函數程式設計
- 深入理解函數語言程式設計函數程式設計
- Java中的七種函式程式設計技術 - foojayJava函式程式設計
- 讀書筆記:組合語言(王爽)實驗七筆記組合語言
- C語言程式設計規範——名稱縮寫C語言程式設計
- 《計算機基礎與程式設計》第七週學習總結計算機程式設計
- GO語言泛型程式設計實踐Go泛型程式設計
- 讀書整理 - 理解JavaScript設計模式(一)JavaScript設計模式
- 我對函數語言程式設計的理解函數程式設計
- 你真的理解函數語言程式設計嗎?函數程式設計
- Js中函數語言程式設計的理解JS函數程式設計
- SegmentFault 七週年丨寄語徵集
- 物件導向程式設計-java語言 第二週程式設計題物件程式設計Java
- 人人都是設計師:主流七種平面版式
- 程式設計入門之學哪種程式語言?程式設計
- 《Go 語言程式設計》讀書筆記(十一)底層程式設計Go程式設計筆記
- C程式設計語言讀書筆記:型別運算子與表示式C程式程式設計筆記型別
- 雙相超程式設計:一種新語言設計方法程式設計
- 《Go 語言程式設計》讀書筆記 (一)基礎型別和複合型別Go程式設計筆記型別
- 第七週
- C語言如何實現泛型程式設計?C語言泛型程式設計