1. 開篇概覽
前一週寫了一篇博文“記-碼農的“啟蒙”之《程式設計語言-實踐之路》和《物件導向分析和設計》兩書”,其中說打算總結下這兩本書中有哪些收穫,就是關於第一本書《程式設計語言-實踐之路》的系列總結博文。
1.1 為何要讀這本書?
首先這是一本介紹語言的入門書籍(筆者閱讀是裘宗燕老先生翻譯的第二版),如果你想從中學到一些獨門絕技,那麼抱歉,木有;其次它介紹的是程式設計語言的一些重要基礎概念、各種概念之間的關係;並解釋了語言中諸多結構的形成和發展過程,以及他們演化到今天這種形式的根源。
那麼或許你該問了,瞭解這些有甚好處,不知道我照樣寫出漂亮的程式碼、架構等。的確,你可以的,現在的程式設計師在工作中都不止要用到一兩種語言,然而我們通常對這門語言最直接的感觸就是它的語法層面;我猜測你或多或少都有被語法的糖衣炮彈(語法糖)給打暈、矇蔽過的經歷吧。那麼如果可以讓你從語言設計者的角度來看待語言,則非常有助於你瞭解一門語言的特性,理解其中的優勢以及弱勢、以及它們為何發展進化為今天的形式,從而能更好的使用它們;從而能有效的避免身陷眾多語言的糖衣炮彈中。
如果你有上面的需求,那麼我力薦你買一本回來讀讀。細心的朋友可能會發現書名中還有個副標題“實踐之路”,然而博文標題並無此。不是偷懶,而是故意為之。因為我想關注討論的是語言的核心概念,而不是編譯器實現細節方面。
1.2 電腦科學慣於在抽象之上建立抽象
好吧,我承認這句話有點裝13。
這是這本書的序言中的第一句話,雖說電腦科學這個詞語範圍是有點甚廣,但是仔細想一想也確實是這樣的事實,就拿語言來說,彙編是對硬體操作的抽象;高階語言是又是對彙編的進一步抽象。而高階語言中也有各種的抽象思想所在,比如過程抽象產生了子程式、OOP中的面向介面程式設計也是一種抽象。總結來說也就是現在的作業系統、資料庫、大型軟體等等無一不是建立在抽象的基礎之上。因為現在的軟體系統的複雜度已經遠遠的超出了人的理解範圍,抽象這種技能也不得已而為之,你不得不將大量複雜的細節隱藏起來來降低理解上的難度。
總之一句話“抽象無處不在”。
2. 本系列博文導航目錄
由於不去關注實現方面的細節(對應本書中是2,4,5,14,15章節),所以都是以概念性方面的知識點安排的。話雖如此,但是語言的設計和實現具有內在的密切聯絡,想要忽略實現細節而很好的理解設計方面的概念也是很難做到的,這就需要讀者自己去了解實現方面的一些知識點了。其中本系列2-6篇屬於語言的核心概念,而7-10屬於現有各種型別語言特性的概述性介紹。
- 引言
- 名字、作用域和約束(核心概念)
- 控制流(核心概念)
- 資料型別(核心概念)
- 子程式和控制抽象(核心概念)(敬請期待)
- 資料抽象和麵向物件(核心概念)(敬請期待)
- 函式式語言(敬請期待)
- 邏輯式語言(敬請期待)
- 腳步語言(敬請期待)
- 併發(敬請期待)
我的計劃是2週一篇,目錄結構暫定如此(照搬的書目錄),也許會有一些章節內容繁多,到時會做適當的分割。
3. 總結
由於這些都是我個人理解的一家之言,難免會有一些錯誤或者不嚴謹的地方,歡迎園友們不吝賜教。