程序设计
程序设计语言
- 机器语言
- 汇编语言
- 面向过程的高级语言
- 面向对象的高级语言
程序设计方法
- 结构化程序设计:程序=算法+数据结构
- 面向对象程序设计:对象=算法+数据结构,程序=对象+对象+……
软件系统的特点
- 逻辑产品,逻辑思维活动的结果
- 创造与制造过程合二为一
- 管理和控制软件开发过程非常困难
- 开发依赖于开发人员的业务素质、智力、人员的合作、组织与管理
- 设计生产(而不是生产制造),生产秩序复制
- 开发质量难以评价;开发性质(成本、进度)难以估计
- 软件没有磨损概念,软件维护通常意味着改进或者修改原有设计
- ……
常见的软件问题
- 不能满足需求
- 需求混乱
- 模块集成混乱
- 系统难以维护
- 缺陷发现太迟
- 低质量、难使用
- ……
解决办法
- 迭代式开发
- 管理需求
- 基于组件的架构
- 可视化建模
- 连续验证质量
- 管理变更
软件工程的构成要素
- 过程
- 方法
- 工具
- 人
- 质量属性
软件工程目标
- 可修改性
- 有效性
- 可靠性
- 可理解性
- 可维护性
- 可重用性
- 可适应性
- 可移植性
- 可追踪性
- 可互操作性
简单回顾软件开发的发展历史
- 以机器为中心
- 以应用为中心
- 以企业为中心
语言的演化
- 从汇编语言到高级语言
- 在相当长的一段时间内,很多复杂系统仍然由汇编语言编写
- 高级语言的演进速度和丰富程度极快
- 从Fortran(第一个高级语言)开始,高级程序语言的发展基本经历了六个过程
- 主要的范型:过程式、函数式、逻辑语言、面向对象语言
- 每种语言所支持的抽象机制发生了变化
语言设计的基本思路
每一种语言都带有设计者明确的目标和定位,并主导了该语言的特点(起码是最初时)
- 偏向于机器运行性能的考虑(运行快)
- 偏向人的思维方式与习惯(开发快)
里程碑: Pascal
- 第一个系统地体现了Dijkstra和Hoare定义的结构化程序设计概念的语言
- 著名公式:“算法+数据结构=程序”
- Anders Hejlsberg进一步创建了Objective Pascal (Delphi)
- Anders后来进入微软开发了C#和.NET
C及其标准化
C的祖先语言:
- CPL、BCPL、B和ALGOL68
- BCPL和B都是无类型语言
- 引入类型的B语言:NB随后命名为C语言
C的标准化:
- 89年ANSI C
- 99年更新为C99
混合风格C++
- 最初阶段:C with Class
- Bjarne Stroustrup
- 类与派生类、共有和私有成员的区分、构造函数与析构函数、运算符重载……
- 84年命名为C++
- 扩展了虚函数、方法名和运算符重载,以及引用类型
- 85年地一个可用实现Cfront系统
- 将C++程序翻译为C程序
后C++时代
“C++退出‘一同江湖’的时代”
C/C++退出垄断的根本原因:
- 机器性能的提升是编程语言的选择开始转向“人”的因素(好用);
- 使用脚本语言的性能损失对真实世界的程序来讲往往微不足道,因为真实世界的程序往往受到I/O事件等待、网络延迟等限制,而不是CPU的自身效率。
Java的出现
- Sun公司的纯面向对象的程序设计语言
- 最初被成为Oak,1995年改名为Java
- J2EE为编程提供了大量的中间件
- 最大的成果在于其简单易用,“一次编写到处运行”的跨平台性
Loading Comments By Disqus