数据结构+算法=程序

article/2025/9/1 16:06:26

(1)

数据结构+算法=程序。

每个学计算机的人都听过这个公式。

这个公式是尼克劳斯沃斯在1976年出版《算法+数据结构:程序》一书中提出。尼克劳斯沃斯还是Pascal编程语言的发明人,而且他还在1973年出版《系统程序设计导论》一书中提出了“结构化程序设计”这一概念。尼克劳斯沃斯是瑞士人,在苏黎世工学院上完本科后又到加拿大莱维大学取得硕士学位,后又到美国加州伯克利大学取得博士学位,博士毕业后担任斯坦福大学计算机系教授。

(2)

可能是在中国,也可能是在中国企业应用软件业,这个公式得修订一下,应该是:

数据结构+业务逻辑=程序。

业务有多复杂,程序代码就有多复杂。程序就相当于现实业务的一个快照、电子翻版。现实业务变化了,程序就必须变化。所以中国定制化项目特别多,其实本质都是自己带球让球把自己给绊倒了。

我是一路从程序员-技术总监-CTO过来的。我过去做程序员时,我负责的那个系统算是核心系统,和很多其他系统有关联性,其他系统老需要更新我所属系统的数据表中的状态值,这样就导致了其他系统只要有业务逻辑变化,我的系统就必须要随之改代码,甚至我的系统会出现异常。


后来我觉得这样干不是个事,于是我就写了一个状态机,而且还把状态机的配置放在外面配置文件中。这样,遇到其他系统业务逻辑变化时,我就不需要改我的系统,我的系统也一直保证稳定不出异常了,而且只需要改一下配置文件即可,很灵活。

但是很不幸,我后来去做平台基础研发去了,接任维护的程序员打开我的代码一脸懵逼,现实业务他理解,但是他理解的现实业务,在我的代码中没有看到对应的程序逻辑,他在脑海里形不成这两者的映射关系,他没法下手修改代码。

我曾经甚至还想过用AOP模式和IOC模式来彻底解决问题,但是因为我转去做平台研发了所以我就没再动了。后来我想了想,绝大多数程序员都不知道啥叫AOP模式和IOC模式,我的代码倒是非常稳定了,但是他们也不会维护了。

我再说一个事,是去年发生的。我和一个下属过去讨论一个业务场景,我叨逼叨说了一大堆业务的介绍,我这个下属眨巴眨巴眼睛说:这不就是个偏导函数么?

对,在别人眼里那是业务逻辑,在他眼里就是偏导函数。

我们老提应用架构,其实应用架构重点包含两方面:一方面就是把业务抽象成模型,最好抽象到能用数学公式来推导、解释,这样就会保证严密完备、简单、稳定。另一方面就是设计好模块与模块、系统与系统之间的集成接口,让接口设计的稳定并可向下兼容。

(3)

从2015年以来,第三次人工智能热潮在中国兴起。

数据结构+算法=程序这个公式,又需要修订修订了,我提出的是:数据+模型=程序。

从数据结构升级到数据,从算法升级到模型。

数据结构和数据的分别,大家很好理解,相当于骨架和肉的关系。

而算法带有因果性,模型带有相关性。因果性和相关性这是两个完全不同的东西。

所以,从2018年以来,设计模型,越来越重要了。但啥叫模型,模型设计的常用方法有哪些,你知道吗?

(4)

从2018年Google提出Transformer和预训练模型以来,我感觉:数据结构+算法=程序这个公式又得改改,应该改成:预训练模型=程序。

也就是说:模型即程序。

大家看2019年Open AI Lab公布出来的GPT-3巨模型,你可以用它搞很多应用任务。

在人工智能时代,数据是隐私不能泄露,模型是核心也是要保密,但数据+模型被预训练后,就炼成了一个最终的巨模型,可能整个模型就是高达几十T的文件,你既看不到数据也看不到模型,你只能用它。而且由于部署这个巨模型、运行这个预训练巨模型,消耗的资源和算力太高,所以巨模型未来的商业模式就是公有云提供服务。Huggingface现在就在探索这条路。

所以以后的程序员在写算法呢,还是在写业务逻辑代码呢,还是在设计模型呢,还是在训练模型呢?你们说呢?

(5)

预训练模型这个套路现在还不好。因为海量数据一旦炼成知识,这个预训练模型就算版本化固定了。如果你还想加入新的知识,你还需要再预训练。

我理想中的套路应该是:海量数据随着业务的发生,通过万物互联IoT源源不断送进模型,这个模型持续不断地增量训练,利用各种学习模式(如对比学习、强化学习等等)持续不断地自我优化,这就成了活的模型和活的程序,这样就不用像现在中国的企业应用软件程序员,现实业务变就必须业务逻辑代码变。

5ff2d529c39a87370bfc2e947744fefe.jpeg


http://chatgpt.dhexx.cn/article/WCElrn4k.shtml

相关文章

程序的调试利器

目录: 一、Printf串口输出 二、半主机的巧妙应用 三、SWO引脚的巧妙应用 四、RTT的应用 五、JScope的应用_MCU ------------------------------------------------------------------------------------------------- 一、Printf串口输出 作为一名嵌入式软件…

应用程序调试技术

