软件之禅(七)面向对象(Object Oriented)

黄国强 2023/11/11

        前文提到面向对象构建的模块控制器,根据第一性原理,从图灵机的角度,面向对象不是最基本的元素。那么面向对象是不是不重要呢?
        答案是否定的,面向对象非常非常重要。当我们面对一个具体的领域,比如我从事的半导体设备领域,面向对象是我们分析和理解半导体设备这个领域最强大、最有效的工具。所以面向对象这个工具非常值得我们花时间去研究学习。
        我个人用面向对象的方法写了三十年的程序了,介绍这个技术的文章非常多,我这里只是简单的说一下我的体会。

1 对象即神经元
        根据生物解剖学,我们知道动物的大脑是一个由众多神经元为节点接而成的神经元网络。神经元是神经系统最基本的结构和功能单位,神经元通过突起来传递信息。
        我之前提到一个观点,即所有面向对象的架构都是bridge+NVI模式或者变体。面向对象的模型可以说是对大脑的一个仿生。下图是我绘制面向对象通用模型,和神经元网络高度类似。

        面向对象的分析过程的结果就是获得这些节点的类型。这些节点通过函数或过程连接起来。当然目前这些连接完全靠人工编程,我觉得不久的将来(不超过50年),人工神经元网络将接过这方面工作。
2 发掘需求
        有了经过我们分析获得的这个模型,可以很方便与客户沟通,搜集客户需求,学习专业知识,不断修正我们的模型。行业专家与常人的主要区别在于是否拥有专业概念,我们作为开发人员要擅长学习和理解专家掌握的概念。
        我之前做过一款建筑软件,一个客户用了我写的软件,专程到公司点名要见我,他误以为我也是能和他交流的行业专家。其实很惭愧,我只是擅长用面向对象工具的专家,具体行业知识很肤浅。现在我从事半导体设备行业,我觉得我行业知识方面水平依然很一般。
        提到这件事,我想表达的观点是,作为软件开发人员,掌握面向对象工具非常重要,要成为这方面的专家。而具体行业知识,只要够用就可以了,人的精力是有限的,侧重点要分清。
3 来自于用户高于用户
        有种错误的观点是,既然专家是权威,面向对象的节点是不是完全按专家说的建立呢?
        答案是否定的。我们从用户中搜集的需求往往过于具体。比如,半导体设备公司做的设备估计有几百种类别,每个类别的设备都有不同和独特的功能,在这个层面上你是无法写出一个通用设备框架的。这时候就要祭出人类思考的最伟大的工具——抽象。
        从第一性原理,找出领域中最本质的元素,在此之上构建整个软件模型和框架。
        综上可以看出,这个抽象分析能力才是人与人产生差距的地方。当然,随着人工智能的发展,我们人类自傲的这个能力也会被取代,所以我对于整个人类的未来异常悲观。

[参考]
  1 软件之禅(六)图灵机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/131596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows10+vs2015源码编译subversion

Windows源码安装subversion 一、运行环境 windows10 64位系统 VS2015完整安装 Subversion1.6.3 二、源码编译环境配置 1、python环境安装 python-2.4.msi2、perl环境安装 ActivePerl-5.8.8.822-MSWin32-x86-280952.msi3、openssl编译 C:>cd openssl-0.9.7f C:>p…

Leetcode 剑指 Offer II 052. 递增顺序搜索树

题目难度: 简单 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一…

拦截器学习(黑马程序员)

实现步骤: 定义拦截器注册配置拦截器 1 自定义拦截器:实现HandlerInterceptor接口,并重写其所有方法: //自定义拦截器 Component public class LoginCheckInterceptor implements HandlerInterceptor { //目标资源方法执行前执…

Linux的基本指令(1)

目录 快速认识的几个指令 pwd指令 mkdir指令 touch指令 cd指令 clear指令 whoami指令 ls指令 ls -l ls -la ls 目录名 ls -ld 目录名 文件 路径 路径是什么? 路径的形成 ​ 怎么保证路径必须有唯一性? ls -la隐藏文件 隐藏文件的是什…

[量化投资-学习笔记009]Python+TDengine从零开始搭建量化分析平台-KDJ

技术分析有点像烹饪,收盘价、最值、成交量等是食材;均值,移动平均,方差等是烹饪方法。随意组合一下就是一个技术指标。 KDJ又称随机指标(随机这个名字起的很好)。KDJ的计算依据是最高价、最低价和收盘价。…

思维模型 梅拉宾法则

1 梅拉宾法则的应用 1.1 演讲口才中的梅拉宾法则应用 苹果公司的演讲:苹果公司的演讲一直以来都以其独特的风格和效果著称。苹果公司的演讲者在演讲中注重运用肢体语言和声音等非语言因素,如手势、表情和语调等,来增强演讲的效果。例如&am…

想要和猫妹一起学Python吗?快进群吧

这是一篇2024年猫妹学Python新同学召集令,感兴趣的朋友可以看下。 初始Python 猫爸第一次被Python惊艳,是几年前的一个风格迁移程序。 国外某大学的一篇博士论文,为风格迁移提供了理论支撑。 下载到模型之后,就可以用简单的Py…

