论编程思想

简介:

    从第一台计算机诞生到现在七十多年,计算机一直遵循着冯哥提出的以二进制为计算基础,以运算控制存储及输入输出五大组件构成的体系架构,硬件的发展从晶体管到中小规模集成电路再到大规模及超大规模集成电路,体积越来越小、能耗越来越低、功能越来越强、价格越来越便宜,便携化网络化和智能化将是未来的发展趋势。

    个人对硬件的体验还停留在二十年前奔腾166跳线超频到200风冷不开盖不发烫不死机的美好回忆中(可惜主板不支持否则一定挑战一把233水冷)。和几十年不变的硬件体系相比软件工程思想却发生了巨大的变化,经历了面向过程(POP)到面向结构(SOP)到面向对象(OOP)到面向接口(IOP)到面向服务(SOA)再到面向切面(AOP)的演变,不过后者的出现并不是消灭和取代前者,江湖门派总爱争论哪种思想先进哪种语言优秀,其实每种编程思想和语言各有其适用的应用场景,各有其擅长的解决之道。

    面向过程(POP):面向过程的编程思想是伴随着计算机诞生最早出现的,一句话总结就是先干啥后干啥然后干啥最后干啥,程序看起来就是一个数据加算法的集合,数据以变量的形式在算法之间被调度流转和加工,这种模式与人类的日常活动非常相似,所以很容易理解。

    面向结构(SOP):面向结构的编程思想本质还是面向过程,只是更加注重逻辑的独立性,追求自上而下的模块化设计,部分地解决了标准化和规范化的问题。一个项目包含若干程序,程序包含若干文件,文件包含若干函数,函数包含若干语句,语句转换成若干条机器指令按顺序执行。当对数据复杂性和安全性有较高要求的时候,面向结构的编程思想就显得力不从心了。

    面向对象(OOP):面向对象的编程思想是将面向过程编程思想中以开发者为主导地位变成以世界万物为主导地位,将事物的内部属性与外部环境隔离开,强调了事物之间的联系并赋予他们从属关系,界定对象的职责与能力范围。总结起来就是,你有我也有,你没有我还有 – 继承;花多少钱办多大事儿 – 重载;你行我比你还行 – 覆盖;谁能谁干 – 多态。面向对象编程思想如同侏罗纪时代的恐龙出现以后就迅速统治了地球,在下一次小行星撞上地球之前都不会消失。

    面向接口(IOP):面向接口的编程思想和面向结构思想类似都是主流编程思想的一个分支体系,它的本质是只要开发者严格遵循接口的定义(规范与约束)就一定可以得到想要的一致性结果,它弱化了对象的属性和方法的概念,将对象理解成一个抽象体,根据需要调用或扩展接口功能来满足实际业务。

    面向服务(SOA):面向服务的编程思想是在面向接口的编程思想上更进一步,两者粒度不同,前者是将一个整体功能封装起来,后者封装的则是一个对象。这种思想更多的还是体现在架构层面而非编码层面,多被当做中间件应用于系统间而非系统内调用。


    面向切面编程(AOP),第一次听到切面这个名词感觉好奇怪,听说过挂面拉面刀削面,做法有炒的焖的打卤的炸酱的,难道软件行业都发展到必须边吃面边写代码的新高度了吗?后来一调查发现意思满拧,切面是剖面、创面和断面的意思,和吃没有半毛钱关系,记得小时候经常被老师夸奖:这孩子记吃不记打,一直引以为傲到现在。

    其实切面这个词表达的还是挺生动形象的,操作手法与植物嫁接类似,在枝干上人工打开一个深度创面,让受体和配体之间紧密贴合,利用细胞增生的原理使二者创口慢慢愈合,达到投之以桃报之以李的目的。

    面向切面的编程思想追求的最高境界是以最小的侵入代价换取最大的自主功能实现,为了达到这个目标,引入了几个全新的概念:反射、拦截、责任链、动态代理和控制反转,讲清楚每个概念都够写本书了,理解是一回事用好是另一回事,这里面坑多了,填一个少一个,早日填平好迎接新技术的到来。打算过几天结合一个基础框架分享一下面向切面的编程思想,也算给自己一点点激励。

    曾经有许多种编程思想摆在我的面前,但是我都不太明白,等到面试的时候才后悔莫及,尘世间最痛苦的事情莫过于此。如果可以给我一个机会再来一次的话,我会说我要努力学习,如果有人问我未来的编程思想是什么,我希望是面向钞票!

相关文章
|
8月前
|
程序员
如何理解面向过程和面向对象?
有人说:“如果上帝是程序员,他怎么创造世界上的所有动物。”,理解这个问题就理解了面向对像。
|
2月前
|
Java 物联网 测试技术
Java面向对象程序设计3面向对象基础
Java面向对象程序设计3面向对象基础
173 0
|
程序员 C语言 C++
C++ using:软件设计中的面向对象编程技巧
C++ using:软件设计中的面向对象编程技巧
56 0
|
2月前
面向对象编程的理解,面向过程和面向对象有什么区别
面向对象编程的理解,面向过程和面向对象有什么区别
15 0
|
4月前
面向对象编程和面向过程的理解
面向对象编程和面向过程的理解
13 0
|
4月前
面向对象编程及面向过程编程
面向对象编程及面向过程编程
|
5月前
|
关系型数据库
编程思想 - 面向对象编程和面向过程编程的区别理解
编程思想 - 面向对象编程和面向过程编程的区别理解
24 0
|
9月前
|
设计模式 算法 搜索推荐
C++的编程思想和进阶编程
● 一个模式描述了一个不断发生的问题以及这个问题的解决方案;模式是前人的设计经验上总结出来的对于一些普遍存在的问题提供的通用的解决方案;比如单例模式、观察者模式等 ● 软件中有很多模式 面向对象常见的23中设计模式; 反模式;企业应用架构模式等
35 0
|
11月前
|
设计模式 前端开发 安全
【Java设计模式 面向对象设计思想】二 再谈面向对象和面向过程
【Java设计模式 面向对象设计思想】二 再谈面向对象和面向过程
81 0
|
Java C语言
浅谈编程中的面向对象和面向过程
浅谈编程中的面向对象和面向过程
98 0