语言基础再谈
语言基础再谈
- 一、编程语言的演变
- 1.1 机器语言(machine language)
- 1.2 符号语言(symbolic language)
- 1.3 高级语言(high-level language)
- 1.4 第四代语言(fourth generation language)
- 1.4.1 查询语言(Query language)
- 1.4.2 报告生成器(Report generator)
- 1.4.3 图形语言(Graphical language)
- 1.4.4 应用程序构建器(Application Builder)
- 1.4.5 形式化规范说明语言(Formal specification language)
- 1.5 自然语言(natural language)
- 二、搭建并运行程序
- 2.1 源程序(source prgram)
- 2.2 编译程序(compiler)
- 2.3 解释程序(interpreter)
- 2.4 链接程序(linker)
- 2.5 翻译器(translator)
- 三、编程语言种类
- 3.1 过程化语言(procedural language)
- 3.2 面向对象语言(object-oriented language)
- 3.3 函数型语言(functional language)
- 3.4 专用语言(special language)
- 3.5 说明性语言(declarative language)
一、编程语言的演变
1.1 机器语言(machine language)
- 由0、1二进制组成(binary)
- 是机器可以唯一识别的语言,别的语言最终都要转成机器语言
- 缺点
- 难以阅读
- 工作量大且容易犯错
- 对编程者要求极大,因为需要了解电脑硬件和指令程序
- 可移植性差(poor portability)
1.2 符号语言(symbolic language)
- 用一些符号和助记符(symbols and mnemonics)来代替机器语言中的某些指令
- 符号语言也叫汇编语言(assembly language)
- 用符号语言写的程序需要被翻译为汇编语言才能被机器识别,翻译的过程由符号语言完成
- 缺点
- 与机器语言仍然很想,与解决人类问题的方法大相径庭
- 每一台机器有一套符号语言,代码工作量仍然很大
- 仍然需要了解机器底层原理,同时还需要记住符号
- 可移植性差
1.3 高级语言(high-level language)
- 与自然语言十分相似(如,英语),容易学习、理解、解决问题
- 不需要掌握机器底层原理
- 具有普遍性,可移植性好
1.4 第四代语言(fourth generation language)
- 是问题指向的编程语言
- 用户可以只告诉系统去做什么,系统自己知道怎么去做
- 第四代语言分支
1.4.1 查询语言(Query language)
- 用于数据库管理的主要工具
- 提供了查询数据库的方法
- 主要有SQL(Structured Query Language)
1.4.2 报告生成器(Report generator)
- 帮助用户自动生成报告的重要工具
- 可以基于数据库内容自动生成格式化的报告
- 通常包含数据提取、格式设置和输出功能
- 主要有ADF(Application Development Framework)中的报告功能
1.4.3 图形语言(Graphical language)
- 用画图的方式来编程
- 核心思想:通过拖放组件、配置属性、连接逻辑块来构建应用程序
- 好比:用乐高积木搭建房子,而不是从烧制砖块开始
1.4.4 应用程序构建器(Application Builder)
- 将所有的功能集成在一个工具里
- 过去:
- 一个IDE来写代码
- 一个数据库管理工具来设计表
- 一个UI设计器来画界面
- 另一个工具来设计报表
- 现在:在一个工具中
1.4.5 形式化规范说明语言(Formal specification language)
- 是严格数学定义的、基于数学逻辑的语言,用于精确陈述软件必须具备的功能、性能及其他关键属性
- 可以避免自然语言的歧义性
1.5 自然语言(natural language)
- 在理想情况下,机器可以识别自然语言,但现在还不行
二、搭建并运行程序
- 源程序----> 编译----->链接
2.1 源程序(source prgram)
- 比如,用C语言完成的程序,并保存为文本编辑器
- 计算机并不能直接阅读源程序,需要将程序编程目标程序(object program)或者可执行程序(executable program)
2.2 编译程序(compiler)
- 编译运行分开
2.3 解释程序(interpreter)
-边编译边运行
2.4 链接程序(linker)
- 将目标文件及程序中使用到的库文件组装成一个单一可执行文件
2.5 翻译器(translator)
- 将C语言编写的源文件,转换为目标文件(通常是机器代码或中间代码)
- 分为两种
- 编译器compiler
- 解释器interpreter
- 主要任务
- 语法和语义检查:检查代码是否有拼写错误、语法错误、类型不匹配等
- 代码优化:对代码进行局部优化,提高效率
- 生成符号表:记录文件中定义的函数名、变量名(称为符号)以及它们需要从外部调用的函数名
三、编程语言种类
3.1 过程化语言(procedural language)
- 解决一个问题可以分为若干活动
- 一个活动可以是一个语句,或者是子程序
- 子程序(subroutines)
- 可继续被分解,知道被分解为基本操作——语句
- 面向过程的设计旨在实现特定计算任务的操作流程与步骤,然后使用过程式语言来描述这些操作流程和步骤
- 主要是C
3.2 面向对象语言(object-oriented language)
- 认为对象是中心,对象是系统的基本单元
- 对象包含属性与操作,每个对象都具有明确的职责,用于完成特定功能
- 对象并非孤立存在,它们之间具有多种关联
- 对象通过消息相互通信,彼此协作
- 同类对象可以进一步抽象出共性,形成类
- 主要是Java和C++
3.3 函数型语言(functional language)
- 依据函数模型来解决问题
- 程序的基本单元是函数
- 一个函数可以被理解为一个从一系列输入(X)到输出(Y)映射的黑箱
3.4 专用语言(special language)
- 领域特定语言,需要程序员对这一领域很熟悉,利用函数创造出新的东西
3.5 说明性语言(declarative language)
- 也可以叫声明式语言
- 程序员只需要描述“想要什么”或“问题的定义”,而不需要详细指定“如何做”的具体步骤
- 就像你用C语言,你要写怎么找到一个数组中的偶数;但是使用声明式语言,你只用告诉它你要找一个数组中的偶数,至于怎么找是它的问题
- 常见的语言
- SQL:最经典的声明式语言,用于数据库查询
- HTML:描述了网页应该有什么内容(标题、段落、图片),而不是如何绘制这些内容
- CSS:描述了HTML内容应该如何被样式化(颜色、布局),浏览器引擎负责具体渲染
