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

news2024/11/20 9:34:21

黄国强 2023/11/11

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

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

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

CMakeCache.txt有什么用

2023年11月11日,周六上午 CMakeCache.txt 是由 CMake 自动生成的一个缓存文件,用于记录在配置过程中生成的各种变量和选项的值。 在使用 CMake 构建项目时,CMake 会根据 CMakeLists.txt 文件中的配置和命令,解析项目的源代码并生…

AD教程 (十二)原理图的编译设置和检查

AD教程 (十二)原理图的编译设置和检查 通过肉眼初步排查,观察一下原理图上有什么错误 工程编译排查错误 选中工程,右键,选择Compile PCB Project对工程进行编译,根据编译报错,定位错误&#…

【服务配置文件详解】补充rsyslog服务的配置文件翻译解读

学习rsyslog日志管理服务的配置文件 # rsyslog configuration file 关于rsyslog软件的配置文件# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html 想看到更多相关信息,可以去查看这个文件,rsyslog-*的*表示软件版本,我…

StartUML的基本使用

文章目录 简介和安装创建包创建类视图时序图 简介和安装 最近在学习一个项目的时候用到了StartUML来构造项目的类图和时序图 虽然vs2019有类视图,但是也不是很清晰,并没有生成uml图,但是宇宙最智能的IDE IDEA有生成uml图的功能 下面就简单介…

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…

1236. 递增三元组

题目: 1236. 递增三元组 - AcWing题库 思路:枚举 1.由给定数据估计时间复杂度。 数据范围为1~1e5---->时间复杂度只能为O(n)或者O(nlogn)。 2.先暴力枚举找到思路,再设法优化。 只枚举中间的数组B。对于枚举的每一个bi&#xff0…

【Java】智慧工地云平台源码支持多端展示(PC端、手机端、平板端)

智慧工地系统实现工地的数字化、精细化、智慧化生产和管理。 一、智慧工地发展趋势 1.更加智能 未来的智慧工地系统将逐步植入人工智能和虚拟现实等高科技技术以更为智慧的方式,来实现岗位人员与工地现场的交互与配合。智慧工地系统能够在工程全生命周期管理的过程…

内网如何使用Python第三方库包(举例JustinScorecardPy)

内网如何使用Python第三方库包 一、下载python whl文件(官网有的) 1、第一种方法 要直接下载whl文件,你可以按照以下步骤操作: 首先,访问 https://pypi.org/ 或 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 网站。这两个都是Python的官方…

golang工程组件——redigo使用(redis协议,基本命令,管道,事务,发布订阅,stream)

redisgo redis 与 client 之间采用请求回应模式,一个请求包对应一个回应包;但是也有例外,pub/sub 模 式下,client 发送 subscribe 命令并收到回应包后,之后被动接收 redis 的发布包;所以若需要使 用 pub/s…

ROS 学习应用篇(三)话题Topic学习之自定义话题消息的类型的定义与调用

自定义消息类型的定义 Person.msg文件的定义(数据接口文件的定义) 创建msg文件 首先在功能包下新建msg文件夹,接着在该文件夹下创建文件。 定义msg文件内容 一个消息最重要的就是数据结构类型。这就需要引入一个msg文件,用于…

FM9918R系列-副边同步整流芯片

产品描述: FM9918R 系列是集成了 MOSFET 的同步整流二极管,用于替换反激式转换器的整流二极管,能够显著减少发热,提升系统的转换效率。IC 通过检测集成 MOSFET 的源漏电压来决定其开关状态。 FM9918R 系列能够兼容连续模式、非连续…

积分上限函数

定积分的形式 a:积分下限 b:积分上限 定积分的值与积分变量无关 积分上限函数的形式 x:自变量 t:积分变量 积分上限是变量,积分下限是常数 定积分的几何意义 x轴所围成面积 x轴以上面积为正 x轴以下面积为负 积分…

【华为数据通信】BFD是什么?

一、概述 BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点: 对相邻转发引擎之间的通道提供轻负荷、快速故障检测。用单一的机制对任何介质、任何协议层进行实时检测。 BFD是一个简单的“Hello”协议。两个系统…

k8s系列-kuboard 该操作平台的使用操作

文章目录 一、相关平台,以及账号和密码镜像打包服务器仓库地址K8s平台数据库mysql 二、平台概述1.集群导入2.集群管理3.名称空间4.访问控制授权5.集群用户操作审计 三、kuboard平台操作手册一、部署服务操作1.名称空间部署2.工作负载部署 一、相关平台,以…

【中国知名企业高管团队】系列64:燕京啤酒

昨天,华研荟介绍了中国可能是最大的啤酒企业:青岛啤酒。接下来介绍总部位于北京的另一家啤酒企业——燕京啤酒。 当我想寻找官方的信息时发现坏了——燕京啤酒的官方PC网站竟然无法打开!倒是设立了一系列的微信公众号,看第一个官…

cmake_install.cmake这个文件有什么用

2023年11月11日,周六上午 目录 简介 举例说明 简介 cmake_install.cmake是由 CMake 自动生成的一个脚本文件,用于在安装过程中执行各种安装操作。 请注意,cmake_install.cmake件是自动生成的,无需手动编辑或修改它。如果需要自…

postman 参数化使用csv导入外部数据

一、参数化脚本入参 postman中变量用{{变量名}}表示变量 二、创建外部数据文件 csv文件逗号分割多个变量和对应值注意编码格式必须为utf-8 三、run collection导入数据文件 四、设置运行参数run 浏览数据 可调试设置迭代次数:防止批量出错,可先设定…

响应式理工实验外语学校学院网站模板源码

模板信息: 模板编号:11862 模板编码:UTF8 模板颜色:蓝色 模板分类:学校、教育、培训、科研 适合行业:学校类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统&#xff0c…