计算机与计算机语言
什么是计算机?
- 计算机是高速计算的计算器,具有数值计算、逻辑计算、记忆和功能
- 计算机的每一个动作都由计算机语言编写的程序控制
什么是计算机语言?
计算机语言是人与计算机通讯的媒介,由一些字符和语法规则组成
计算机语言分类
机器语言
二进制
汇编语言
一种编程语言,实质与机器语言相同,都是直接对硬件编写指令,只不过是一组英文简写
为什么是英文简写?美国人发明的计算机
高级语言(高级程序设计语言)
一种编程语言,不能被直接识别,需要转换
转换方式分类
解释类(运行时翻译,直译)
“同声翻译”,翻译一句运行一句,不能生成独立的可执行文件,不能脱离翻译器,但灵活,可动态调整修改
编译类(书:《编译原理》)
先翻译成目标代码(机器语言),再执行,可以脱离语言环境,比较方便。
编译的五个阶段
-
词法分析(生成词法称谓)
- 核心任务:根据构词规则扫描字符序列,识别单词,对单词给出定性、定长的处理; 例如: sum = 2 + 3;
- 词法分析器Lexer,也叫扫描器Scanner;通常是个函数,由语法分析器调用
-
语法分析(生成语法树)
- 语法分析器对词法分析生成的单词组合一下
-
语义检查和中间代码生成(生成中间代码)
-
代码优化(时空效率优化:运行时间更短,占用空间更少)
-
优化的基础是数据流分析和控制流分析;
-
代码优化技术:删除多余运算,循环不变代码外提,强度削弱,变换循环控制条件,合并已知量与复写传播,以及删除无用赋值
-
按优化设计的程序范围分类
- 局部优化
局部优化在程序的基本块内进行; 基本块:单一入口出口,且为程序的第一条与最后一条语句。 基本块内语句顺序执行,凡是未包含在基本块中的语句都是程序控制流不可到达的语句直接删除
-
循环优化
-
全局优化
-
-
目标代码生成
计算机程序与程序设计语言
什么是计算机程序?
计算机程序是一组指令的集合,是个工具,由程序设计语言编写
什么是程序设计语言?
语言的基础是记号和规则
语言是根据规则由记号构成的记号串;
程序设计语言涉及语法(记号的组合规律)、语义、语用;
语言成分:数据、运算、控制、传输;
特性
- 心理特性:局部性、顺序性、简洁性、歧义性、传统性
- 工程特性:可移植性,开发工具的可利用性,软件的可重用性、可维护性
- 技术特性:支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护
分类
-
第一代机器语言,背景:计算机刚诞生,而且计算机贵
-
第二代汇编语言,背景:计算机大幅降价,需求变多,开始考虑使用程序解决复用问题
-
第三代高级语言
-
分类
-
应用角度
- 基础语言
- 结构化语言,如C:具有很强的过程结构和数据结构能力
- 专用语言
-
从描述客观系统分类
-
面向过程:“数据结构+算法”的范式构成
-
面向对象:“对象+消息”的范式构成
- 对象间的消息通讯通过函数调用的形式
-
-
-
感慨:我接触的语言都是结构化的语言(C、Java、JavaScript),其中主要接触面向对象类型的(Java、JavaScript),而JavaScript又不同于传统的面向对象(OO)的语言,它是基于原型链的。
-
-
第四代非过程化语言
- 特点:面向应用,要啥给啥,不用管过程
- 还未真正出现,但有类似的语言,如数据库查询(SQL)和应用程序生成器