讀《七週七語言》,感悟其魂
Author:zfive5(zhaozidong)
Email:zfive5@163.com
前些日子看《七週七語言:理解多種程式設計範型》,突然有些衝動要說它們中間的-魂,魂是它們的原動力。
- 過程結構語言
過程結構語言,更多是在描述計算機怎樣去做,把我們的邏輯轉化成JMP,MOV,CMP這些計算機最基本的元素,當它們變得龐大的時候越發感覺組織的困難。因為組織沒有規則,當從A專案切到B專案的時候,彷彿從天上掉到地下,這樣還不夠,說不定直接掉進地獄。當自己可以駕馭的時候,最直接是推倒重來(這也是這些年來看到的比較多的做法)。
- 面嚮物件語言
面嚮物件語言,從解決過程結構的問題入手,巨集觀分清責任,微觀是繼續行過程結構之實,說白了它也的在馮氏計算機上運用(關於這個Intel仙童這些公司的推波助瀾結果)。封裝、繼承、多型,在加上抽象,8個字孕育的意義簡直太大了,不是我們用了“繼承” 就是物件導向。關鍵是“分而治之”哲理,用軟體從業者的術語就是“解耦”。
關於面嚮物件語言裡有一種原型式面嚮物件語言,這裡蘊含了沒有定義模版的道理,只有例項,如果想要第二個例項,就以第一為原型,Clone出第二個,想想JavaSript就是不是這樣的。
關於面嚮物件語言不得不說C#與Java,其實它們裡面也有不同魂在,Java一次編譯處處執行(現在windows環境下做大型應用的時候,越發體會到java跨平臺的魔力,因為不用為IIS的表現而忍氣吞聲了),C#(.NET)更多的關注一個平臺,多種表現形式,Rudy有Rudy.net,但一直在疑問這個有用嗎?估計除了我們公司以外,沒有一個公司會用到這麼多語言。.NET雖然有Mono打破非Windows平臺的界限,但現在這個有太不給力了,彷彿一路走走停停的“偉大的馬拉松戰役傳遞者”(再不快些,波斯帝國會讓雅典開城門的)。.NET不轉變處事哲學,將來會越來越難的,因為這是一場一個軟體公司和全世界軟體從業者的戰爭,世界是多極的。
- 邏輯式語言
Prolog說白就是在做一道數學題,已知一些東西和一堆數學定理,然後來判斷一個命題是真是假。這種語言的誕生60年代未,與過程語言Fortan和Basic幾乎同齡,但它們之間傳遞給我們的理念完全不一樣,邏輯式語言一直以來在模擬大腦邏輯的過程,但基礎還是結構的,估計很難有所突破。語言的核心是遞迴,就是我們數學上的歸納法的一種逆過程。關於遞迴的效率一直從上學以來的名聲很不好,尾遞迴出現可以改善遞迴的名聲。
- 函式式語言
函式式語言,感覺一直在強調相同的輸入呼叫,得到是相同的結果,為了將來用不同機器或者CPU核來運算。這也是“雲”到來後它崛起的真正道理。
- 語言的演進
每一次語言的革新都會有中間語言的出現,它秉承了前語言的優點,又夾帶著新的思想。從彙編到高階結構語言出現了C;結構語言到物件導向的語言途中出現了C++和ObjectC(ObjectC現在有些返祖,其實這也是蘋果公司的功勞),物件語言對函式式語言的過程中出現的“Scala” 和 F#。
是否將來有蘊含其它思想的語言出現就不得而知了。
相關文章
- 《七週七語言》讀後感
- 先睹為快之《七週七語言》
- 好書短評之《七週七語言》
- 不走尋常路——《七週七語言》
- 向《七週七語言》作者Bruce Tate提問!
- 帶您走進七週七語言的程式世界
- 七週七語言之Ruby
- 七週學會七種語言:學習程式語言的實用指南
- 為什麼《七週七語言》選中的是這幾種語言?
- 七牛雲 GO 語言週報【七月第 1 期】Go
- Java語言學習報告第七週Java
- 《七週七語言:理解多種程式設計範型》書評整理程式設計
- Bruce Tate:恐懼是我寫作《七週七語言》的初衷(圖靈訪談)圖靈
- 感悟,七點心得總結
- 讀書筆記:組合語言(王爽)實驗七筆記組合語言
- [英]Bruce Tate:恐懼是我寫作《七週七語言》的初衷(圖靈訪談)圖靈
- 第七週
- 圖書封面的故事之——“巴別塔”選自《七週七語言:理解多種程式設計範型》程式設計
- 第七週週三
- 第七週週四
- 第七週週五
- 筆記:《七週七併發模型》筆記模型
- 暑假第七週
- 我用 TypeScript 語言的七個月TypeScript
- 第七週作業
- 第七週總結
- Go語言學習筆記(七)之方法Go筆記
- 小白學習Golang(七)Go語言StringGolang
- 程式開發語言的七大奇蹟
- 《碧藍航線》七週年慶典:碧海如初,共赴佳七!
- 讀《社會工程 卷2:解讀肢體語言》的小小感悟
- 小豬的C語言快速入門系列(七)C語言
- 學JAVA的第七週Java
- 學習Java第七週Java
- 暑假第七週規劃
- JAVA學習第七週Java
- 入門篇-其之七-Java運算子Java
- 【Go語言入門系列】(七)如何使用Go的方法?Go