会员   密码 您忘记密码了吗?
1,580,249 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > 程序設計語言原理(原書第12版)
程序設計語言原理(原書第12版)
上一张
下一张
prev next

程序設計語言原理(原書第12版)

作者: (美)羅伯特·W.塞巴斯塔
出版社: 機械工業出版社
出版日期: 2022-01-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT1374.00
市场价格: RM247.01
本店售价: RM219.84
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書從為什麼學習程式設計語言、常用程式設計語言的演化史、評估程式設計語言結構的標準,以及這些語言基本的實現方法開始講起,通過不局限於特定語言種類地分析語言結構的設計問題,檢測設計選擇,以及比較設計可選方案來講述程式設計語言基本原理。


作者介紹


目錄

第1章預備知識1
1.1掌握程式設計語言概念的必要性1
1.2程式設計領域3
1.2.1科學計算應用3
1.2.2商業應用3
1.2.3人工智慧4
1.2.4Web軟體4
1.3語言評價標準4
1.3.1可讀性5
1.3.2可寫性9
1.3.3可靠性9
1.3.4成本10
1.4影響語言設計的因素11
1.4.1電腦體系結構11
1.4.2程式設計方法學13
1.5程式設計語言分類14
1.6語言設計中的權衡14
1.7實現方法15
1.7.1編譯16
1.7.2純解釋18
1.7.3混合實現系統19
1.7.4預處理程式19
1.8程式設計環境20
小結20
複習題21
習題21
 
第2章主要程式設計語言發展簡史23
2.1Zuse研製的Plankalkül語言23
2.1.1歷史背景23
2.1.2語言概述25
2.2偽代碼25
2.2.1短碼26
2.2.2快碼26
2.2.3UNIVAC編譯系統27
2.2.4相關工作27
2.3IBM 704和Fortran27
2.3.1歷史背景27
2.3.2設計過程28
2.3.3Fortran I概述28
2.3.4Fortran II29
2.3.5Fortran IV、77、90、95、2003和200829
2.3.6評價30
2.4函數式程式設計語言:LISP31
2.4.1人工智慧的開端和列表處理31
2.4.2LISP的設計過程32
2.4.3語言概述32
2.4.4評價33
2.4.5LISP的兩種後繼語言34
2.4.6相關語言34
2.5邁向成熟的 步:ALGOL 6035
2.5.1歷史背景35
2.5.2早期設計過程35
2.5.3ALGOL 58概述36
2.5.4ALGOL 58報告的接受度37
2.5.5ALGOL 60的設計過程37
2.5.6ALGOL 60概述37
2.5.7評價38
2.6商業處理語言:COBOL39
2.6.1歷史背景39
2.6.2FLOW-MATIC40
2.6.3COBOL的設計過程40
2.6.4評價40
2.7分時處理的開始:Basic42
2.7.1設計過程43
2.7.2語言概述43
2.7.3評價43
2.8滿足所有人的需求:PL/I46
2.8.1歷史背景47
2.8.2設計過程47
2.8.3語言概述48
2.8.4評價48
2.9兩種早期的動態語言:APL和SNOBOL49
2.9.1APL的起源及特徵49
2.9.2SNOBOL的起源和特徵50
2.10資料抽象的開端:SIMULA 6750
2.10.1設計過程50
2.10.2語言概述50
2.11正交設計:ALGOL 6850
2.11.1設計過程51
2.11.2語言概述51
2.11.3評價51
2.12ALGOL系列語言的早期繼承者52
2.12.1簡潔的設計:Pascal52
2.12.2一個輕便的系統語言:C53
2.13基於邏輯的程式設計:Prolog55
2.13.1設計過程55
2.13.2語言概述55
2.13.3評價56
2.14曆 規模 的語言設計:Ada56
2.14.1歷史背景56
2.14.2設計過程56
2.14.3語言概述57
2.14.4評價58
2.14.5Ada 95和Ada 200558
2.15物件導向程式設計:Smalltalk59
2.15.1設計過程59
2.15.2語言概述60
2.15.3評價60
2.16結合命令式和物件導向的特性:C++61
2.16.1設計過程61
2.16.2語言概述62
2.16.3評價62
2.16.4Swift:Objective-C的替代品62
2.16.5另一個相關語言:Delphi63
2.17基於命令式的物件導向語言:Java63
2.17.1設計過程63
2.17.2語言概述64
2.17.3評價65
2.18指令碼語言66
2.18.1Perl的起源與特點66
2.18.2JavaScript的起源與特點67
2.18.3PHP的起源與特點69
2.18.4Python的起源與特點69
2.18.5Ruby的起源與特點70
2.19.NET旗幟語言:C#70
2.19.1設計過程70
2.19.2語言概述71
2.19.3評價71
2.20混合標記程式設計語言72
2.20.1XSLT72
2.20.2JSP73
小結74
文獻注記74
複習題74
習題76
程式設計練習76
 
