语言、思想与机器
一、机器的思想:
机器本身是人类思想的结晶。
报告指出:
(1)计算机应采用二进制, 不但数据采用二进制, 程序指令也采用二进制;
(2)计算机由5部分构成: 运算器、 控制器、 存储器、 输入和输出装置;
(3)程序由指令组成并和数据一起存放在存储器中, 机器按程序指定的逻辑顺序, 把指令从存储器中读出来并逐条执行, 从而自动完成程序描述的处理工作, 即「存储程序」思想。
冯诺依曼模型包含三大思想:
1、机器组成思想;
2、软硬结合思想
3、指令执行思想;
二、语言与机器
按照我一个朋友的说法,编程语言始终是计算机领域中最本质的东西之一,特别是在计算机工程(而不是科学)领域中,“用什么形式来控制机器”始终是一个核心问题。
【基本观点】
1. 编程语言与软件系统一样,处于不同层次。层次越高,对人越友好,控制机器的能力越差;层次越低,控制机器的能力越强。选择开发语言时,根据需要解决的问题选择合适的语言层次,是非常必要的。
2. 什么是低层语言?通常对这个问题有很多不同的答案。我个人对于低层语言有以下一些描述:
1) 直接反映机器行为,而不是人的行为;
2) 强调对机器的控制能力,兵器能够利用这种控制能力最大限度优化操作;
3) 存在到机器语言的清晰映射关系;
4) 能够满足系统编程工作的需求。
所谓系统编程,在我看来,就是值得为优化性能(这里不仅仅指速度性能)而付出高昂代价的编程工作。有个德国人说得更加直接了当:“所谓系统编程,就是那些CPU时间比程序员的时间更重要的工作。” 显然这不是一个很学术的描述,甚至也不是一个让人感到很愉快的说法,但是确实是一个很好的描述。
三、机器思想语言—表达冯诺依曼执行思想的语言—对机器的直接控制语言
过程化(命令式)编程
过程化编程,也被称为命令式编程,应该是最原始的、也是我们最熟悉的一种传统的编程方式。从本质上讲,它是“冯.诺伊曼机“运行机制的抽象,它的编程思维方式源于计算机指令的顺序排列。
(也就是说:过程化语言模拟的是计算机机器的系统结构,而并不是基于语言的使用者的个人能力和倾向。这一点我们应该都很清楚,比如:我们最早曾经使用过的单片机的汇编语言。)
四、人类思想的编程语言
软件开发的核心问题就是如何从概念上对一个复杂的业务系统进行建模。
所有软件活动包括根本任务——打造由抽象软件实体构成的复杂概念结构,次要任务 ——使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。
为了应对软件的复杂性,人类创建了高级语言。
五、思想的转换工具—解释器(编译器)
将一种解决问题的思想转换为另一种解决问题的思想。
编译器(解释器)使人类解决问题的思维从机器思想转换为高级思想。使人类能够使用高级思想来解决编程问题。
机器思想——》编译器—-〉高级思想。
高级思想语言解决方案——》编译器————〉机器思想解决方案。
六、人类解决问题的思想与编程语言。
还原论,熵、抽象
还原论代表问题的求解;
熵代表复杂性。
软件的分解-编程语言自带分解功能
面向对象:类
面向结构:结构体、函数。