第十二章 面向語言程式設計
在這一章,首先了解什麼是面向語言的程式設計(language-oriented programming),許多人都在用,定義也各不相同。我們將主要討論它的優點、不足;然後,再看f# 中面向語言程式設計的幾種不同方法,這些方法包括使用 f# 文字建立「小語言」(little languages),使用 f# 引用(quotations),本章的大部分將討論建立一種語言的示例,再建立一種解析器來執行這種語言;最後,再詳細地討論語言的執行,包括解釋與編譯執行的效能比較。
什麼是面向語言程式設計?
雖然面向語言程式設計這個術語描述了許多不同的程式設計技術,但它們有乙個共同的主題,即,對程式設計師來說,必須實現一種預定義的語言,是很常見的;通常是因為要從儲存的訊息、接收的字串或者 xml 資料中提取結構化的資料,都要遵守這種預定義的語言。本章中介紹的的這些方法技術將有助於更可靠地完成。與此相關的思想就是小語言,也叫特定域語言(domain-specific languages dsls)。需要建立 dsl 來解決問題,最好是這樣的情況,即,建立一種自定義的語言來描述問題,然後,用這種語言去解決問題。函式程式設計總是和面向語言程式設計有緊密的聯絡,因為函式程式語言通常有這樣的功能,非常適合於建立解析器和編譯器。
Objective C 程式設計 第十二章
預處理程式語句使用 開頭,一行中的第乙個非空字元。大部分內容都與c語言類似,相當於複習啦。預定義不是變數。不能為它賦值。實際上是字元的簡單替換。define語句常放在 import或 include語句後邊。定義乙個名稱後,可以在任何地方使用。一般放在標頭檔案,方便在多個原始檔中使用。所有預定義的名...
第十二章 併發程式設計
1 併發 邏輯控制流在時間上重疊 2 併發程式 使用應用級併發的應用程式稱為併發程式。3 三種基本的構造併發程式的方法 1 需要乙個sigchld處理程式,來 僵死子程序的資源。2 父子程序必須關閉各自的connfd拷貝。對父程序尤為重要,以避免儲存器洩露。3 套接字的檔案表表項中的引用計數,直到父...
第十二章 併發程式設計
構建併發伺服器的方法 在父程序中接收客戶端連線請求,然後建立乙個新的子程序來為每個新客戶端提供服務。假設現在有兩個客戶端和乙個伺服器,伺服器正在監聽乙個監聽描述符上的連線請求。併發過程如下 1 伺服器接受客戶端1的連線請求 2 伺服器派生乙個子程序為這個客戶端1服務 3 伺服器接受另乙個客戶端2的連...