程序设计思想的发展
面向机器
机器语言
最开始的编程语言是机器语言
,使用0
和1
编写指令序列代表程序语言,例如0000
代表LOAD
,0001
代表STORE
,由于直接运行在机器上,因此效率非常的高。由于机器语言使用0
和1
编写指令序列这就导致了机器语言难以阅读以及编写效率低下。
关于机器语言有一个笑话,说的是比尔盖茨使用绣花针在一个光盘戳,硬生生把windows
系统给戳出来了。使用机器语言别说windows
系统,哪怕是一个hello world估计都能戳的你眼睛冒烟。
汇编语言
汇编语言使用助记符
代替机器指令的操作码,使用符号或者标号代替二进制指令或者操作地址,例如使用LOAD
代替0000
,使用STORE
代替0001
。
面向过程
第一次软件危机
第一次软件危机体现在软件的复杂度,科学家们提出了结构化程序设计
的概念。
第二次软件危机
第二次软件危机体现在软件的可扩展性以及可维护性。
面向对象语言的发展
业界公认第一门面向对象语言-simula
提出了面向对象的概念,但没有完整的实现。
SmallTalk
C++
C最开始的名字是c with class
。c++
语言设计的初衷是在效率上要跟c
不相上下,同时支持面向对象
,在语言层面需要有其它语言的有点,因此c++
采取了拿来主义,借鉴了很多语言的设计思想。这导致了c++
学习成本的增高,有一句关于c++
的段子说的是:”精通c的都是怪物”。
面向过程
即完成一件事的步骤,类似于流水线操作。
面向对象
对象+交互
为什么需要面向对象
面向对象的优点在于可扩展性
。
面向对象应用的范围
面向对象的核心思想是可扩展性
,经常变化的东西就是面向对象应用的范围。比如互联网开发,企业应用,游戏开发等需求经常变更的场景。而操作系统、协议、数据库等相对来说比较稳定的东西就是面向过程语言大展拳脚的地方(c/c++)。
面向对象迷思
C
是纯粹的面向过程语言,Java
是纯粹的面向对象语言。不管是面向过程还是面向对象都是解决问题的一种思维方式,Java
也能写出面向过程的代码。