出版時間:2011-1 出版社:清華大學出版社 作者:Robert W.Sebesta 頁數(shù):563 譯者:徐明星,鄔曉鈞
Tag標簽:無
前言
程序設(shè)計語言是計算機教學的基礎(chǔ)課程。大部分的高等院校程序設(shè)計語言教材旨在講解語法形式,講解如何寫出讓編譯器接受的語句,以及這些語句是如何被編譯器理解的。學生很容易將程序設(shè)計語言當作一門特殊的外語來學習,將編程當作是句型練習,編程過程就是語言翻譯的過程一即將頭腦中的“內(nèi)部言語”翻譯成符合某種程序設(shè)計語言語法的語句。當面對以練習語法為主要目的習題時,這樣的翻譯過程容易完成,而當面對復雜的綜合性習題或者要編程實現(xiàn)算法時,學生往往就會覺得難以下手。導致這種情況的根本原因是學生的思維沒有上升到計算機解題的思維。程序設(shè)計語言是一種人造語言,它與漢語、英語、法語等自然語言存在著很大的不同。程序設(shè)計語言是在一定的設(shè)計思想指導下,權(quán)衡多種因素,精心為計算機定義的。程序設(shè)計語言的語法和語義只是外在的表現(xiàn),程序設(shè)計語言的本質(zhì)是解決應用領(lǐng)域問題的方法與工具。語言既是思維的表達,也是思維的工具。如果局限于程序設(shè)計語言定義的語法和語義,不能運用語言工具來輔助自己的思維,必然會限制用程序設(shè)計語言來解決實際問題的能力。本書并不是介紹某一種具體的程序設(shè)計語言所蘊涵的計算機解題原理,而是直接解釋說明一般性原理,并介紹這些原理在不同程序設(shè)計語言中的實現(xiàn),比較不同語言實現(xiàn)的優(yōu)劣。這是一種從本質(zhì)到現(xiàn)象的論述方式,它使讀者更關(guān)注于程序設(shè)計語言原理本身,為今后深入理解和掌握具體的程序設(shè)計語言,選擇更合適的程序設(shè)計語言來解決具體問題,乃至于創(chuàng)造實現(xiàn)新的程序設(shè)計語言都打下扎實的基礎(chǔ)。
內(nèi)容概要
《世界著名計算機教材精選:程序設(shè)計語言概念(第9版)》從為什么學習程序設(shè)計語言入手,深入細致地講解了命令式語言的主要結(jié)構(gòu)及其設(shè)計與實現(xiàn),內(nèi)容涉及變量、數(shù)據(jù)類型、表達式和賦值語句、控制語句、子程序、數(shù)據(jù)抽象機制、支持面向?qū)ο蟪绦蛟O(shè)計(繼承和動態(tài)方法綁定)、并發(fā)和異常處理等方面。最后兩章介紹了函數(shù)式程序設(shè)計語言和邏輯程序設(shè)計語言?! 妒澜缰嬎銠C教材精選:程序設(shè)計語言概念(第9版)》內(nèi)容豐富,剖析透徹,被美國和加拿大多所高等院校采用作為教材?!妒澜缰嬎銠C教材精選:程序設(shè)計語言概念(第9版)》既可用做高等院校計算機及相關(guān)專業(yè)本科生程序設(shè)計語言課程的教材和參考書,也可供程序設(shè)計人員參考。
作者簡介
作者:(美國)塞巴斯塔(Robert W.Sebesta) 譯者:徐明星 鄔曉鈞
書籍目錄
第1章 預備知識1.1 學習程序設(shè)計語言原理的原因1.2 程序設(shè)計領(lǐng)域1.2.1 科學應用1.2.2 商務應用1.2.3 人工智能1.2.4 系統(tǒng)程序設(shè)計1.2.5 網(wǎng)絡軟件1.3 語言評價標準1.3.1 可讀性1.3.2 可寫性1.3.3 可靠性1.3.4 代價1.4 影響語言設(shè)計的因素1.4.1 計算機體系結(jié)構(gòu)1.4.2 程序設(shè)計方法學1.5 程序設(shè)計語言的分類1.6 語言設(shè)計中的權(quán)衡1.7 實現(xiàn)方法1.7.1 編譯1.7.2 完全解釋1.7.3 混合實現(xiàn)系統(tǒng)1.7.4 預處理器1.8 編程環(huán)境小結(jié)復習題習題第2章 主要程序設(shè)計語言的發(fā)展2.1 Zuse的Plankalkul語言2.1.1 歷史背景2.1.2 語言概述2.2 最少硬件的程序設(shè)計:偽代碼2.2.1 Short Code語言2.2.2 Speedcoding系統(tǒng)2.2.3 UNIVAC“編譯系統(tǒng)”2.2.4.相關(guān)工作2.3 IBM704.計算機與Fortran語言2.3.1 歷史背景2.3.2 設(shè)計過程2.3.3 Fortran I概述2.3.4 Fortran II2.3.5 Fortran IV、77、90、95和20032.3.6 評價2.4 函數(shù)式程序設(shè)計:LISP語言2.4.1 人工智能的起源和表處理2.4.2 LISP語言的設(shè)計過程2.4.3 語言概述2.4.4 評價2.4.5 LISP的兩種后代語言2.4.6 相關(guān)語言2.5 邁向成熟的第一步:ALGOL602.5.1 歷史背景2.5.2 早期設(shè)計過程2.5.3 ALGOL58概述2.5.4 對ALGOL58報告的響應2.5.5 ALGOL60的設(shè)計過程2.5.6 ALGOL60概述2.5.7 評價2.6 商務記錄計算機化:COBOL語言2.6.1 歷史背景2.6.2 FLOW-MATIC語言2.6.3 COBOL語言的設(shè)計過程2.6.4 評價2.7 分時處理的開始:BASIC語言2.7.1 設(shè)計過程2.7.2 語言概述2.7.3 評價2.8 滿足所有人的需要:PL/I2.8.1 歷史背景2.8.2 設(shè)計過程2.8.3 語言概述2.8.4 評價2.9 兩種早期的動態(tài)語言:APL和SNOBOL2.9.1 APL語言的起源與特點2.9.2 SNOBOL語言的起源與特點2.10 數(shù)據(jù)抽象的開始SIMULA672.10.1 設(shè)計過程2.10.2 語言概述2.11 正交設(shè)計:ALGOL682.11.1 設(shè)計過程2.11.2 語言概述2.11.3 評價2.12 ALGOL系列語言的早期后代語言2.12.1 為簡單性而設(shè)計:Pascal語言2.12.2 可移植的系統(tǒng)語言:C語言2.13 基于邏輯的程序設(shè)計:Prolog語言2.13.1 設(shè)計過程2.13.2 語言概述2.13.3 評價2.14 歷史上規(guī)模最大的設(shè)計工作:Ada語言2.14.1 歷史背景2.14.2 設(shè)計過程2.14.3 語言概述2.14.4 評價2.14.5 Ada952.15 面向?qū)ο蟮某绦蛟O(shè)計:Smalltalk2.15.1 設(shè)計過程2.15.2 語言概述2.15.3 評價2.16 結(jié)合命令式和面向?qū)ο蟮奶匦裕篊++2.16.1 設(shè)計過程2.16.2 語言概述2.16.3 評價2.16.4 一種相關(guān)語言:Eiffe2.16.5 另一種相關(guān)語言:Delphi2.17 基于命令式的面向?qū)ο笳Z言:Java2.17.1 設(shè)計過程2.17.2 語言概述2.17.3 評價2.18 腳本語言2.18.1 Perl的起源與特點2.18.2 JavaScript的起源與特點2.18.3 PHP的起源與特點2.18.4 Python的起源與特點2.18.5 Ruby的起源與特點2.18.6 Lua的起源與特點2.19 一種新千年的基于C的語言:C#2.19.1 設(shè)計過程2.19.2 語言概述2.19.3 評價2.20 標記與程序設(shè)計混合的語言2.20.1 XSLT2.20.2.ISP小結(jié)文獻注釋復習題習題程序設(shè)計練習訪談:用戶設(shè)計與語言設(shè)計第3章 描述語法和語義3.1 概述3.2 描述語法的普遍問題3.2.1 語言識別器3.2.2 語言生成器3.3 描述語法的形式化方法3.3.1 巴科斯.諾爾范式和上下文無關(guān)文法3.3.2 擴展的BNF3.3.3 文法與識別器3.4 屬性文法3.4.1 靜態(tài)語義3.4.2 基本概念3.4.3 屬性文法定義3.4.4 本質(zhì)屬性3.4.5 屬性文法的例子3.4.6 計算屬性值3.4.7 評價3.5 描述程序的意義動態(tài)語義3.5.1 操作語義3.5.2 指稱語義3.5.3 公理語義小結(jié)文獻注釋復習題習題第4章 詞法分析和語法分析4.1 概述4.2 詞法分析4.3 語法分析問題4.3.1 語法分析概述4.3.2 自項向下的語法分析器4.3.3 自底向上的語法分析器4.3.4 語法分析的復雜度4.4 遞歸下降的語法分析4.4.1 遞歸下降的語法分析過程4.4.2 LL文法類4.5 自底向上的語法分析4.5.1 自底向上語法分析器的分析問題4.5.2 移進-歸約算法4.5.3 LR語法分析器小結(jié)復習題習題程序設(shè)計練習第5章 名字、綁定和作用域5.1 引言5.2 名字5.2.1 設(shè)計問題5.2.2 名字形式5.2.3 特殊字5.3 變量5.3.1 名字5.3.2 地址5.3.3 類型5.3.4 數(shù)值5.4 綁定的概念5.4.1 屬性與變量綁定5.4.2 綁定類型5.4.3 存儲綁定和生存期5.5 作用域5.5.1 靜態(tài)作用域5.5.2 塊5.5.3 聲明的次序5.5.4 全局作用域5.5.5 靜態(tài)作用域評估5.5.6 動態(tài)作用域5.5.7 動態(tài)作用域評估5.6 作用域和生存期5.7 引用環(huán)境5.8 命名常量小結(jié)復習題問題集編程題訪談:腳本語言以及其他靈活解決方案的例子第6章 數(shù)據(jù)類型6.1 引言6.2 基本數(shù)據(jù)類型6.2.1 數(shù)值類型6.2.2 布爾類型6.2.3 字符類型6.3 字符串類型6.3.1 設(shè)計問題6.3.2 字符串及其操作6.3.3 字符串長度的設(shè)計選項6.3.4 評估6.3.5 字符串類型的實現(xiàn)6.4 用戶定義的序數(shù)類型6.4.1 枚舉類型6.4.2 子界類型6.4.3 用戶定義的有序類型的實現(xiàn)6.5 數(shù)組類型6.5.1 設(shè)計問題6.5.2 數(shù)組和索引6.5.3 下標的綁定和數(shù)組的種類6.5.4 數(shù)組初始化6.5.5 數(shù)組操作6.5.6 矩形數(shù)組和不規(guī)則數(shù)組6.5.7 切片6.5.8 評估6.5.9 數(shù)組類型的實現(xiàn)6.6 關(guān)聯(lián)數(shù)組6.6.1 結(jié)構(gòu)和操作6.6.2 關(guān)聯(lián)數(shù)組的實現(xiàn)6.7 記錄類型6.7.1 記錄的定義6.7.2 紀錄域引用6.7.3 記錄操作6.7.4 評估6.7.5 錄類型的實現(xiàn)6.8 聯(lián)合類型6.8.1 設(shè)計問題6.8.2 判別式聯(lián)合與自由聯(lián)合6.8.3 Ada的聯(lián)合類型6.8.4 評估6.8.5 聯(lián)合類型的實現(xiàn)6.9 指針和引用類型6.9.1 設(shè)計問題6.9.2 指針操作6.9.3 指針的相關(guān)問題6.9.4 Ada語言中的指針6.9.5 C和C++中的指針6.9.6 引用類型……第7章 表達式與賦值語句第8章 語句輯控制結(jié)構(gòu)第9章 子程序第10章 實現(xiàn)子程序第11章 抽象數(shù)據(jù)類型與封裝結(jié)構(gòu)第12章 面向?qū)ο蟪绦蛟O(shè)計的支持第13章 描述語法和語義第14章 異常處理和事件數(shù)理第15章 函數(shù)式程序設(shè)計語言第16章 邏輯程序設(shè)計語言參考文獻
章節(jié)摘錄
插圖:增加表達思想的能力。一般認為,人們思考問題的深度受到他們思考時所使用語言的表達能力的影響。那些對自然語言理解膚淺的人,思維復雜度也有限,特別是在抽象的深度上。換言之,人們難以將口頭或書面無法表達的東西概念化。程序員在開發(fā)軟件的過程中同樣受到這一限制。他們開發(fā)軟件所用的語言對他們所用的控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和抽象層次也造成限制,從而也同樣限制了他們能夠構(gòu)造的算法形式。了解更多的程序設(shè)計語言的特性能夠在軟件開發(fā)時減少這些限制。程序員學會新的語言結(jié)構(gòu)后,能夠提升軟件開發(fā)時思維過程的層次??赡苡腥苏J為,了解其他語言的功能對一個被要求使用不具有這一功能的語言進行開發(fā)的程序員沒有幫助。然而這種看法并不成立,因為通常來說語言的結(jié)構(gòu)能夠被不直接支持這些結(jié)構(gòu)的其他語言模擬出來。例如,一個了解Perl語言(Wall等,2000)中關(guān)聯(lián)數(shù)組的結(jié)構(gòu)和用法的C語言程序員,可能會用C語言設(shè)計出模擬關(guān)聯(lián)數(shù)組的結(jié)構(gòu)。換句話說,對程序設(shè)計語言概念的學習能夠使程序員對重要的語言特性與結(jié)構(gòu)有充分的理解,鼓勵程序員去使用它們,甚至在所用的語言不直接支持這種特性或結(jié)構(gòu)的情況下。擴充選擇合適語言的背景知識。許多專業(yè)的程序員沒有受過多少正規(guī)的計算機科學教育,而是通過自學或單位內(nèi)部培訓。這類培訓通常只教授與公司當前項目直接相關(guān)的一兩種語言。其他許多程序員在很久以前受過正規(guī)的培訓,他們那時所學的語言已經(jīng)不再使用,現(xiàn)在程序設(shè)計語言中許多特性當時知道的人并不多。
編輯推薦
《程序設(shè)計語言概念(第9版)》:世界著名計算機教材精選
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載