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