注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計其他編程語言/工具程序設計語言:實踐之路(第3版)

程序設計語言:實踐之路(第3版)

程序設計語言:實踐之路(第3版)

定 價:¥128.00

作 者: (美)斯科特 著,韓江,陳玉 譯
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 程序設計

ISBN: 9787121170676 出版時間: 2012-07-01 包裝: 平裝
開本: 16開 頁數: 847 字數:  

內容簡介

  《程序設計語言——實踐之路(第3版)(含CD光盤1張)》是一本很有特色的計算機教材,其核心是討論程序設計語言的基本原理和技術。本書融合了傳統(tǒng)的程序設計語言教科書和編譯教科書的有關知識,并增加了一些有關匯編層體系結構的材料,以滿足沒學過計算機組織的學生們的需要。書中通過各種語言的例子,闡釋了程序設計語言的重要基礎概念,討論了各種概念之間的關系,解釋了語言中許多結構的形成和發(fā)展過程,以及它們演化為今天這種形式的根源。書中還詳細討論了編譯器的工作方式和工作過程,說明它們對源程序做了什么,以及為什么要那樣做。書的每章最后附有復習題和一些更具挑戰(zhàn)性的練習與探索。這些練習的特別價值在于引導學生進一步深入理解各種語言和技術。本書第3版新增了關于運行時程序管理的討論,對關于并發(fā)的一章做了重大的改寫,并更新了大量的實例。這本教材在美國大學已使用了二十余年,目前被歐美許多重要大學用于“程序設計語言”或者“軟件系統(tǒng)”課程。

作者簡介

暫缺《程序設計語言:實踐之路(第3版)》作者簡介

圖書目錄