SpringCloud——消息驱动——Stream

1.什么是消息驱动 消息驱动就是屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。目前仅支持RabbitMQ、Kafka。 2.消息中间件有什么问题,stream靠什么实现? 如果我们项目用到了RabbitMQ和Kafka,由于这两个…

93. 递归实现组合型枚举

题目 思路 一个m个坑位&#xff0c;填n个数&#xff0c;就依次往里放就好了 同时判断一下升序&#xff0c;当前这个数比前一个数大就可以了 代码 #include <bits/stdc.h> using namespace std; int n, m; int ans[30]; int f[30]{0}; void dfs(int v) {if (v > m) …

C++---类的优化构造

首先&#xff0c;先介绍以下拷贝构造和构造的区别。 拷贝构造Date&#xff08;Date& d&#xff09;初始化&#xff1a;用一个实例对象去初始化一个未初始化的对象&#xff0c; 例&#xff1a;如果d1未被实例化&#xff0c;则Date d1 d2; 也会被编译器认为拷贝构造&#…

智慧工地建筑施工项目管理平台源码,实现人员劳务实名制管理、区域安防监控、智能AI识别、用电/水监控、噪音扬尘监测、现场物料管理等功能

智慧工地管理系统源码&#xff0c;智慧工地云平台源码&#xff0c;PC端APP端源码 智慧工地管理平台实现对人员劳务实名制管理、施工进度、安全管理、设备管理、区域安防监控系统、智能AI识别系统、用电/水监控系统、噪音扬尘监测、现场物料管理系统等方面的实时监控和管理&…

帝国cms中如何让外部链接直接从新窗口打开页面

<?php if($bqr[isurl]) { ?> <a href"<?$bqsr[titleurl]?>" target"_blank"> <?php } else { ?> <a href"<?$bqsr[titleurl]?>"> <?php } ?>

华硕荣获“EPEAT Climate+ Champion”永续先驱称号

华硕持续深耕永续理念&#xff0c;努力提供低碳排放、高效能产品&#xff0c;并被全球电子委员会授予“EPEAT Climate Champion”称号。这一荣誉再次表明了华硕在永续管理方面的承诺&#xff0c;并凸显了华硕在追求永续发展上的决心。 华硕通过设立“科学基础减碳目标”、“再生…

工资10K,副业20K,这届程序员搞副业真野

最近刚完成了一个远程外包项目工作&#xff0c;钱刚到账&#xff0c;小金库又添了一笔&#xff1a; 从一开始的15K死工资&#xff0c;到现在的主业副业一共25K收入&#xff0c;最近的经济压力小了很多&#xff0c;终于也有闲钱和老婆去旅旅游&#xff0c;升级一下外设&#xff…

Linux学习教程(第一章 简介)3

第一章 简介 七、Linux系统的优缺点 前面章节提到&#xff0c;相比 Windows 系统&#xff0c;Linux 系统有更好的稳定性&#xff0c;那么除此之外&#xff0c;Linux 系统还有那些优点&#xff08;或者不足&#xff09;呢&#xff1f;本节带领大家详细了解一下。 1、大量的可…

【CASS精品教程】cass3d基于DOM和DEM生成倾斜三维模型

和EPS一样&#xff0c;cass3d也可以生成三维模型。本文讲解 cass3d基于pix4d生成的正射影像DOM和DSM生成倾斜三维模型&#xff0c;并进行三维测图。 一、三维倾斜模型打开 打开cass11.0软件&#xff0c;打开三维窗口&#xff0c;点击打开模型&#xff0c;选择基于dom和dsm生成…

keepalived+Nginx+邮件

实验场景&#xff1a; 我使用keepalived保证nginx的高可用&#xff0c;我想知道什么时候ip发生漂移&#xff0c;可以让ip发生漂移的时候 我的邮箱收到消息. 如果对keepalived不了解&#xff0c;这有详细解释&#xff1a;keepalived与nginx与MySQL-CSDN博客https://blog.csdn.ne…

中国智能驾驶的“突围赛”打响,这家本土厂商为何能成为“先行者”?

中国本土厂商正在成为全球智能汽车产业链的“核心力量”。 根据《高工智能汽车研究院》数据显示&#xff0c;今年1-6月&#xff0c;自主品牌标配L2&#xff08;含L2&#xff09;级辅助驾驶交付新车155.34万辆。其中&#xff0c;搭载中国本土智能驾驶解决方案提供商&#xff08…

【LeetCode】每日一题 2023_11_11 情侣牵手(并查集/贪心)

文章目录 刷题前唠嗑题目&#xff1a;情侣牵手题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode? 启动&#xff01;&#xff01;&#xff01; 好好好&#xff0c;这么玩是吧&#xff0c;双十一出道情侣牵手 题目&#xff1a;情侣牵手 题目链接&#xff1a;765…

C++ static关键字

C static关键字 1、概述2、重要概念解释3、分情况案例解释3.1 static在类内使用3.2 static在类外使用案例一&#xff1a;案例二&#xff1a;案例三 1、概述 static关键字分为两种情况&#xff1a; 1.在类内使用 2.在类外使用 2、重要概念解释 &#xff08;1&#xff09;翻译…
最新文章