- 内容提要
- 序 1:程序里的世界
- 序 2:最后一层表象
- 关于本书
- 致谢
- 引言:简单的本源
- 篇一:计算系统
- 第 1 章 数,以及对数据的性质的思考
- 第 2 章 逻辑
- 第 3 章 抽象
- 篇二:语言及其面临的系统
- 第 4 章 语言
- 第 5 章 从功能到系统
- 篇三:程序设计的核心思想
- 第 6 章 数据结构:顺序存储
- 第 7 章 数据结构:散列存储
- 第 8 章 执行体与它在执行过程中的环境
- 第 9 章 语法树及其执行过程
- 第 10 章 对象系统:表达、使用与模式
- 篇四:应用开发基础
- 第 11 章 应用开发的背景与成因
- 第 12 章 应用开发技术
- 第 13 章 开发视角下的工程问题
- 第 14 章 应用程序设计语言的复杂性
- 篇五:系统的基础部件
- 第 15 章 分布
- 第 16 章 依赖
- 第 17 章 消息
- 第 18 章 系统
- 篇六:系统的基本组织方法与原理
- 第 19 章 行为的组织及其抽象
- 第 20 章 领域间的组织
- 附一:主要编程范式 及其语言特性关系
- 附二:继承与混合,略谈系统的构建方式
- 附三:像大师们一样思考——从 UML 何时死掉 谈起
- 附四:VCL 已死,RAD 已死
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
14.5 语言的进化方向——从 Hello World! 中可见的事实
现在,大多数程序员都可以写出一个具有典范意义的“Hello World”程序 12 :
1 2 3 4 5 6 7 |
|
同时也会真正地、从个人意识中忘掉这样一个程序的含义以及需求不过是 13 :
1 |
|
如果仅以这段程序而言,用户的需求仅用上述代码即可实现。而 Java 或其他一些应用程序开发语言则在这样的代码中加入了更多的概念,诸如:
- 类与对象等,例如:
class HelloWorld
- 名字空间、导入导出等,例如:
System.out
以及隐式地导入System
- 方法、属性、事件,以及调用约定等,例如:
print()
- 类方法、类静态成员等,例如:
static
- 引用、值与无值,以及基本类型系统等,例如:
void
- 可见性、作用域等,例如:
public
- 字符串值、字符串类等,例如:
"Hello World"
与String args[]
- 应用入口与运行环境约束等,例如:
void main()
除了这些概念 14 ,在具体的开发环境中还会有容器、包、配置脚本、服务、模型、验证器、指示字、伪指令、分发、部署、版本容器、基线等概念,以应付不同角色的需求。
当一门语言从“实现程序功能”变成要“实现产品需求”时,其内部的语言设计思想也渐渐地变得不遵守“算法 + 数据结构 = 程序”这一经典法则。回顾“篇二:语言及其面临的系统”,我们可以将这一切的变化以及可预期的、语言进化的方向都归结为:
通过在程序组织上的结构化来解决规模问题。
- 对于功能性需求来说,部分(尤其是时间与空间的区划)可参见“第 12 章 应用开发技术”。 ↩
- 并不是所有的操作系统都提供文件访问支持,这取决于该系统对于“操作系统(的) 资源”的定义。例如 Windows 系统中可以将注册表理解为资源,而 Linux 系统中就没有注册表。 ↩
- 对于 Microsoft 产品来说,操作系统中通常会带有该运行库的一个或多个版本,但某些情况下,仍然需要应用程序自己来管理这个库的安装与维护。 ↩
- 这些弱点的表现之一是:Linux 下繁杂的产品生态(例如不同的编译、发布与维护版本),以及非功能性需求的实现过于复杂(例如安装)。 ↩
- 运行环境与应用容器两种方案,在解决问题时所处的层面是不同的。前者是从系统的视角出发来限制性地提供应用的背景,后者是从领域的视角出发来提供对应用范围的假设。 ↩
- 参见《集装箱改变世界》,Marc Levinson 著。 ↩
- 这仍然是“第 12 章 应用开发技术”所述观念的具体实践。 ↩
- 例如 Apache 采用“WWW 服务器 + 扩展库(动态链接库形式)”的形式来交付,一方面是考虑到二进制模块的执行效率,另一方面也因为编译发布是部署人员应有的技能。通常来说,Linux 用户会更多地面临这一类情况。 ↩
- 并不一定是源代码中的一个单元(unit),而是指在指定的应用开发环境中,由语言或平台决定的“可复用单位”。 ↩
- 我的意思是组件复用成为应用开发环境的一个内置技术,例如 Java beans。 ↩
- 尽管并不明显,但事实上这种隔离通常与消息机制有关。无论是从“消息”这一概念的历史还是从它在应用系统中的使用来说,它都是“体系性”相当明显的一种技术。因此本书将在“编六:系统的基本组织方法与原理”中去讨论它。 ↩
- 引自: http://www2.latech.edu/~acm/helloworld/java.html ↩
- 从语言实现上来说,其语义是
print "Hello World"
,而()
和;
等符号是具体语言的语法。 ↩ - 其大部分与“面向对象”这一语言范式有关,部分则出于应用环境、语法习惯等在语言的具体设计上的选择。 ↩
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论