论编程思想

简介:

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

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

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

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

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

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

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


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

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

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

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

相关文章
|
8月前
|
监控 Java 测试技术
Spring Boot学习知识点大全(三)
教程来源 https://app-a6nw7st4g741.appmiaoda.com/ 系统梳理Spring Boot核心实践:涵盖日志分级配置与异步输出、单元/集成测试、Actuator监控与自定义指标、Docker/K8s部署、Spring Boot 3.x Jakarta迁移及虚拟线程等新特性,助力构建高可用生产级应用。
|
2月前
|
人工智能 云栖大会
来云栖大会聊个问题:怎么把 AI Coding 铺给一整个组织
云栖大会论坛邀请函: Qoder 助力 AI Native 超级组织; 9月22日下午杭州国际博览中心1期 301
230 0
|
3月前
|
人工智能 运维 新能源
深度横测完H3、Seedance系列,结果有点意外...(附7个超高质量提示词)
H3和Seedance该怎么选?看完这7个硬核场景你就有数了。
783 0
|
4月前
|
人工智能 数据挖掘 数据安全/隐私保护
不会写提示词?用 4 个要素把 AI 用进日常办公
以会议纪要、周报和邮件为例,介绍用“对象、材料、要求、输出格式”四个要素编写办公提示词,并提供可复用模板与数据安全核对清单。
|
XML Java Nacos
Spring Boot 整合Nacos 版本兼容适配 史上最详细文档
本文介绍SpringBoot整合Nacos的完整流程,涵盖Nacos下载安装、配置中心与服务发现集成、版本兼容性问题及实战配置。重点解决SpringBoot 3.3.0与Nacos版本适配难题,推荐使用Spring Cloud Alibaba方案,并提供项目开源地址供参考学习。
|
7月前
|
存储 安全 Java
Java 基础数据类型完全指南
本文详解Java 8种基本数据类型(byte/short/int/long/float/double/char/boolean)的取值范围、默认值、使用场景及注意事项,涵盖字面量规范、自动/强制类型转换、包装类与装箱拆箱机制,并强调金额计算须用BigDecimal、内存优化等最佳实践。
926 1
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
1704 55
|
11月前
|
算法
模型压缩与量化
模型压缩通过量化、稀疏化、知识蒸馏等技术,减小模型体积与计算开销,助力大模型在端侧部署。涵盖INT8/INT4、GPTQ、SmoothQuant等方法,平衡压缩比、精度与速度,附实战代码与面试要点。
337 0
Axure高保真原型设计:移动端多选图片上传
本文介绍了如何在Axure中利用中继器实现移动端应用的多选图片上传功能,适用于如微信、微博等社交平台。文章详细描述了主页面、相册页面和大图页面的制作步骤,并展示了如何通过中继器和交互设置实现图片的选择、上传及删除等功能。此教程有助于提升用户体验和应用功能性。
615 10