当前位置: 首页 > news >正文

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

黄国强 2023/11/11

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

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

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

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

http://www.lryc.cn/news/225703.html

相关文章:

  • 汽车之家车型_车系_配置参数数据抓取
  • RabbitMQ的 五种工作模型
  • 原型制作神器ProtoPie的使用Unity与网页跨端交互
  • 另辟奚径-Android Studio调用Delphi窗体
  • SOLID 原则,程序设计五大原则,设计模式
  • Java基础——数组(一维数组与二维数组)
  • Python爬虫抓取微博数据及热度预测
  • Qt QTableWidget表格的宽度
  • OpenCV(opencv_apps)在ROS中的视频图像的应用(重点讲解哈里斯角点的检测)
  • 常见排序算法之插入排序类
  • Dubbo服务消费端远程调用过程剖析
  • 华硕荣获“EPEAT Climate+ Champion”永续先驱称号
  • 基于QT使用OpenGL,加载obj模型,进行鼠标交互
  • 三大赛题指南发布!2023 冬季波卡黑客松本周末开启 Workshop
  • 数据结构与算法(Java版) | 算法的空间复杂度简介
  • 大数据-之LibrA数据库系统告警处理(ALM-12037 NTP服务器异常)
  • 烟草5G智慧工厂数字孪生可视化平台,赋能烟草工业数字化智慧转型
  • PHP编写采集药品官方数据的程序
  • 解决Jenkins执行git脚本时报错:No such device or address问题
  • LCD英文字模库(16x8)模拟测试程序
  • 二分法
  • Linux文件类型与权限及其修改
  • RPC 框架 openfeign 介绍和学习使用总结
  • 大厂真题:【DP/贪心】字节跳动2023秋招-小红的 01 串
  • 【技术类-01】doc转PDF程序卡死的解决方案,
  • 探索未来,开启无限可能:打造智慧应用,亚马逊云科技大语言模型助您一臂之力
  • HTML点击链接强制触发下载
  • Paimon 与 Spark 的集成(一)
  • 批量导入SQL Server中的建表、建存储过程和建调度作业的文件
  • 启动Hbase出现报错