一直在斷斷續續地看sicp,確實字字珠璣,今天總算看了前兩章,習題做了一部分,不過日後肯定還是要回頭重看的,現在略微回頭總結一下。
1 好的程式語言應提供的三種機制:基本表示式+組合+抽象 實際上我們自己也可以為特定問題制定自己的「語言」,是否具有上述能力是這個語言是否強大的關鍵;
2 過程作為黑箱的抽象 只為使用者提供需要的東西,隱藏複雜的細節,有利於程式的構建;
3 wishful thinking 的程式設計方法 先假設已經具有某種功能,這樣就可以在這一層次上構建程式,具體這一功能如何實現,與當前用它無關;
4 過程與資料沒有明確的區分 高階函式可以將過程作為返回值,這一應用模糊了過程與資料的分別,使語言具有了更強的抽象能力,函式式語言確實很有意思,有待進一步學習;
5 合適的抽象層次 如何建立合適的抽象層次,是個重要的問題;
1 實現資料抽象 只要抽象層次能夠提供選擇函式與建構函式,即可在這個資料抽象層次上進行操作而避開資料的具體實現,這也是不斷構造多層次抽象的辦法;
而實現了資料的多層抽象,就能在修改個別層次的時候不影響整體的使用,因為提供給上層的介面是不變的;
2 閉包 語言對運算封閉的能力,是實現抽象層次的基礎;
3 訊號流式的計算過程 enumerate -> filter -> map ->accumulate ,應該是一種梳理想法的好方式;
4 資料抽象的方法:顯式分派 vs 訊息傳遞 vs 資料導向 話說最近的實習還糾結了一下這個問題,要根據屬性碼對不同的要素設定不同的繪製方法,顯然顯示分派是最簡單的,一串switch,case,不過看著實在蛋疼,而且確實不易擴充與維護;資料導向,其實是維護乙個表,用時是查表,增減修改方法也是修改表,程式介面不變,還是明顯要強於第一種方法的;訊息傳遞也是個常用的機制,mfc的基礎,最近這個實習還用到qt,裡面用的是訊號-槽機制,也挺有意思的,有點像神經遞質與受體的結合;
5 通用型操作 如何操作不同型別的資料,書中提到了強制型別轉換,與類繼承方面的一些思想,但在實踐中仍應當是乙個複雜的問題;
SICP學習筆記(1 1 4 1 1 5)
sicp學習筆記 1.1.4 1.1.5 周銀輝 書接上一回,這裡是我在學習1.1.4 1.1.5時的一些筆記 1,標準過程與復合過程 以 scheme為例,作為一門語言,其內建了一些原始過程 或稱之為標準的過程 與scheme環境中,比如,實際上與某個內建過程關聯 繫結 了起來,該過程接收兩個引數...
SICP學習筆記(1 1 1 1 1 3)
sicp學習筆記 1.1.1 1.1.3 周銀輝 sicp,即structure and interpretation of computer programs,電腦程式的構造和解釋,是mit 麻省理工學院 一門經典課程,相信很多程式愛好者都讀過,最近我也抽空讀了讀,挺有意思的。算是對大學知識 高數...
SICP學習筆記(二)
進入正題,第三章標題是模組化 物件和狀態,其實怎麼覺得這一章是講哲學問題的呢。模組化的意義在於 使這些系統能夠 自然地 劃分為一些具有內聚力的部分,使這些部分可以分別進行開發和維護 本章提出了兩種組織模式,一種是物件,一種是流 物件導向,對於絕大部分人應該是很熟悉的,畢竟用的太多,賦值,環境模型 或...