《c 語言的設計和演化》筆記(一)

2021-09-25 21:58:20 字數 1372 閱讀 3087

1.「既然c++裡的class意味著使用者定義型別,為什麼我不直接稱它為type呢?選擇用class這個詞的基本原因是我不想發明新術語。」(p.27)

2.「像c語言中一樣,物件的分配可以有3種方式:在堆疊上(作為自動物件),在固定位址(靜態物件),或者在自由儲存區(在堆,或者說是動態儲存區)。與c語言不同的是,c with classes 為自由儲存的分配和釋放提供了特定的運算子new和delete。」(p.27)

[注釋1]new 和 delete現在仍然是c++自由儲存的分配和釋放運算子

1.「c++的this指標是simula裡this引用的翻版。有時人們會問這個問題:為什麼this是乙個指標而不是乙個引用?為什麼它被稱為this而不是self?當this被引進c with classes時,在這個語言中還根本沒有引用機制。對於後乙個問題,c++是從simula而不是從smalltalk那裡借用的術語。」(p.34)

1.c的一級優點:

[1]c是很靈活的:可以把c用到幾乎所有的應用領域,可以在c中使用幾乎所以後的程式設計技術。這個語言沒有什麼內在限制,不排斥在其中寫出任何特殊種類的程式。

[2]c是高效的:c的語義是『低階的』,也就是說,c語言的基本概念直接反映了傳統計算機的基本概念。因此,如果想讓乙個編譯器和/或乙個程式設計師去有效地使用硬體資源,使用c語言相對來說更容易一些。

[3]c是可用的:有了一台計算機,無論是最小的微型機還是最大的超級計算機,情況都一樣,即那裡有可用的、具有可接收質量的c 編譯器,而且這個編譯器能支援比較完全(可以接受)的c語言和庫,並基本上符合標準。還有一些可以用的庫和工具,這就程式設計師不需要從零去設計乙個新系統。

[4]c是可移植的:c程式通常不能自動地從一種機器(或者乙個作業系統)移植到另一種機器上,這種移植通常也不是很容易做的事情。但是不管怎麼說,這件事通常是可以做的,即使軟體的某些重要部分具有內在的機器依賴性,其移植工作困難的程度(從技術的角度或經濟的角度)都是可以接受的。

與這些一級的優點相比,那些二級的缺陷,例如c語言的古怪語法、某些語言結構缺乏安全性等,都變得不那麼重要了。(p.38)

2. 「乙個程式語言要服務於兩種目的:它為程式設計師提供了一種載體,使他們能描述需要執行的動作:它還要提供一組概念,供程式設計師借助它們去思考什麼東西是能做的。第一方面的理想是要求一種『接近機器』的語言,使機器的所有重要方面都能簡單而有效地處理,而且是以某種程式設計師比較容易看清楚的方式。c語言的設計主要就是遵循了這種想法。第二方面的理想是一種『接近需要解決的問題』的語言,這將使求解領域的概念可以直接而簡潔描述。加入c中,從而使創造出c++的那些機制的設計著眼點也就在這個方面。」(p.39)

《c 語言的設計和演化》筆記(六)

17.5.1 派生類 17.5.3 清除全域性的static 17.6 與c語言的相容性 18 cpp 1.對所有不適合放進某個函式 某個struct或者某個編譯單元的名稱,c語言提供了乙個統一的全域性性的命名空間,這就帶來了名稱的衝突問題 在我設計型別安全的連線機制時 我注意到,對以下形式 ext...

讀書筆記 C 語言設計與演化

1 乙個好的語言工具的準則 對程式組織的支援 具備類分層結構,對併發的某種形式支援,對型別系統的強檢查 高效能 執行速度快,編譯整合程式簡單有效。高度可移植,多平台可執行 2 c 的很多設計角色根源於坐著對強迫人按某種特定方式行事的極度厭惡。c 被有意設計成能夠支援各種各樣的風格,而不是強調一條真理...

C 系列文章之《C 語言設計與演化》讀書筆記

一直以為自己的c 水平還可以,但是感覺只停留在理論階段,實際遇到問題時還不知所措,進而藉此機會在好好學習一下。學習理論同時以實踐為主,結合自己工作經驗將容易出錯的地方記錄下來,供以後備查。學習計畫如下 a c 語言設計和演化 b accelerated c c c 語言程式設計 d c primer...