论编程思想

简介:

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

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

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

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

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

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

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


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

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

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

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

相关文章
|
前端开发 JavaScript
React Hooks 全面解析
【10月更文挑战第11天】React Hooks 是 React 16.8 引入的新特性,允许在函数组件中使用状态和其他 React 特性,简化了状态管理和生命周期管理。本文从基础概念入手,详细介绍了 `useState` 和 `useEffect` 的用法,探讨了常见问题和易错点,并提供了代码示例。通过学习本文,你将更好地理解和使用 Hooks,提升开发效率。
241 4
|
7月前
|
人工智能 安全 测试技术
通义灵码:AI重构编码范式,开发者如何迎接“人机共生”时代?
本文探讨了以通义灵码为代表的AI编码助手如何推动软件开发从“人驱动工具”向“人机协同创造”演进。文章分析了其技术突破,如意图理解、上下文感知和可解释性,并讨论了开发者价值链条的重构,包括需求抽象、架构设计与代码审查能力的提升。同时,文章展望了行业变革对开发者身份、云生态竞争及技术伦理的影响,强调在AI驱动的“寒武纪大爆发”前夜,唯有持续进化才能适应未来软件工程的“人机共生”文明。
339 16
「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider和Progress组件
Slider 和 Progress 是鸿蒙系统中的常用 UI 组件。Slider 控制数值输入,如音量调节;Progress 显示任务的完成状态,如下载进度。本文通过代码示例展示如何使用这些组件,并涵盖 进度条类型介绍、节流优化、状态同步 和 定时器动态更新。
332 7
「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider和Progress组件
|
11月前
|
存储 供应链 数据库
Hologres 索引:概念与实用场景
本文介绍了 Hologres 索引的概念、类型及在实际场景中的应用。Hologres 是阿里云的一款强大数据库产品,其索引功能显著提升了数据查询性能。文章详细探讨了 B 树索引、哈希索引和位图索引的特点及应用场景,并介绍了索引的创建和维护方法。此外,还列举了 Hologres 中的重要参数设置及其使用限制,最后通过电商、金融、物流和社交媒体等领域的具体案例,展示了索引在不同场景下的实用价值。
371 10
|
12月前
|
机器学习/深度学习 数据采集 算法
监督学习工作流程:从数据准备到模型部署
本文详细介绍了监督学习的工作流程,涵盖数据准备、模型选择、训练、评估与优化、部署等关键步骤,并结合具体代码示例,帮助读者全面掌握监督学习在实际项目中的应用方法。从数据收集、清洗到特征工程,再到模型训练与评估,最后部署模型,每个环节都提供了详细的指导和实践建议。适合初学者和有一定基础的读者深入学习。
663 2
|
计算机视觉 Python
ImageDraw, ImageFont
【9月更文挑战第25天】
314 3
|
人工智能 运维 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日至10日,CCF ChinaNet(中国网络大会)在江苏张家港召开,众多院士、教授和技术领袖共聚一堂,探讨网络未来发展方向。阿里云研发副总裁蔡德忠发表主题演讲,展望智算技术发展趋势,提出智算网络架构变革的新思路,发布高通量以太网协议和ENode+超节点系统规划,引起广泛关注。阿里云HPN7.0引领智算以太网生态蓬勃发展,成为业界标杆。未来,X10规模的智算集群将面临新的挑战,Ethernet将成为主流方案,推动Scale up与Scale out的融合架构,提升整体系统性能。245/300
|
存储 监控 数据挖掘
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势
飞轮科技技术副总裁姜国强于「数据分析与洞察」专场分享[阿里云数据库 SelectDB 版在日志存储分析、实时报表生成、用户行为分析及 Lakehouse 场景应用方案
374 1
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势
|
安全 调度
电力系统的负荷损失和潮流计算matlab仿真,对比最高度数,最高介数以及最高关键度等节点攻击
本课题研究节点攻击对电力系统稳定性的影响,通过模拟最高度数、最高介数和最高关键度攻击,对比不同攻击方式下的停电规模。采用MATLAB 2022a 进行系统仿真,核心程序实现线路断开、潮流计算及优化。研究表明,节点攻击会导致负荷损失和系统瘫痪,对电力系统的安全构成严重威胁。通过分析负荷损失率和潮流计算,提出减少负荷损失的方法,以提升电力系统的稳定性和安全性。