第3章語法和語義描述77
3.1概述77
3.2語法描述的一般問題78
3.2.1語言識別器78
3.2.2語言生成器79
3.3語法描述的形式化方法79
3.3.1Backus-Naur範式與上下文無關文法79
3.3.2擴展的BNF範式88
3.3.3文法和識別器90
3.4屬性文法90
3.4.1靜態語義90
3.4.2基本概念91
3.4.3屬性文法的定義91
3.4.4內在屬性91
3.4.5屬性文法示例91
3.4.6計算屬性值93
3.4.7評價94
3.5描述程式的含義:動態語義94
3.5.1操作語義95
3.5.2指稱語義97
3.5.3公理語義100
小結110
文獻注記110
複習題110
習題111
 
第4章詞法和語法分析115
4.1概述115
4.2詞法分析116
4.3語法分析問題122
4.3.1語法分析基礎122
4.3.2自頂向下的語法分析器123
4.3.3自底向上的語法分析器124
4.3.4語法分析的複雜度124
4.4遞迴下降的語法分析124
4.4.1遞迴下降的語法分析過程124
4.4.2LL文法類129
4.5自底向上的語法分析131
4.5.1自底向上的語法分析器的語法分析問題131
4.5.2移進-歸約演算法133
4.5.3LR語法分析器133
小結137
複習題138
習題138
程式設計練習139
 
第5章名字、綁定與作用域140
5.1概述140
5.2名字140
5.2.1設計問題140
5.2.2名字形式141
5.2.3特殊單詞141
5.3變數142
5.3.1名字142
5.3.2地址142
5.3.3類型143
5.3.4值143
5.4綁定的概念143
5.4.1屬性到變數的綁定144
5.4.2綁定類型144
5.4.3存儲綁定和生存期147
5.5作用域149
5.5.1靜態作用域149
5.5.2分程式150
5.5.3聲明順序153
5.5.4全域作用域153
5.5.5對靜態作用域的評價156
5.5.6動態作用域156
5.5.7對動態作用域的評價157
5.6作用域和生存期157
5.7引用環境158
5.8有名常量159
小結161
複習題161
習題162
程式設計練習165
 
第6章資料類型167
6.1概述167
6.2基底資料型別168
6.2.1數數值型別168
6.2.2布林類型170
6.2.3字元類型171
6.3字串類型171
6.3.1設計問題171
6.3.2字串及其運算171
6.3.3字串長度選項173
6.3.4評價173
6.3.5字串類型的實現174
6.4枚舉類型175
6.4.1設計問題175
6.4.2設計175
6.4.3評價176
6.5陣列類型177
6.5.1設計問題177
6.5.2陣列和索引178
6.5.3下標綁定和陣列的種類179
6.5.4陣列初始化180
6.5.5陣列運算181
6.5.6矩陣陣列和鋸齒形陣列182
6.5.7切片182
6.5.8評價183
6.5.9陣列類型的實現183
6.6關聯陣列185
6.6.1結構與運算185
6.6.2關聯陣列的實現186
6.7記錄類型186
6.7.1記錄的定義187
6.7.2記錄中欄位的引用187
6.7.3評價188
6.7.4記錄類型的實現188
6.8元組類型189
6.9列表類型190
6.10聯合類型192
6.10.1設計問題192
6.10.2判別式與自由聯合類型192
6.10.3F#的聯合類型193
6.10.4評價193
6.10.5聯合類型的實現194
6.11指針和參考類型194
6.11.1設計問題194
6.11.2指針運算194
6.11.3指標的相關問題195
6.11.4C和C++中的指標196
6.11.5參考類型198
6.11.6評價199
6.11.7指針和參考類型的實現199
6.12可選類型203
6.13類型檢查203
6.14強類型204
6.15類型等價205
6.16理論和資料類型208
小結209
文獻注記210
複習題210
習題211
程式設計練習212
 
