1

一些历史

  • UINX 操作系统诞生之初是直接使用汇编语言写成的
  • 随着 UINEX 的发展,汇编语言的开发效率成为一个瓶颈

  • 1971年, Ken Thompson 和 Dennis Ritchie 对B语言进行了改良,使其能够直接产生机器码,C语言诞生
  • UNIX 开始用C语言重写,同时C语言在实践的过程中得到发展

clipboard.png

C语言的特点

  • C语言是在实践的过程中逐步完善起来的

    • 没有深思熟虑的设计过程
    • 残留过多低级语言的特征
  • C语言的目标是高效

    • 最终程序执行效率的高效

软件方法论的发展

  • 面向过程程序设计: 数据结构 + 算法

    • 主要解决科学计算问题,用户需求简单而固定
    • 特点:

      • 分析解决问题所需要的步骤
      • 利用函数实现各个步骤
      • 依次调用函数解决问题
    • 问题:

      • 软件可重用性差
      • 软件可维护性差

  • 面向对象程序设计:由现实世界建立软件模型

    • 将现实中的事务直接映射到程序中,可直接满足用户需求
    • 特点:

      • 直接分析用户需求中涉及的各个实体
      • 在代码中描述现实世界中的实体
      • 在代码中关联各个实体协同工作解决问题
    • 优势

      • 构建的软件能够适应用户需求的不断变化
      • 直接利用面向过程方法的优势而避开其劣势

C 语言加强

  • 当面向过程方法论暴露越来越多缺陷的时候,业界开始考虑在工程项目中引入面向对象的设计方法,而第一个需要解决的问题就是:高效的面向对象语言,并且能够兼容已经存在的代码。

clipboard.png

  • C 语言和 C++ 不是对立的竞争关系
  • C++ 是 C 语言的加强,是一种更好的 C 语言
  • C++ 是以 C 语言为基础,并且完全兼容 C 语言的特性

学习 C++ 并不会影响原有的 C 语言知识,相反,学习 C++ 可以让我们学到更多的软件设计方法。

学习 C++ 的优势

clipboard.png

问题: 为什么要为以后学习其它语言做准备呢?

现代软件产品架构图

clipboard.png

操作系统抽象层:将操作系统提供的接口进行统一封装,提高软件的可移植性。

商场收银系统架构图

clipboard.png

现代软件产品的特性

  • 系统一般是由多种语言写成的
  • 系统架构的目标是拥抱用户需求的变化
  • 系统拥有较好的移植性
  • 系统能够方便的部署和更新

操作系统的修改和驱动程序的开发在现代软件产品中占据的比重越来越小。

学习 C++ 的意义

  • C++ 是一种更强大的 C,通过学习 C++ 能够掌握更多的软件设计方法
  • C++ 是 Java/C#/D 等现代开发语言的基础,学习 C++ 后能够快速的掌握这些语言
  • C++ 是各大知名软件企业挑选人才的标准之一

小结

  • 所有的软件系统都是为了满足用户需求而开发的
  • 对于一个开发团队而言,在短期内开发出用户满意的软件产品是其核心竞争力的体现
  • 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现
  • 对于一个架构师而言,掌握各种语言的优势并合理运用到系统中,由此简化系统的开发,是其核心价值的体现

以上内容参考狄泰软件学院系列课程,请大家保护原创!


TianSong
737 声望139 粉丝

阿里山神木的种子在3000年前已经埋下,今天不过是看到当年注定的结果,为了未来的自己,今天就埋下一颗好种子吧