课程简介 调试技术实务分为调试基本概念和设置,Windows下常用到调试工具VS和Windbg的使用,自动化调试技术,以及实际调试场景示例等。不仅仅是介绍枯燥的程序调试技术,而是深入的从操作系统实现以及.NET虚拟机实现的本质出发&#…

debug运行程序的原理

0 代码运行的原理是什么? 代码的运行方式可以分为直接执行和解释执行两类。 不知道平时你有没有注意,可执行文件直接 ./xxx 就可以执行,而执行 js 文件需要node ./xxx,执行python文件需要python ./xxx,这就是编译执行(直接执行)…

程序的调试技巧。

什么是调试? 调试又叫Debug,又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程。 生活中所有发生的事情都一定有迹可循,如果问心无愧,就不需要掩盖也就没有迹象了,如果问心有愧疚&#…

程序入门调试

1.先设置断点 在调试代码之前要先设置一个断点,否则调试无法进行; ps:设置断点的方法 找到自己要测试的那一行代码,按f9或者也可直接用鼠标点击代码前的空白处如下图所示; 2.熟悉常用的命令 常用的命令符合有四个,分…

谱分解实例与理解

这篇博文想从一个实际的矩阵出发,阐述谱分解究竟干了什么。——非数学系的cver

谱分解(SD)

前提:矩阵A必须可相似对角化! 充分条件: A是实对称矩阵A有n个互异特征值A^2 AA^2 Er(A) 1 且 tr(A)!0 谱分解(Spectral Decomposition ),又称特征分解,或相似标准形分解,是将矩阵分解为由…

矩阵分解——谱分解

文章目录 先修知识: 幂等矩阵谱分解定理谱分解的流程 谱分解的推论谱分解的应用 先修知识: 幂等矩阵 谱分解定理 谱分解的流程 谱分解的推论 谱分解的应用

【信号与系统|吴大正】4:信号分解、傅里叶变换与信号谱(上)

信号分解、傅里叶变换与信号谱 信号的分解 在学习【信号分解】这一部分时,脑海里要有两个概念: 其一,我们整本书学习的思路就是围绕着将信号分解成基本信号,将系统的响应转变成基本响应这一思路来开展的;其二&#xf…

机器学习笔记——14 矩阵谱分解与奇异值分解及其背后的线性算子理论 (实战项目:利用SVD进行图像压缩)

机器学习笔记——14 矩阵谱分解与奇异值分解及其背后的线性算子理论 (实战项目:利用SVD进行图像压缩) 本篇文章介绍矩阵的谱分解与奇异值分解 (Singular Values Decomposition,SVD),为了对其有一个更为本质性地认识,本文从线性算子的理论讲起…

从矩阵谱分解到矩形的最少正方形剖分

上次听AK讲到谱分解的时候,若有所思,下面将对思考稍作记录。 矩阵谱分解 关于谱分解有很多定义,主要区别在于条件的强弱,有的要求一个 n n n阶矩阵不仅要求可对角化,而且加强条件至其 n n n个特征值 λ 1 , λ 2 , .…

谱本征正交分解 (SPOD)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

通信基础 7 —— 遍历保密速率、谱分解物理意义

目录 遍历保密速率(ergodic secrecy rate)闭式解(解析解)和数值解闭式解数值解 拉普拉斯变换谱分解/正交分解 遍历保密速率(ergodic secrecy rate) 说遍历容量不十分准确,应该叫各态历经性容量…

【推荐系统】特征值分解(谱分解)和奇异值分解(SVD),即在PCA上的应用

特征值分解(谱分解EVD)和奇异值分解(SVD),即在PCA上的应用 1. 概念 特征值分解和奇异值分解在机器学习领域都有着广泛的应用。两者有着很紧密的关系,二者的目的都是一样,就是提取出一个矩阵最…

R语言主成分分析PCA谱分解、奇异值分解预测分析运动员表现数据和降维可视化

最近我们被客户要求撰写关于主成分分析PCA的研究报告,包括一些图形和统计输出。 本文描述了如何 使用R执行主成分分析 ( PCA )。您将学习如何 使用 PCA预测 新的个体和变量坐标。我们还将提供 PCA 结果背后的理论。 主成分分析PCA降维方法和R语言分析葡萄酒可视化实…

【矩阵论】2. 矩阵分解——单阵谱分解

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵,二次型,矩阵合同,正定阵,幂0阵,幂等阵,矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…

可对角化和谱分解的区别

内容为个人理解,才疏学浅,如有错误,欢迎指正。 谱分解定理:向量空间V上的任意正规算子M,在V的某个标准正交基下可以对角化。反之,任意可对角化的算子都是正规的。 理解: (1&#x…

R语言矩阵特征值分解(谱分解)和奇异值分解(SVD)特征向量分析有价证券数据

最近我们被客户要求撰写关于特征值分解的研究报告,包括一些图形和统计输出。 R语言是一门非常方便的数据分析语言,它内置了许多处理矩阵的方法。 作为数据分析的一部分,我们要在有价证券矩阵的操作上做一些工作,只需几行代码。 …

【矩阵论】2. 矩阵分解——正规谱分解

矩阵论 1. 准备知识——复数域上矩阵,Hermite变换) 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵,二次型,矩阵合同,正定阵,幂0阵,幂等阵,矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值…