第7章運算式與設定陳述式214
7.1概述214
7.2算術運算式214
7.2.1運算子求值順序215
7.2.2運算分量求值順序219
7.3重載運算子221
7.4類型轉換222
7.4.1運算式中的強制轉換222
7.4.2顯式類型轉換223
7.4.3運算式錯誤224
7.5關聯運算式和布林運算式224
7.5.1關聯運算式224
7.5.2布林運算式225
7.6短路求值226
7.7設定陳述式227
7.7.1簡單賦值227
7.7.2條件賦值227
7.7.3複合設定運算子227
7.7.4一元設定運算子228
7.7.5賦值運算式229
7.7.6多重賦值229
7.7.7函數式程式設計語言中的賦值230
7.8混合方式賦值230
小結231
複習題231
習題232
程式設計練習233
第8章語句級控制結構234
8.1概述234
8.2選擇語句235
8.2.1二路選擇語句235
8.2.2多路選擇語句238
8.3重複語句244
8.3.1計數控制迴圈245
8.3.2邏輯控制迴圈248
8.3.3用戶定義的迴圈控制機制249
8.3.4基於資料結構的反覆運算250
8.4無條件分支253
8.5保護命令254
8.6結論256
小結256
複習題257
習題257
程式設計練習258
第9章副程式260
9.1概述260
9.2副程式基礎260
9.2.1副程式的一般性質260
9.2.2基本定義260
9.2.3參數262
9.2.4過程與函數265
9.3副程式的設計問題265
9.4局部引用環境266
9.4.1區域變數266
9.4.2嵌套副程式267
9.5參數傳遞方法267
9.5.1參數傳遞的語義模型268
9.5.2參數傳遞的實現模型268
9.5.3參數傳遞方法的實現272
9.5.4常用語言的參數傳遞方法272
9.5.5參數類型檢查274
9.5.6多維陣列參數276
9.5.7設計考量277
9.5.8參數傳遞實例277
9.6副程式作為參數280
9.7副程式間接調用281
9.8函數設計問題282
9.8.1函數的副作用283
9.8.2返回數值型別283
9.8.3返回值的個數283
9.9重載副程式283
9.10泛型副程式284
9.10.1C++泛型函數285
9.10.2Java 5.0泛型方法286
9.10.3C# 2005泛型方法287
9.10.4F#泛型函數288
9.11用戶定義的重載運算子288
9.12閉包289
9.13協同程式290
小結292
複習題293
習題294
程式設計練習295
 
第10章副程式實現297
10.1調用和返回的一般語義297
10.2“簡單”副程式的實現297
10.3具有棧動態區域變數的副程式實現299
10.3.1 複雜的活動記錄299
10.3.2不含遞迴的例子301
10.3.3遞迴302
10.4嵌套副程式304
10.4.1基礎304
10.4.2靜態鏈305
10.5分程式309
10.6動態作用域的實現310
10.6.1深層訪問310
10.6.2淺層訪問311
小結312
複習題312
習題313
程式設計練習315
 
第11章抽象資料類型與封裝結構316
11.1抽象的概念316
11.2資料抽象簡介317
11.2.1浮點型抽象資料類型317
11.2.2用戶自訂抽象資料類型317
11.2.3示例318
11.3抽象資料類型的設計問題319
11.4語言示例319
11.4.1C++中的抽象資料類型320
11.4.2Java中的抽象資料類型325
11.4.3C#中的抽象資料類型326
11.4.4Ruby中的抽象資料類型327
11.5參數化抽象資料類型330
11.5.1C++330
11.5.2Java 5.0331
11.5.3C# 2005333
11.6封裝結構333
11.6.1概述334
11.6.2C中的封裝334
11.6.3C++中的封裝334
11.6.4C#程式集335
11.7命名封裝336
11.7.1C++命名空間336
11.7.2Java包337
11.7.3Ruby模組338
小結338
複習題339
習題340
程式設計練習340
 
第12章物件導向程式設計支持342
12.1概述342
12.2物件導向程式設計342
12.2.1引言342
12.2.2繼承343
12.2.3動態繫結344
12.3物件導向語言的設計問題346
12.3.1對象的排他性346
12.3.2子類是否為子類型346
12.3.3單繼承與多繼承347
12.3.4對象的分配和釋放347
12.3.5動態繫結與靜態繫結348
12.3.6嵌套類348
12.3.7對象的初始化349
12.4支援物件導向程式設計的特定語言349
12.4.1Smalltalk349
12.4.2C++350
12.4.3Java359
12.4.4C#362
12.4.5Ruby363
12.5物件導向結構的實現366
12.5.1存儲示例資料366
12.5.2方法調用與方法的動態繫結366
12.6反射368
12.6.1概述368
12.6.2什麼是反射368
12.6.3Java中的反射369
12.6.4C#中的反射371
小結372
複習題373
習題375
程式設計練習375
 
