编程之魂:与27位编程语言创始人对话(编程,让灵魂跟上脚步!)
分類: 图书,计算机/网络,程序设计,其他,
作者: (美)比安库齐,(美)沃登 编,闫怀志 译
出 版 社: 电子工业出版社
出版时间: 2010-4-1字数: 500000版次: 1页数: 376印刷时间: 2010-4-1开本: 大16开印次: 1纸张: 胶版纸I S B N : 9787121104985包装: 平装
内容简介本书是27位杰出的设计师与你分享他们的智慧和经验。书中以问答方式告诉为什么要创建某种编程语言、它在技术上如何开发、如何教授和学习,以及它如何顺应时代发展等。你会发现构建成功编程语言所需的思想和步骤,它广受欢迎的原因,以及如何处理程序员常见的问题。因此,如果你想深入学习设计成功编程语言的思想,本书会对你大有帮助。
作者简介Federico Biancuzzi是位自由职业采访者(freelance interviewer),他的采访在ONLamp、NewsForge、TheRegister、ArsTechnica等很多网站上在线出版。
目录推荐序
前言
1 C++
Bjarne Stroustrup
1.1 设计决策
1.2 使用语言
1.3 OOP和并发
1.4 关于未来
1.5 有关教学
2 Python
Guido van Rossum
2.1 Python方式
2.2 优秀的程序员
2.3 多种Python
2.4 权宜之计和经验
3 APL
Adin Falkoff
3.1 纸笔方式
3.2 基本原理
3.3 并行
3.4 遗留
4 Forth
Chuck Moore
4.1 Forth语言与语言设计
4.2 硬件
4.3 应用程序设计
5 BASIC
Tom Kurtz
5.1 BASIC背后的目标
5.2 编译器设计
5.3 语言和编程实践
5.4 语言设计
5.5 工作目标
6 AWK
Al Aho
6.1 算法生命周期
6.2 语言设计
6.3 Unix及其文化
6.4 文档的作用
6.5 计算机科学
6.6 培育小语言
6.7 设计一种新语言
6.8 遗留文化
6.9 变革性技术
6.10 改变世界的“位”
6.11 理论和实践
6.12 等待突破
6.13 通过实例来编程
7 Lua
Luiz Henrique de Figueiredo and Roberto Ierusalimschy
7.1 脚本的功能
7.2 经验
7.3 语言设计
8 Haskell
Simon Peyton Jones, Paul Hudak, Philip Wadler, and John Hughes
8.1 功能性团队
8.2 函数式编程之路
8.3 Haskell语言
8.4 传播(函数式)教育
8.5 形式体系和发展
9 ML
Robin Milner
9.1 可靠性定理
9.2 意义理论(译注)
9.3 超越信息学
10 SQL
Don Chamberlin
10.1 一篇开创性的有重大影响的根本性的论文
10.2 语言
10.3 反馈和演进
10.4 XQuery和XML
11 Objective-C
Brad Cox and Tom Love
11.1 Objective-C工程
11.2 培育一种语言
11.3 教育和培训
11.4 项目管理和遗留软件
11.5 Objective-C和其它语言
11.6 组件、沙子和砖
11.7 作为经济现象的质量
11.8 教育
12 Java
James Gosling
12.1 功能或者简单性
12.2 品味的问题
12.3 并发性
12.4 设计一种语言
12.5 反馈循环
13 C#
Anders Hejlsberg
13.1 语言和设计
13.2 培育一种语言
13.3 C# 238
13.4 计算机科学的未来
14 UML
Ivar Jacobson, James Rumbaugh, and Grady Booch
14.1 学习和教学
14.2 人们的角色
14.3 UML
14.4 知识
14.5 作好变革准备
14.6 使用UML
14.7 层和语言
14.8 一点可复用性
14.9 对称关系
14.10 UML
14.11 语言设计
14.12 培训开发者
14.13 创新、改进和模式
15 Perl
Larry Wall
15.1 革命性的语言
15.2 语言
15.3 社区
15.4 改进和革命
16 PostScript
Charles Geschke and John Warnock
16.1 为永恒而设计
16.2 研究和教育
16.3 长寿命接口
16.4 标准愿望
17 Eiffel
Bertrand Meyer
17.1 一个充满灵感的下午
17.2 可复用性和泛型
17.3 校对语言
17.4 管理成长和演进
后记
受访嘉宾
索引
书摘插图2 Python Guido van Rossum
2.1 Python方式
开发编程语言和开发“普通的”软件项目有什么区别?
Guido van Rossum:除了与大多数软件项目打交道以外,你最重要的用户还是程序员自己。这给语言项目提供了高级别的“元”内容。在软件项目的依存关系树中,编程语言差不多处于最底层:其他的所有东西都依赖于一种或多种语言。这也使得很难修改一种语言:不兼容的修改会影响很多“依存物”,以至于这样做通常并不可行。换句话说,一旦发布之后,所有的错误都会固定不变。C++很可能就是这种情况最极端的例子,它必須满足兼容性的需求,事实上,这种需求也许会要求20年前编写的代码仍然有效。
您如何调试一种语言呢?
Guido:你不用调试它。在语言设计领域中,敏捷开发方法学并没有什么意义:在该语言稳定之前,很少有人会用它,而且你在语言定义中找不着bug,直到你已经有很多的用户为止,而此时你要修改已经为时太晚。当然,实现中可能会有很多内容需要调试,比如所有老程序,不过语言设计自身大多要求提前仔细设计,因为bug的成本极高。
对于应该何时将某个特性扩展到库中,或者它何时需要核心语言的支持.您是如何做出决定的?
Guido:从历史来看,我对此已经有一个很好的答案。我很早就注意到,每个人都想把自己喜欢的特性添加到语言中,而且大多数人都对语言设计相对没有经验。每个人都在提议“把这个加到语言中”,“加一条实现某种功能的语句”在很多情况下,答案是“好的,通过编写这样的两、三行代码,你就可以实现那种功能或者极为类似的功能,而且它也没那么难”。你可以使用词典,也可以将列表、元组数组和正则表达式组合起来,或者是编写一些元类——等等这一切事情。我对这个问题的最初答案甚至可能是来自Linus,他好像也有类似的理念。
……
书摘与插图