软件架构师必读:面向对象编程思想(OOP)的由来与本质

https://m.toutiao.com/is/RL3k6v9/?=软件架构师必读

大千世界,万事万物,映射到我们的大脑中,形成了色彩斑斓、奇幻玄妙的思想世界。当我们想把这种思想用软件的方式表达出来时,我们面临着很多中选择:是面向对象、面向过程、面向函数还是面向方面(Aspect oriented Programming)?

由于当前的编程语言都是英文的,外国程序员编程不就是在说母语么?我们国家软件技术发展得晚,还没有按照中文词汇和语法的编程方法和工具,也只能跟着说英语。但中文和英文在词汇和语法方面存在不小的差异,所以程序员理解起来也会存在一些问题,久而久之,就把这种编程思路和方法弄得有些玄乎其神了。

面向过程存在的问题

企业信息处理程序最早是面向过程的程序,因为软件是模拟人的思维过程,所以利用面向过程的思路来处理程序顺理成章。由于最开始还是打孔纸带式的计算机,程序量也很小,所以效率还比较高。但随着软件变得越来越庞大,面向过程思想逐渐变得难以驾驭,工程化难度很大。面向过程的软件结构像一个复杂的迷宫,其间到处遍布goto语句,这些跳转语句就像游戏中神秘的传送门一样,你永远不知道下一站在哪里。

复杂过程能描述的清楚么

面向过程往往使程序员不用系统地思考完整的需求,但在程序中完整地复现了人类思维过程的杂乱无章,其中代码被无节制地复制和更改,重复的代码量大大增加,原来自己编写的程序读懂难度都很大。

面向对象的历史

面向对象在西方有着非常深刻的哲学基础,也是西方近代科学产生的重要原因,内容也比较多,我们以后再详细分析。

针对面向对象产生的问题,1972年美国计算机学家艾伦.凯(Alan Key)发明了面向对象的软件开发架构。艾伦的本科读的是生物学,博士导师是被称为'计算机图形学之父”的David Cannon Evans和Ivan Sutherland两位大神,后者的博士导师是大名鼎鼎的香农。在计算机领域,经常看到这样学术传承,一缕一大串,都是图灵奖都是熟人。从这也看出了咱们国家要想在计算机方面立足,还有很长的路要走。

面向对象是艾伦.凯(Alan Key)发明的

这是一种由生物细胞领域概念启发而形成的架构方法,艾伦发现了在细胞领域中存在一些有趣的规律:首先,所有个体细胞都会遵从细胞这个类别元素的共同的行为模式;其次,每一个细胞都是一个独立的个体,细胞之间通过传递化学物质信号和电信号能够进行通信,根据所收到的信息调整自身的行为和策略;第三,细胞会进行分化,从原来的一个细胞分化成不同类别的细胞,进而形成各种器官。受到这些细胞特性的启发,艾伦发明了面向对象的分析和设计方法。

生物是如何封装和传递消息的

结合这些特点,艾伦发明了Smalltalk ,这种语言被设计为一个完全动态的系统,其中可以动态地创建和修改类。

面向对象的本质

面向对象与其说是一种设计方法,更像是一种理解世界的角度。类别、属性、联系和是三个重要方面。联系和组成的概念更为复杂一些,例如SQL和知识图谱就是致力于研究事物之间的关联,我们有机会再另外详细说,今天我们重点来讲讲类别和属性。

面向对象的本质是本体论

面向对象的核心是本体论。本体类的核心就是分类,也就是我们词语所指之“物”。当我们说杯子的时候,我们说的其实不是哪一个具体的杯子。我们说的是脱离了时间和空间之外的那个杯子,这种本体论古希腊人都搞明白了,可惜中国古代没有这种本体思想。

「博士聊IT」一文看懂编程的本质,程序员有前途么?

比如我们说今天很热,我们翻译过来肯定是想说Today is hot。但是这里我们就错误地把今天作为主语了,其实今天应该是时间副词。英语会翻译成It is hot today这里的It指的是天气,也就是热的主体。

中英文用法上差异增加了我们理解的难度

本体(Ontology)、分类(Class)、概念(Conception)、集合(Set)和名词(Noun)其实是一回事,都指的是你脑海中的那个概念。这是人类理解世界的根本,就从哲学观点上来看,这是我们认识世界的方式。

我们的生物需要分类,就是门、纲、目、科、属、种;法律需要分类,轻度伤害、重度伤害量刑不同;社会管理要分类例如不同企业上不同的税;产品需要分类,不同的产品有不同的参数.......我们思想和语言交流的基础就是分类。

事实上我们说的每一个名词都是一个分类,当加上编号或者定冠词就变成实例了。那我们我和当我们区分实例的话,不特指的时候直接用复数或者要加上不定冠词“a”表示这分类,特指实例的时候要加上“the”。

分类是我们认识世界的基础

(0)

相关推荐

  • 面向对象的编程思想

    面向对象的基本思想 基本思路就是,创建一个对象,给这个对象,添加上属性和属性值,还有函数等方法 之后通过操作这个对象,来完成需要的效果   1.先通过一个函数的方法,来创建对象   2.给对象添加属性 ...

  • 面向对象编程思想(OOP)的由来与本质,软件架构师必读

    大千世界,万事万物,映射到我们的大脑中,形成了色彩斑斓.奇幻玄妙的思想世界.当我们想把这种思想用软件的方式表达出来时,我们面临着很多中选择:是面向对象.面向过程.面向函数还是面向方面(Aspect o ...

  • 编程思想:面向对象和面向过程的区别与联系

    前言 何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中.我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起.而这种茫然,其实就是对这两大编程思想 ...

  • Python教程:面向对象编程的一些知识点总结

    类与实例 类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 类.属性和方法命名规范 类名通常由大写字母打头.这是标准惯例,可以帮助你识别类,特别是在实例 ...

  • 面向对象编程(中)

    继承性(inheritance) 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类 中, 那么多个类无需再定义这些属性和行为,只要继承那个类即可 多个类称为子类(派生类),单独的这个类称为父类 ...

  • java 面向对象编程

    什么是面向对象 回顾方法的定义与调用 方法的定义 import java.io.IOException; //Demo01 类 public class Demo01 { //main方法 publi ...

  • 嵌入式开发中的两点编程思想

    嵌入式开发,除了掌握基本的编程语法之外,编程的思想也是很关键,下面说两点编程思想. 1分层思想 嵌入式分层思想,可能你不懂,但你肯定见到过很多类似下面这样的软件结构图. 比如,RT-Thread Na ...

  • 【计算机基础知识】三大编程思想

    【计算机基础知识】三大编程思想

  • C语言状态机编程思想

    有限状态机概念 有限状态机是一种概念思想,把复杂的控制逻辑分解成有限个稳定状态,组成闭环系统,通过事件触发,让状态机按设定的顺序处理事务.单片机C语言的状态机编程,是利用条件选择语句(switch.c ...