第13章併發376
13.1概述376
13.1.1多處理器體系結構377
13.1.2併發的分類378
13.1.3使用併發的動機378
13.2副程式級併發379
13.2.1基本概念379
13.2.2併發語言設計382
13.2.3設計問題382
13.3信號量382
13.3.1概述382
13.3.2合作同步383
13.3.3競爭同步385
13.3.4評價386
13.4管程386
13.4.1概述386
13.4.2競爭同步386
13.4.3合作同步386
13.4.4評價387
13.5消息傳遞387
13.5.1概述387
13.5.2同步消息傳遞的概念388
13.6Ada併發支援388
13.6.1基本概念388
13.6.2合作同步391
13.6.3競爭同步392
13.6.4受保護對象393
13.6.5評價394
13.7Java執行緒394
13.7.1執行緒類395
13.7.2優先順序397
13.7.3信號量397
13.7.4競爭同步397
13.7.5合作同步398
13.7.6非阻塞同步401
13.7.7顯式鎖401
13.7.8評價402
13.8C#執行緒402
13.8.1基本執行緒操作402
13.8.2同步執行緒404
13.8.3評價405
13.9函數式語言中的併發405
13.9.1Multi-LISP405
13.9.2併發ML406
13.9.3F#406
13.10語句級併發407
13.10.1高性能Fortran407
小結409
文獻注記410
複習題410
習題411
程式設計練習412
 
第14章異常處理和事件處理413
14.1異常處理概述413
14.1.1基本概念414
14.1.2設計問題415
14.2C++異常處理417
14.2.1例外處理常式417
14.2.2異常綁定到處理常式418
14.2.3延續418
14.2.4其他設計選擇418
14.2.5示例419
14.2.6評價420
14.3Java異常處理420
14.3.1異常類別421
14.3.2例外處理常式421
14.3.3異常綁定到處理常式421
14.3.4其他設計選擇422
14.3.5示例423
14.3.6finally子句424
14.3.7斷言425
14.3.8評價425
14.4Python和Ruby的異常處理426
14.4.1Python426
14.4.2Ruby427
14.5事件處理概述428
14.6Java事件處理428
14.6.1Java Swing GUI組件428
14.6.2Java事件模型429
14.7C#事件處理432
小結434
文獻注記435
複習題435
習題436
程式設計練習437
 
第15章函數式程式設計語言438
15.1概述438
15.2數學函數439
15.2.1簡單函數439
15.2.2函數形式440
15.3函數式程式設計語言基礎441
15.4 個函數式程式設計語言:LISP442
15.4.1資料類型和結構442
15.4.2 個LISP解譯器442
15.5Scheme概述444
15.5.1Scheme的起源444
15.5.2Scheme解譯器444
15.5.3基本數值函數445
15.5.4函式定義445
15.5.5輸出函數447
15.5.6數位謂詞函數447
15.5.7控制流448
15.5.8清單函數448
15.5.9符號原子和清單的謂詞函數451
15.5.10Scheme函數示例452
15.5.11LET454
15.5.12Scheme語言中的尾遞迴455
15.5.13函數形式456
15.5.14代碼編寫函數457
15.6Common LISP458
15.7ML459
15.8Haskell463
15.9F#466
15.10主要命令式語言對函數式程式設計的支援469
15.11函數式語言和命令式語言的比較470
小結472
文獻注記473
複習題473
習題474
程式設計練習475
 
第16章邏輯程式設計語言477
16.1概述477
16.2謂詞演算簡介477
16.2.1命題478
16.2.2子句形式479
16.3謂詞演算和定理證明480
16.4邏輯程式設計概要481
16.5Prolog起源482
16.6Prolog基本元素483
16.6.1項483
16.6.2事實陳述483
16.6.3規則語句484
16.6.4目標語句485
16.6.5Prolog的推理過程485
16.6.6簡單的計算487
16.6.7清單結構489
16.7Prolog的缺點493
16.7.1解析順序控制493
16.7.2封閉世界假設495
16.7.3否定的問題495
16.7.4內在的局限性497
16.8邏輯程式設計應用497
16.8.1關聯式資料庫管理系統497
16.8.2專家系統498
16.8.3自然語言處理498
小結498
文獻注記499
複習題499
習題500
程式設計練習500
參考文獻501
索引510