数据结构+算法=程序

2023-05-16

(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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构+算法=程序 的相关文章

  • Linux信号量(3)-内核信号量

    概念 Linux内核的信号量在概念和原理上和用户态的System V的IPC机制信号量是相同的 xff0c 不过他绝不可能在内核之外使用 xff0c 因此他和System V的IPC机制信号量毫不相干 如果有一个任务想要获得已经被占用的信号
  • 二维码识别的原理

    二维码的特征定位和信息识别 背景介绍 视觉的方法可以用来估计位置和姿态 最容易想到的是在目标上布置多个容易识别的特征 xff0c 这样使用opencv相机标定和 相机畸变矫正 轮廓提取 solvepnp来获取目标相对于相机的位姿 在实际使用
  • Linux iptables命令详解

    iptables 是 Linux 防火墙系统的重要组成部分 xff0c iptables 的主要功能是实现对网络数据包进出设备及转发的控制 当数据包需要进入设备 从设备中流出或者由该设备转发 路由时 xff0c 都可以使用 iptables
  • 一座5g基站造价多少?

    想知道5G基站的大致价格 xff0c 我们可以通过中国移动2020年5G设备采购方案简单计算得出 xff1a 本次采购5G基站数量为23 2万个 xff0c 采购总额为亿元 xff0c 折合每个5G基站的成本在16万元左右 相当于4G基站价
  • 华为交换机查看端口相关信息常用命令,排查故障法宝,转发收藏

    一 查看接口状态 1 显示接口的运行状态和相关信息 display interface Ethernet brief 查看以太网端口的简要信息 xff0c 物理端口是否连通 xff0c 端口是否是全双工 xff0c 带宽是多少 xff0c
  • 从0学Linux驱动第一期视频已经录制完毕,资料全部奉送

    历时4个多月 xff0c 第一期Linux驱动视频录制完毕 xff0c 一共32期 xff0c 现在全部同步到了B站 如果你觉得视频对你有用 xff0c 建议大家多多点赞 xff0c 投投免费硬币 xff0c 算是对我辛苦的劳动的认可 视频
  • 千年虫”是什么东西?一个在计算机诞生之初,遗留下的巨大BUG

    说起来 xff0c 现在社会科技中 xff0c 除了真正学过计算机专业的人 xff0c 大部分人对于 千年虫 这个称号都有些陌生 xff0c 甚至有些人连听都没听过 xff0c 不知道的网友听到 虫 这个字可能还会脑补出一大堆不明生物的样子
  • 小灵通为什么会退市?

    价廉物美的 小灵通 退市最主要的原因 xff0c 其一是因为 小灵通 本身月租太便宜 xff0c 让别的移动运营商无钱可挣 xff1b 其二则是中国电信自己的CDMA网络也发展起来了 xff0c 小灵通 让自己无钱可挣 所以 小灵通 必须退
  • Camera | 4.瑞芯微平台MIPI摄像头应用程序编写

    前面3篇我们讲解了camera的基础概念 xff0c MIPI协议 xff0c CSI2 xff0c 常用命令等 xff0c 本文带领大家入门 xff0c 如何用c语言编写应用程序来操作摄像头 Linux下摄像头驱动都是基于v4l2架构 x
  • Camera | 9.如何让camera支持闪光灯?-基于rk3568

    一 闪光灯基本原理 工作模式 Camera flash led分flash和torch两种模式 flash xff1a 拍照时上光灯瞬间亮一下 xff0c 电流比较大 xff0c 目前是1000mA xff0c 最大电流不能超过led最大承
  • 我的新书上架了!

    talk is cheap xff0c show you my book xff01 新书 从0开始学ARM 终于在各大平台上架了 xff01 xff01 一 关于本书 1 本书主要内容 ARM体系架构是目前市面上的主流处理器体系架构 xf
  • 签名预售活动圆满结束!各位敬等快递,第一个付款的兄弟来领取大礼!

    我的新书经过千难万险终于上架 xff0c 为了感谢众多老铁的支持 xff0c 所以上周日搞了签名预售的活动 xff0c 挂了300本 xff0c 一上线很快就被大家买光了 xff0c 留言需要单独写一些话的老铁 xff0c 我也都尽量满足了
  • Android P(Android 9)出现Detected problems with API compatibility问题解决

    安卓系统升级到Android P后打开应用出现Detected problems with API compatibility问题 xff0c 如下图 通过查询发现是 Android P 后谷歌限制了开发者调用非官方公开API 方法或接口
  • eclipse + GDB + JLink 搭建MCU调试环境

    安装Java环境 1 进入Java官网 http www oracle com technetwork java javase downloads index html 2 下载安装包 如果是先要安装Java开发环境 xff0c 就安装JD
  • Jeston TX2 使用cmake 运行测试realsense D435i相关代码(C++)

    Jeston TX2 使用cmake 运行测试realsense D435i相关代码 xff08 C 43 43 xff09 前言 xff1a 我这些天作毕设的TX2上面的Jetpack包是4 3的 然后我又自己用JetPack4 6 1包
  • C++ 服务器通过Tcp传输图片 到 QT客户端显示

    C 43 43 服务器通过Tcp传输图片 到 QT客户端显示 简单的方法通过流数据传输图片 xff0c 并且在QT上面显示出来这里贴出核心代码 xff0c 供大家参考 xff1a 先附上资源源码 xff1a Qt客户端和C 43 43 服务
  • Docker 安装部署

    目录 Docker 安装部署 一 Docker 安装 二 设置镜像加速 三 网络优化 开启路由转发的作用 四 总结 docker server端配置文件建议配置 Docker 安装部署 一 Docker 安装 开源社区 xff1a dcok
  • 学习笔记:SLAM_因子图优化

    SLAM 因子图优化 Factor graoh 模型 概率模型到因子图模型 定义一个简单的机器人问题 xff08 SLAM xff09 假设有一个机器人在往前运动 xff0c 运动过程中能观测到两个路标点 xff0c 定义了三个时间 xff
  • [NVIDIA]-2 从零入手 Jetson Xavier NX 内核编译、源码编译流程

    NVIDIA 从零入手 Jetson Xavier NX 内核编译 源码编译流程 注明 xff1a 感谢网友提醒 xff0c 我当时买的时候nx套件还没开售 xff0c 因为核心板兼容b01 xff0c 先买了核心板和b01的板子合在一起用
  • [NVIDIA]-1 入手Jetson Xavier NX 刷机+开机配置+系统烧录+Bring up

    NVIDIA 入手 Jetson Xavier NX 刷机 43 开机配置 43 系统烧录 43 Bring up 注明 xff1a 感谢网友提醒 xff0c 我当时买的时候nx套件还没开售 xff0c 因为核心板兼容b01 xff0c 先

随机推荐

  • RTOS解读一

    什么是RTOS 维基百科定义 实时操作系统 Real Time Operating System RTOS xff0c 通常读作 34 R toss 34 xff0c 指的是专为实时应用而设计的多任务操作系统 其应用场合包括嵌入式系统 可编
  • switch-case使用方法

    switch case 语句判断一个变量与一系列值中某个值是否相等 xff0c 每个值称为一个分支 switch case 语句语法格式如下 xff1a switch语句应用举例1 xff1a public class VariableTe
  • Linux单片机串口通信总结

    这是一个目录 Linux与单片机串口通信运行ROS串口发送节点后异常中断栈溢出问题catkin make报错 xff1a 函数未定义的引用ERROR L107 ADDRESS SPACE OVERFLOW串口实验总结程序组织串口调试 Lin
  • Apache Options指令详解

    前言 xff1a Options指令是Apache配置文件中一个比较常见也比较重要的指令 xff0c Options指令可以在Apache服务器核心配置 server config 虚拟主机配置 virtual host 特定目录配置 di
  • 欠驱动机械臂运动学仿真

    这是个目录 三轴机械臂建模及运动学仿真各仿真项目的个人理解三轴机械臂 xff08 欠驱动 xff09 分析难点更改RTB中逆解求解源码求解析解数值求解工作空间筛选 实用的解析解法总结 三轴机械臂建模及运动学仿真 在开始具体的机械结构及驱动结
  • postman安装使用教程(标贝科技)

    postman安装使用教程 文章目录 postman安装使用教程前言一 postman安装二 postman使用 前言 postman是Chrome浏览器的插件 xff0c 是一款功能强大的网页调试工具 xff08 接口调试神器 xff09
  • 流媒体推流原理

    我们知道一个完整的直播过程 xff0c 包括采集 处理 编码 封包 推流 传输 转码 分发 解码 播放等 xff0c 这一过程所采用的技术 xff0c 我们也称之为 流媒体技术 其中推流是指使用推流工具等内容抓取软件把直播内容传输到服务器的
  • 机器学习必知必会10大算法!

    Datawhale干货 作者 xff1a Fahim ul Haq xff0c 编译 xff1a InfoQ 现在 xff0c 机器学习有很多算法 如此多的算法 xff0c 可能对于初学者来说 xff0c 是相当不堪重负的 今天 xff0c
  • C语言结构体及链表定义

    最近在看 大话数据结构 xff0c 一边看书一边跑一下书中的案例 xff0c 加深下理解 书中的案例都是C写的 xff0c 顺便熟悉下C语言 此处第三章线性表链式存储 xff1a 在用代码描述单链表之前 xff0c 我们需要定义一个结构体来
  • 【ROS教程 005】ROS可视化

    在ROS系统中它可以通过一些通用工具轻松绘制标量数据图 xff0c 它要求对每一个标量字段数据分别绘制成二维曲线 xff08 1 xff09 用rxplot画出时间趋势曲线 在ROS系统中 xff0c 标量数据可以根据消息中提供的时间戳作为
  • C/C++/Windows/VC/MFC/Unix/Linux编程书籍推荐

    C C 43 43 编程书籍 C Primer Plus C 43 43 Primer C 43 43 Primer Plus C和指针 C陷阱与缺陷 C专家编程 C 43 43 沉思录 C语言深度剖析 Effective C 43 43
  • 使用CPM管理CMake C++工程中的外部依赖库

    严正声明 xff1a 本文系作者davidhopper原创 xff0c 未经许可 xff0c 不得转载 众所周知 xff0c 对于外部依赖库的管理是CMake C 43 43 工程中一个令人头疼的问题 人们一直希望能有一个工具来自动配置CM
  • 字典和集合2:高效性和可哈希

    目录 1 字典和集合的高效性 2 散列表操作 2 1 散列表的写入 2 2 散列表的查找 2 3 散列表的缺点 3 可哈希 1 字典和集合的高效性 许多时候 xff0c 将列表改为字典或集合后 xff0c 执行效率将会有巨大的飞跃 xff0
  • 卡尔曼滤波(Kalman filter)公式推导详细版

    卡尔曼滤波 xff08 Kalman filter xff09 公式推导详细版 记得很早的时候 xff0c 我曾经手工推导过卡尔曼滤波 xff0c 但是之前的已经大多记不起来了 今天帮着老师整理PPT的时候 xff0c 老师让我补充完相应的
  • 4g dtu透传模块

    4g dtu透传模块 xff0c 是一款支持双向透明传输的产品 xff0c 用户使用无需关心复杂的协议 xff0c 产品为双向透传 xff0c 只需要简单配置即可 同时产品为4G全网通 xff0c 支持国内全部运营商网络 xff0c 通讯模
  • PCB设计学习笔记(一)原理图界面

    一 画原理图库 多个引脚可以ctrl 43 c一个引脚后 xff0c 编辑 gt 设置粘贴阵列 xff0c 一次性复制出来多个引脚 二 原理图界面 生成原理图库 xff1a 在一个现成的原理图界面可以直接将现有的原理图内的原件生成一个原理图
  • novatel计算odom--GPS坐标与UTM坐标转换

    保证你的novatel的driver是在ros drivers上的驱动 1 简介 1 1 消息 gps common定义了两个通用消息 xff0c 供GPS驱动程序输出 xff1a gps common GPSFix和gps common
  • 搭建自己的slam系统

    手头有的传感器 一个vlp16线激光雷达 一个120 的fisheye相机 一整套novatel GPS 43 IMU 采集了一个闭环的bag 第一步 数据预处理 将camera的数据单独提取出来 因为没有时间戳 因此无法做到传感器的紧耦合
  • KCF_ROS + TLD_ROS 原理以及源码分析

    扩展链接 xff1a 百度搜素vot2016 xff0c 会有相关的资料 KCF缺点是有边界效应 有一个改进的版本是 xff1a SRDCF 大牛的 CSDN博客 说明 xff1a http blog csdn net app 120620
  • 数据结构+算法=程序

    xff08 1 xff09 数据结构 43 算法 61 程序 每个学计算机的人都听过这个公式 这个公式是尼克劳斯沃斯在1976年出版 算法 43 数据结构 xff1a 程序 一书中提出 尼克劳斯沃斯还是Pascal编程语言的发明人 xff0