第1部分 基礎
第1章 引言
1.1 語言設計的藝術
1.2 程序設計語言的譜系
1.3 為什么要研究程序設計語言?
1.4 編譯和解釋
1.5 程序設計環(huán)境
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.3 語法分析
2.3.1 遞歸下降
2.3.2 表格驅動的自上而下語法分析
2.3.3 自下而上的語法分析
2.3.4 語法錯誤
2.4 理論基礎
2.4.1 有窮自動機 13  
2.4.2 下推自動機 18  
2.4.3 文法和語言類 19  
2.5 總結和注記
2.6 練習
2.7 探索
2.8 有關參考文獻
第3章 名字、作用域和約束
3.1 約束時間的概念
3.2 對象生存期和存儲管理
3.2.1 靜態(tài)分配
3.2.2 基于棧的分配
3.2.3 基于堆的分配
3.2.4 廢料收集
3.3 作用域規(guī)則
3.3.1 靜態(tài)作用域
3.3.2 嵌套子程序
3.3.3 聲明的順序
3.3.4 模塊
3.3.5 模塊類型和類
3.3.6 動態(tài)作用域
3.4 作用域的實現
3.4.1 符號表
3.4.2 關聯表和中心引用表
3.5 作用域中名字的含義
3.5.1 別名
3.5.2 重載
3.5.3 多態(tài)性及相關概念
3.6 引用環(huán)境的約束
3.6.1 子程序閉包
3.6.2 一級值和非受限生存期
3.6.3 對象閉包
3.7 宏擴展
3.8 分別編譯
3.8.1 C的分別編譯
3.8.2 包和自動頭文件推理
3.8.3 模塊分層結構
3.9 總結和注記
3.10 練習
3.11 探索
3.12 有關參考文獻
第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章 目標機體系結構
5.1 存儲器層次結構
5.2 數據表示
5.2.1 整數算術
5.2.2 浮點數算術
5.3 指令集體系結構
5.3.1 尋址模式
5.3.2 條件和分支
5.4 體系結構和實現
5.4.1 微程序設計
5.4.2 微處理器
5.4.3 RISC
5.4.4 多線程和多核
5.4.5 兩個示例體系結構:x86和MIPS
5.5 為新型處理器做編譯
5.5.1 保持流水線滿
5.5.2 寄存器分配
5.6 總結和注記
5.7 練習
5.8 探索
5.9 有關參考文獻
第2部分 語言設計的核心問題
第6章 控制流
6.1 表達式求值
6.1.1 優(yōu)先級和結合性
6.1.2 賦值
6.1.3 初始化
6.1.4 表達式中的順序問題
6.1.5 短路求值
6.2 結構化和非結構化的流程
6.2.1 goto的結構化替代品
6.2.2 繼續(xù)
6.3 順序執(zhí)行
6.4 選擇
6.4.1 短路條件
6.4.2 Case/Switch語句
6.5 迭代
6.5.1 枚舉控制的循環(huán)
6.5.2 組合循環(huán)
6.5.3 迭代器
6.5.4 lcon的生成器
6.5.5 邏輯控制的循環(huán)
6.6 遞歸
6.6.1 迭代和遞歸
6.6.2 應用序和正則序求值
6.7 非確定性
6.8 總結和注記
6.9 練習
6.10 探索
6.11 有關參考文獻
第7章 數據類型
7.1 類型系統(tǒng)
7.1.1 類型檢查
7.1.2 多態(tài)性
7.1.3 “類型”的含義
7.1.4 類型的分類
7.1.5 正交性
7.2 類型檢查
7.2.1 類型等價
7.2.2 類型相容性
7.2.3 類型推理
7.2.4 ML類型系統(tǒng)
7.3 記錄(結構)與變體(聯合)
7.3.1 語法和運算
7.3.2 存儲布局及其影響
7.33 with語句
7.3.4 變體記錄(聯合)
7.4 數組
7.4.1 語法和操作
7.4.2 維數、上下界和分配
7.4.3 內存布局
7.5 字符串
7.6 集合
7.7 指針和遞歸類型
7.7.1 語法和操作
7.7.2 懸空引用
7.7.3 廢料收集
7.8 表
7.9 文件和輸入/輸出
7.9.1 交互式I/O
7.9.2 基于文件的I/O
7.9.3 正文I/O
7.10 相等檢測和賦值
7.11 總結和注記
7.12 練習
7.13 探索
7.14 有關參考文獻
第8章 子程序和控制抽象
8.1 回顧棧的布局
8.2 調用序列
8.2.1 區(qū)頭向量
8.2.2 案例研究:在MIPS上實現C,在x86上實現Pascal
8.2.3 寄存器窗口
8.2.4 內聯展開
8.3 參數傳遞
8.3.1 參數模式
8.3.2 名字調用
8.3.3 特殊目的的參數
8.3.4 函數返回
8.4 泛型子程序和模塊
8.4.1 不同的實現方法
8.4.2 泛型參數的約束條件
8.4.3 隱式實例化
8.4.4 C++、Java和C#中的泛型
8.5 異常處理
8.5.1 異常的定義
8.5.2 異常的傳播
8.5.3 異常的實現
8.6 協作程序
8.6.1 棧分配
8.6.2 轉移
8.6.3 迭代器的實現
8.6.4 離散事件模擬
8.7 事件
8.7.1 順序處理程序
8.7.2 基于線程的處理程序
4.8 總結和注記
8.9 練習
8.10 探索
8.11 有關參考文獻
第9章 數據抽象和面向對象
9.1 面向對象程序設計
9.2 封裝和繼承
9.2.1 模塊
9.2.2 類
9.2.3 嵌套(內層類)
9.2.4 類型擴展
9.2.5 不使用繼承擴展
9.3 初始化和終結處理
9.3.1 構造函數的選擇
9.3.2 引用和值
9.3.3 執(zhí)行順序
9.3.4 廢料收集
9.4 動態(tài)方法約束
9.4.1 虛方法和非虛方法
9.4.2 抽象類
9.4.3 成員查找
9.4.4 多態(tài)性
9.4.5 對象閉包
9.5 多重繼承
9.5.1 語義歧義性
9.5.2 復本式繼承
9.5.3 共享繼承
9.5.4 混入式繼承
9.6 重溫面向對象的程序設計
9.6.1 Smalltalk的對象模型
9.7 總結和注記
9.8 練習
9.9 探索
9.10 有關參考文獻
第3部分 其他程序設計模型
第10章 函數式語言
10.1 歷史淵源
10.2 函數式程序設計的概念
10.3 Scheme回顧/簡介
10.3.1 約束
10.3.2 表和數
10.3.3 相等檢測和檢索
10.3.4 控制流和賦值
10.3.5 程序作為表
10.3.6 一個擴展的實例:DFA模擬
10.4 重溫求值順序
10.4.1 嚴格求值和惰性求值
10.4.2 I/O:流和單體
10.5 高階函數
10.6 理論基礎
10.6.1 lambda 演算
10.6.2 控制流
10.6.3 結構
10.7 函數式程序設計展望
10.8 總結和注記
10.9 練習
10.10 探索
10.11 有關參考文獻
第11章 邏輯式語言
11.1 邏輯式程序設計的概念
11.2 Prolog
11.2.1 歸結和合一
11.2.2 表
11.2.3 算術
11.2.4 搜索/執(zhí)行順序
11.2.5 一個較大的實例:九宮棋
11.2.6 命令式控制流
11.3 理論基礎
11.3.1 子句形式
11.3.2 局限性
11.3.3 Skolem
11.4 邏輯式程序設計的展望
11.4.1 沒有覆蓋的邏輯部分
11.4.2 執(zhí)行順序
11.4.3 否定和“閉世界”假設
11.5 總結和注記
11.6 練習
11.7 探索
11.8 有關參考文獻
第12章 并發(fā)
12.1 基礎和動力
12.1.1 多線程程序的各種情況
12.1.2 多處理器體系結構
12.2 并發(fā)程序設計基礎
12.2.1 通信和同步
12.2.2 語言和庫
12.2.3 創(chuàng)建線程的語法
12.2.4 線程的實現
12.3 實現
12.3.1 忙等待同步
12.3.2 非阻塞算法
12.3.3 內存一致模型
12.3.4 調度器的實現
12.3.5 信號量
12.4 語言級機制
12.4.1 管程
12.4.2 條件臨界區(qū)域
12.4.3 Java中的同步
12.4.4 事務存儲
12.4.5 隱式同步
12.5 消息傳遞
12.5.1 通信對方的命名
12.5.2 發(fā)送
12.5.3 接收
12.5.4 遠程過程調用
12.6 總結和注記
12.7 練習
12.8 探索
12.9 有關參考文獻
第13章 腳本語言
13.1 什么是腳本語言?
13.1.1 公共特性
13.2 問題領域
13.2.1 外殼(命令)語言
13.2.2 文字處理和報表生成
13.2.3 數學和統(tǒng)計
13.2.4 “粘結”語言和通用腳本
13.2.5 擴充語言
13.3 萬維網腳本
13.3.1 CGI腳本
13.3.2 嵌入式服務器端腳本
13.3.3 客戶端腳本
13.3.4 Java小程序
13.3.5 XSLT
13.4 新特征
13.4.1 名字和作用域
13.4.2 串和模式匹配
13.4.3 數據類型
13.4.4 面向對象
13.5 總結和注記
13.6 練習
13.7 探索
13.8 有關參考文獻
第4部分 對實現的近距離考查
第14章 構造可運行的程序
14.1 后端編譯器結構
14.1.1 一種可行的多階段組織
14.1.2 階段和遍
14.2 中間形式
14.2.1 Diana
14.2.2 gcc中間形式
14.2.3 基于棧的中間形式
14.3 代碼生成
14.3.1 一個屬性文法實例
14.3.2 寄存器分配
14.4 地址空間組織
14.5 匯編
14.5.1 指令發(fā)射
14.5.2 為名字指定地址
14.6 連接
14.6.1 重定位和名字解析
14.6.2 類型檢查
14.7 動態(tài)連接
14.7.1 與定位無關的代碼
14.7.2 完全動態(tài)連接(惰性連接)
14.8 總結和注記
14.9 練習
14.10 探索
14.11 有關參考文獻
第15章 運行時程序管理
15.1 虛擬機
15.1.1 Java虛擬機
15.1.2 公共語言基礎架構
15.2 機器碼的遲綁定
15.2.1 即時和動態(tài)編譯
15.2.2 二進制翻譯
15.2.3 二進制重寫
15.2.4 移動代碼和沙箱
15.3 審查/自反
15.3.1 自反
15.3.2 符號調試
15.3.3 性能分析
15.4 總結和注記
15.5 練習
15.6 探索
15.7 有關參考文獻
第16章 代碼改進
16.1 代碼改進的階段
16.2 窺孔優(yōu)化
16.3 基本塊內的冗余刪除
16.3.1 一直使用的實例
16.3.2 值編號
16.4 全局冗余刪除和數據流分析
16.4.1 SSA(靜態(tài)單賦值)形式和全局值編號
16.4.2 全局公共子表達式刪除
16.5 循環(huán)改進I
16.5.1 循環(huán)不變量
16.5.2 歸納變量
16.6 指令調度
16.7 循環(huán)改進II
16.7.1 循環(huán)展開和軟件流水線
16.7.2 循環(huán)重排
16.8 寄存器分配
16.9 總結和注記
16.10 練習
16.11 探索  
16.12 有關參考文獻  
附錄A 本書中提到的程序設計語言
附錄B 語言設計和語言實現
附錄C 編號示表

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號