這是一本很有特色的教材,其核心是討論程式設計語言的工作原理和技術。本書融合了傳統的程式設計語言教科書和編譯教科書的有關知識,並增加了一些有關彙編層體系結構的材料,以滿足沒學過計算機組織的學生們的需要。書中通過各種語言的例子,闡釋了程式設計語言的重要基礎概念,討論了各種概念之間的關係,解釋了語言中許多結構的形成和發展過程,以及它們演化為今天這種形式的根源。書中還詳細討論了編譯器的工作方式和工作過程,說明它們對源程式做了什麼,以及為什麼要那樣做。書的每章最後附有複習題和一些更具挑戰性的練習。這些練習的特別價值在於引導學生進一步深入理解各種語言和技術。
基本介紹
- 書名:程式設計語言實踐之路
- 又名:Programming Language: Pragmatics
- 作者:斯科特(Scott Michael L.)
- 譯者:裘宗燕
- ISBN:7121009005、9787121009006
- 頁數:884頁
- 出版社:電子工業出版社
- 出版時間:第1版 (2005年1月1日)
- 裝幀:平裝
- 開本:16
作者簡介,內容簡介,媒體評論,目錄,
作者簡介
作者:(美國)斯科特(Scott Michael L.) 譯者:裘宗燕
Michael L.Scott是羅切斯特大學計算機科學系的教授,1996至1999年任系主任。他是Lynx分散式程式設計語言的設計者、與他人合作設計了Charlotte和Psyche並行作業系統、Bridge並行檔案系統、Cashmere分散式共享存儲系統和MCS互斥鎖。他在1985年由麥迪遜的威斯康星大學獲得博士學位。
裘宗燕,北京大學數學學院信息科學系教授,教育部高等學校文科計算機基礎教學指導委員會委員。長期從事計算機軟體與理論、程式設計語言和符號計算方面的研究和教學工作。國內著名譯者和作者,翻譯出版了多本國外計算機經典名著,如《C++程式設計語言(特別版)》、《電腦程式的構造和解釋(第二版)》,深得國內讀者好評。
內容簡介
本書在美國大學已有使用了十餘年,目前被歐美許多重要大學用於“程式設計語言”或者“軟體系統”課程。本書適合高年級本科生或者一年級研究生使用,許多內容對專業程式設計師也很有價值。本書作者Michael Scott是計算機領域的著名學者,譯者是北京大學的裘宗燕教授,他熟悉專業,譯筆流暢,是一本難得的著、譯雙馨的佳作。
媒體評論
書評
“創新性地將程式設計語言設計與編譯器設計有機結合的實用教本。被全球上百所大學、學院列為標準教材和首席參考書目!”
《程式設計語言——實踐之路》討論了正在使用中的各種最重要的語言的基本原理,著重探究了語言設計和語言實現之間各個方面的關鍵性聯繫,強調了其中對於專業程式設計師最重要的各種問題。由於其嚴格而又容易被人接受的講述風格,它能夠幫助你做好準備,使你能為特定的工作項目選擇最好的語言,更有效地使用已經了解的語言,更快更完整地學習新語言。
特點:
討論了程式設計語言設計的各種最新發展,其中涉及超過40種不同的語言,包括Ada 95,C,C++, Fortran95,Java,Lis p,Scheme,ML,Modula-3 Pascal和Prglo.
特別關注實現方面的問題編譯器所使用的技術和相關工具如何影響著語言的設計,以有另一個方向的影響。
覆蓋了語言設計和實現的許多高級論題,例如疊代器,協作程式,模板,分別編譯,I/O,類型推理和異常處理等。
論述了彙編層體系結構中的一些與語言相關的問題,這些在幫助人們理解編譯器究竟對程式做了些什麼方面是至關重要的。
深入討論了有關面向對象程式設計的問題,包括多重繼承和方法約束。
用一個特別的小節討論靜態連線和動態連線。
包含了深入探討並發性的一章,討論了共享存儲和訊息傳遞語言和庫的許多深入細節。
對於編譯的形式基礎,函式式程式設計的形式基礎和邏輯程式設計的形式基礎,都提供了易於理解的基本材料。
目錄
前言
第1章 引言
1.1 語言設計的藝術
1.2 程式設計語言的譜系
1.3 為什麼研究程式設計語言
1.4 編譯和解釋
1.5 程式設計環境
1.6 編譯概覽
1.6.1 詞法和語法分析
1.6.2 語義分析和中間代碼生成
1.6.3 目標代碼生成
1.6.4 代碼改進
1.7 總結和註記
1.8 複習
1.9 練習
1.10 有關參考文獻
第2章 程式設計語言的語法
2.1 描述語法:正則表達式和上下文無關文法
2.1.1 單詞和正則表達式
2.1.2 上下文無關文法
2.1.3 推導和語法分析樹
2.2 識別語法:掃描器和語法分析器
2.2.1 掃描
2.2.2 自上而下和自下而上的語法分析
2.2.3 遞歸下降
2.2.4 語法錯誤
2.2.5 表格驅動的自上而下語法分析
2.2.6 自下而上的語法分析
2.3 理論基礎
2.3.1 有窮自動機
2.3.2 下推自動機
2.3.3 文法和語言類
2.4 總結和註記
2.5 複習
2.6 練習
2.7 有關參考文獻
第3章 名字、作用域和約束
3.1 約束時間的概念
3.2 對象生存期和存儲管理
3.2.1 基於堆疊的分配
3.2.2 堆分配
3.2.3 廢料收集
3.3 作用域規則
3.3.1 靜態作用域
3.3.2 動態作用域
3.3.3 符號表
3.3.4 關聯表和中心引用表列
3.4 引用環境的約束
3.4.1 子程式閉包
3.4.2 一級和二級子程式
3.5 重載和相關概念
3.6 語言設計中與名字有關的缺陷
3.6.1 作用域規則
3.6.2 分別編譯
3.7 總結和註記
3.8 複習
3.9 練習
3.10 有關參考文獻
第4章 語義分析
4.1 語義分析器所扮演的角色
4.2 屬性文法
4.3 屬性流
4.4 動作例程
4.5 屬性的空間管理
4.5.1 自下而上求值
4.5.2 自上而下求值
4.6 語法樹的標註
4.7 總結和註記
4.8 複習
4.9 練習
4.10 有關參考文獻
第5章 彙編層計算機體系結構
……
第6章 控制流
第7章 數據類型
第8章 子程式和控制抽象
第9章 構造可運行程式
第10章 數據抽象和面向對象
第11章 非命令式程式設計模型:函式式和邏輯式語言
第12章 並發
第13章 代碼改進
附錄A 本書中提到的程式設計語言
附錄B 語言設計和語言實現
參考書目
索引