搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
无库存
程序设计语言原理(原书第12版)
0.00     定价 ¥ 229.00
泸西县图书馆
此书还可采购1本,持证读者免费借回家
  • ISBN:
    9787111696216
  • 作      者:
    [美]罗伯特·W.塞巴斯塔
  • 译      者:
    徐宝文,王子元,周晓宇,等
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2022-04-01
收藏
荐购
作者简介

罗伯特·W. 塞巴斯塔(Robert W. Sebesta) 科罗拉多大学斯普林斯分校计算机科学系荣休副教授,拥有40多年计算机科学课程教学经验,研究兴趣包括程序设计语言的设计和评估以及Web程序设计。

展开
目录

译者序<br/>第12版的变化<br/>前言<br/>致谢<br/>第1章 预备知识1<br/>1.1 掌握程序设计语言概念的必要性1<br/>1.2 程序设计领域3<br/>1.2.1 科学计算应用3<br/>1.2.2 商业应用3<br/>1.2.3 人工智能4<br/>1.2.4 Web软件4<br/>1.3 语言评价标准4<br/>1.3.1 可读性5<br/>1.3.2 可写性9<br/>1.3.3 可靠性9<br/>1.3.4 成本10<br/>1.4 影响语言设计的因素11<br/>1.4.1 计算机体系结构11<br/>1.4.2 程序设计方法学13<br/>1.5 程序设计语言分类14<br/>1.6 语言设计中的权衡14<br/>1.7 实现方法15<br/>1.7.1 编译16<br/>1.7.2 纯解释18<br/>1.7.3 混合实现系统19<br/>1.7.4 预处理程序19<br/>1.8 程序设计环境20<br/>小结20<br/>复习题21<br/>习题21<br/>第2章 主要程序设计语言发展简史23<br/>2.1 Zuse研制的Plankalk&uuml;l语言23<br/>2.1.1 历史背景23<br/>2.1.2 语言概述25<br/>2.2 伪代码25<br/>2.2.1 短码26<br/>2.2.2 快码26<br/>2.2.3 UNIVAC编译系统27<br/>2.2.4 相关工作27<br/>2.3 IBM 704和Fortran27<br/>2.3.1 历史背景27<br/>2.3.2 设计过程28<br/>2.3.3 Fortran I概述28<br/>2.3.4 Fortran II29<br/>2.3.5 Fortran IV、77、90、95、2003和200829<br/>2.3.6 评价30<br/>2.4 函数式程序设计语言:LISP31<br/>2.4.1 人工智能的开端和列表处理31<br/>2.4.2 LISP的设计过程32<br/>2.4.3 语言概述32<br/>2.4.4 评价33<br/>2.4.5 LISP的两种后继语言34<br/>2.4.6 相关语言34<br/>2.5 迈向成熟的第一步:ALGOL 6035<br/>2.5.1 历史背景35<br/>2.5.2 早期设计过程35<br/>2.5.3 ALGOL 58概述36<br/>2.5.4 ALGOL 58报告的接受度37<br/>2.5.5 ALGOL 60的设计过程37<br/>2.5.6 ALGOL 60概述37<br/>2.5.7 评价38<br/>2.6 商业处理语言:COBOL39<br/>2.6.1 历史背景39<br/>2.6.2 FLOW-MATIC40<br/>2.6.3 COBOL的设计过程40<br/>2.6.4 评价40<br/>2.7 分时处理的开始:Basic42<br/>2.7.1 设计过程43<br/>2.7.2 语言概述43<br/>2.7.3 评价43<br/>2.8 满足所有人的需求:PL/I46<br/>2.8.1 历史背景47<br/>2.8.2 设计过程47<br/>2.8.3 语言概述48<br/>2.8.4 评价48<br/>2.9 两种早期的动态语言:APL和SNOBOL49<br/>2.9.1 APL的起源及特征49<br/>2.9.2 SNOBOL的起源和特征50<br/>2.10 数据抽象的开端:SIMULA 6750<br/>2.10.1 设计过程50<br/>2.10.2 语言概述50<br/>2.11 正交设计:ALGOL 6850<br/>2.11.1 设计过程51<br/>2.11.2 语言概述51<br/>2.11.3 评价51<br/>2.12 ALGOL系列语言的早期继承者52<br/>2.12.1 简洁的设计:Pascal52<br/>2.12.2 一个轻便的系统语言:C53<br/>2.13 基于逻辑的程序设计:Prolog55<br/>2.13.1 设计过程55<br/>2.13.2 语言概述55<br/>2.13.3 评价56<br/>2.14 历史上规模最大的语言设计:Ada56<br/>2.14.1 历史背景56<br/>2.14.2 设计过程56<br/>2.14.3 语言概述57<br/>2.14.4 评价58<br/>2.14.5 Ada 95和Ada 200558<br/>2.15 面向对象程序设计:Smalltalk59<br/>2.15.1 设计过程59<br/>2.15.2 语言概述60<br/>2.15.3 评价60<br/>2.16 结合命令式和面向对象的特性:C++61<br/>2.16.1 设计过程61<br/>2.16.2 语言概述62<br/>2.16.3 评价62<br/>2.16.4 Swift:Objective-C的替代品62<br/>2.16.5 另一个相关语言:Delphi63<br/>2.17 基于命令式的面向对象语言:Java63<br/>2.17.1 设计过程63<br/>2.17.2 语言概述64<br/>2.17.3 评价65<br/>2.18 脚本语言66<br/>2.18.1 Perl的起源与特点66<br/>2.18.2 JavaScript的起源与特点67<br/>2.18.3 PHP的起源与特点69<br/>2.18.4 Python的起源与特点69<br/>2.18.5 Ruby的起源与特点70<br/>2.19 .NET旗帜语言:C#70<br/>2.19.1 设计过程70<br/>2.19.2 语言概述71<br/>2.19.3 评价71<br/>2.20 混合标记程序设计语言72<br/>2.20.1 XSLT72<br/>2.20.2 JSP73<br/>小结74<br/>文献注记74<br/>复习题74<br/>习题76<br/>程序设计练习76<br/>第3章 语法和语义描述77<br/>3.1 概述77<br/>3.2 语法描述的一般问题78<br/>3.2.1 语言识别器78<br/>3.2.2 语言生成器79<br/>3.3 语法描述的形式化方法79<br/>3.3.1 Backus-Naur范式与上下文无关文法79<br/>3.3.2 扩展的BNF范式88<br/>3.3.3 文法和识别器90<br/>3.4 属性文法90<br/>3.4.1 静态语义90<br/>3.4.2 基本概念91<br/>3.4.3 属性文法的定义91<br/>3.4.4 内在属性91<br/>3.4.5 属性文法示例91<br/>3.4.6 计算属性值93<br/>3.4.7 评价94<br/>3.5 描述程序的含义:动态语义94<br/>3.5.1 操作语义95<br/>3.5.2 指称语义97<br/>3.5.3 公理语义100<br/>小结110<br/>文献注记110<br/>复习题110<br/>习题111<br/>第4章 词法和语法分析115<br/>4.1 概述115<br/>4.2 词法分析116<br/>4.3 语法分析问题122<br/>4.3.1 语法分析基础122<br/>4.3.2 自顶向下的语法分析器123<br/>4.3.3 自底向上的语法分析器124<br/>4.3.4 语法分析的复杂度124<br/>4.4 递归下降的语法分析124<br/>4.4.1 递归下降的语法分析过程124<br/>4.4.2 LL文法类129<br/>4.5 自底向上的语法分析131<br/>4.5.1 自底向上的语法分析器的语法分析问题131<br/>4.5.2 移进-归约算法133<br/>4.5.3 LR语法分析器133<br/>小结137<br/>复习题138<br/>习题138<br/>程序设计练习139<br/>第5章 名字、绑定与作用域140<br/>5.1 概述140<br/>5.2 名字140<br/>5.2.1 设计问题140<br/>5.2.2 名字形式141<br/>5.2.3 特殊单词141<br/>5.3 变量142<br/>5.3.1 名字142<br/>5.3.2 地址142<br/>5.3.3 类型143<br/>5.3.4 值143<br/>5.4 绑定的概念143<br/>5.4.1 属性到变量的绑定144<br/>5.4.2 绑定类型144<br/>5.4.3 存储绑定和生存期147<br/>5.5 作用域149<br/>5.5.1 静态作用域149<br/>5.5.2 分程序150<br/>5.5.3 声明顺序153<br/>5.5.4 全局作用域153<br/>5.5.5 对静态作用域的评价156<br/>5.5.6 动态作用域156<br/>5.5.7 对动态作用域的评价157<br/>5.6 作用域和生存期157<br/>5.7 引用环境158<br/>5.8 有名常量159<br/>小结161<br/>复习题161<br/>习题162<br/>程序设计练习165<br/>第6章 数据类型167<br/>6.1 概述167<br/>6.2 基本数据类型168<br/>6.2.1 数值类型168<br/>6.2.2 布尔类型170<br/>6.2.3 字符类型171<br/>6.3 字符串类型171<br/>6.3.1 设计问题171<br/>6.3.2 字符串及其运算171<br/>6.3.3 字符串长度选项173<br/>6.3.4 评价173<br/>6.3.5 字符串类型的实现174<br/>6.4 枚举类型175<br/>6.4.1 设计问题175<br/>6.4.2 设计175<br/>6.4.3 评价176<br/>6.5 数组类型177<br/>6.5.1 设计问题177<br/>6.5.2 数组和索引178<br/>6.5.3 下标绑定和数组的种类179<br/>6.5.4 数组初始化180<br/>6.5.5 数组运算181<br/>6.5.6 矩阵数组和锯齿形数组182<br/>6.5.7 切片182<br/>6.5.8 评价183<br/>6.5.9 数组类型的实现183<br/>6.6 关联数组185<br/>6.6.1 结构与运算185<br/>6.6.2 关联数组的实现186<br/>6.7 记录类型186<br/>6.7.1 记录的定义187<br/>6.7.2 记录中字段的引用187<br/>6.7.3 评价188<br/>6.7.4 记录类型的实现188<br/>6.8 元组类型189<br/>6.9 列表类型190<br/>6.10 联合类型192<br/>6.10.1 设计问题192<br/>6.10.2 判别式与自由联合类型192<br/>6.10.3 F#的联合类型193<br/>6.10.4 评价193<br/>6.10.5 联合类型的实现194<br/>6.11 指针和引用类型194<br/>6.11.1 设计问题194<br/>6.11.2 指针运算194<br/>6.11.3 指针的相关问题195<br/>6.11.4 C和C++中的指针196<br/>6.11.5 引用类型198<br/>6.11.6 评价199<br/>6.11.7 指针和引用类型的实现199<br/>6.12 可选类型203<br/>6.13 类型检查203<br/>6.14 强类型204<br/>6.15 类型等价205<br/>6.16 理论和数据类型208<br/>小结209<br/>文献注记210<br/>复习题210<br/>习题211<br/>程序设计练习212<br/>第7章 表达式与赋值语句214<br/>7.1 概述214<br/>7.2 算术表达式214<br/>7.2.1 运算符求值顺序215<br/>7.2.2 运算分量求值顺序219<br/>7.3 重载运算符221<br/>7.4 类型转换222<br/>7.4.1 表达式中的强制转换222<br/>7.4.2 显式类型转换223<br/>7.4.3 表达式错误224<br/>7.5 关系表达式和布尔表达式224<br/>7.5.1 关系表达式224<br/>7.5.2 布尔表达式225<br/>7.6 短路求值226<br/>7.7 赋值语句227<br/>7.7.1 简单赋值227<br/>7.7.2 条件赋值227<br/>7.7.3 复合赋值运算符227<br/>7.7.4 一元赋值运算符228<br/>7.7.5 赋值表达式229<br/>7.7.6 多重赋值229<br/>7.7.7 函数式程序设计语言中的赋值230<br/>7.8 混合方式赋值230<br/>小结231<br/>复习题231<br/>习题232<br/>程序设计练习233<br/>第8章 语句级控制结构234<br/>8.1 概述234<br/>8.2 选择语句235<br/>8.2.1 二路选择语句235<br/>8.2.2 多路选择语句238<br/>8.3 重复语句244<br/>8.3.1 计数控制循环245<br/>8.3.2 逻辑控制循环248<br/>8.3.3 用户定义的循环控制机制249<br/>8.3.4 基于数据结构的迭代250<br/>8.4 无条件分支253<br/>8.5 保护命令254<br/>8.6 结论256<br/>小结256<br/>复习题257<br/>习题257<br/>程序设计练习258<br/>第9章 子程序260<br/>9.1 概述260<br/>9.2 子程序基础260<br/>9.2.1 子程序的一般性质260<br/>9.2.2 基本定义260<br/>9.2.3 参数262<br/>9.2.4 过程与函数265<br/>9.3 子程序的设计问题265<br/>9.4 局部引用环境266<br/>9.4.1 局部变量266<br/>9.4.2 嵌套子程序267<br/>9.5 参数传递方法267<br/>9.5.1 参数传递的语义模型268<br/>9.5.2 参数传递的实现模型268<br/>9.5.3 参数传递方法的实现272<br/>9.5.4 常用语言的参数传递方法272<br/>9.5.5 参数类型检查274<br/>9.5.6 多维数组参数276<br/>9.5.7 设计考量277<br/>9.5.8 参数传递实例277<br/>9.6 子程序作为参数280<br/>9.7 子程序间接调用281<br/>9.8 函数设计问题282<br/>9.8.1 函数的副作用283<br/>9.8.2 返回值类型283<br/>9.8.3 返回值的个数283<br/>9.9 重载子程序283<br/>9.10 泛型子程序284<br/>9.10.1 C++泛型函数285<br/>9.10.2 Java 5.0泛型方法286<br/>9.10.3 C# 2005泛型方法287<br/>9.10.4 F#泛型函数288<br/>9.11 用户定义的重载运算符288<br/>9.12 闭包289<br/>9.13 协同程序290<br/>小结292<br/>复习题293<br/>习题294<br/>程序设计练习295<br/>第10章 子程序实现297<br/>10.1 调用和返回的一般语义297<br/>10.2 “简单”子程序的实现297<br/>10.3 具有栈动态局部变量的子程序实现299<br/>10.3.1 更复杂的活动记录299<br/>10.3.2 不含递归的例子301<br/>10.3.3 递归302<br/>10.4 嵌套子程序304<br/>10.4.1 基础304<br/>10.4.2 静态链305<br/>10.5 分程序309<br/>10.6 动态作用域的实现310<br/>10.6.1 深层访问310<br/>10.6.2 浅层访问311<br/>小结312<br/>复习题312<br/>习题313......

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录

点击获取验证码
登录