编程的未来 - 还有未来么?

news2024/11/17 11:30:19

缘起

唐门教主上个月某天深夜写了一篇博客 --《编程的未来》,要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题,上周,在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候,大家也稍微谈了一下这个话题,但是谈得不透。我想在本文整理一下我的思路。

在这里插入图片描述

软件行业有多少部分会被取代

AI 编程的能力边界

首先,从去年开始的 AI 辅助编程浪潮中,很多人提到,从具体的函数实现来看,目前的 AI 代码生成有很多做得不好的地方,或者有很多的 bug。 我认为不必纠结这些 bug,它们一定会不断地被解决,就是一个时间问题,也许是半年,也许是一周。 😄 但是,在编程方面,它有一个能力的边界,这个边界未必能很快跨越。
慕测平台的一篇高质量文章总结了 AI辅助编程目前的能力边界,我总结如下:

  • 生成的代码长度有限制。 很多情况下,不能输出完整的代码,还需要程序员来拼接代码,当然这些程序员要非常懂这些程序,才能拼接成功。 //问程序员:你参加过的最复杂的项目,总代码量有多少?能超过一千行代码么?
  • 不能有效处理超长的程序,开发环境的配置,已有程序的 bug 修复等问题。 //问程序员:你修复过的最复杂的 bug 是什么?
  • 泛化能力有限,如果是一个活人程序员,他在一个算法测试平台通过了很多编程练习,那么,他在另一个不同的编程平台也应该能应对自如。但是,目前的 ChatGPT 还是不能融会贯通,举一反三。 //问程序员:你能举一反三么?
  • ChatGPT 处理复杂编程中的抽象的 “类” 和 “依赖关系” 的能力还比较弱。 //问程序员:你在这方面能力如何?
  • ChatGPT 等编程辅助工具缺乏创造性编程的能力。 //问程序员:你曾经创造性地解决过什么问题么?
  • ChatGPT 等工具的能力,取决于提问者的能力。 //问程序员:你的提问能力如何?

如果 AI 做不到上面这些, 那么,我们的程序员有多少能做到的呢? (💡 上面红字部分,通常会出现在面试中,你会回答么?)

程序 - 软件 - 软件企业

在我们深入谈 AI 会取代程序员... 之前,我们先看看 软件 包含哪些成分。
我们要讨论的,AI辅助编程在工业尺度上,会起到什么作用? 在《构建之法》这本书里, 我提到下面的三个公式,我们可以看到 “编程” 到底在 IT 这个工业中,到底处于什么位置:

程序 = 算法 + 数据结构
软件 = 程序 + 软件工程
软件企业 = 软件 + 商业模式

现在的 AI 辅助编程,只是在第一个层次极大地帮助了程序员,但是在后面的两个层次,还是要靠人。 各种大语言模型和它们衍生的工具会在文档生产,归纳,流程处理方面有很多帮助,但是关键的地方,还是要靠人。

程序运行在 CPU 上,都在干什么? 都是对数据进行各种操作,增删改查 (Create Retrieve Update Delete — CRUD),一个好的程序,要保证这些操作的正确和高效,同时,要确保程序正确使用计算机的各种资源(内存,网络,外设,等)。 这些问题,都是可解的,AI 一旦学会,就能任劳任怨地做好。 但是人类通常有各种智力、懈怠、粗心等毛病,会犯很多错误。在软件行业发展的几十年中,代码正在不断地帮助人类,避免人类犯错误。就像文字编辑器能自动提示人类的拼写错误那样, 代码编辑器二十年前就能通过自动变量提示,语法高亮等方法,避免程序员犯错误,加快编程的效率。

所以,我们有 AI 在帮助大家写完整的函数,处理常见的问题,这是一件好事。

那么,这样的好事,为何让很多程序员非常担心呢? 在这个博客中, 我引用了软件工程专家 Kent Beck 的论断:

AI 会取代一个程序员 90% 的技能,但是会把剩下的 10% 的技能放大一千倍。

每个程序员都照照镜子问自己,我有哪些技能,是属于可以通过 AI 放大一千倍的

如果你只会增删改查,那么, AI 的确可以完全取代你。 这个博客也提到了一些 AI 短期内不太可能达到的技能:

  • 对技术的娴熟掌握,高效 debug 的能力
  • 对软件体系架构的全面理解,集成的能力,把你写的 1000 行代码集成到现有的十万行代码的系统中去,能把各个模块集成、优化为一个高效的系统。
  • 对软件运行数据的理解,能从数据中洞察到问题,而不只是一个会念数据的人类。
  • 提问的能力,向用户提问,了解用户的真正需求,向领导、同事提问,了解大家的思路,当然,还有从对方的角度思考问题的能力,交流的能力。
  • 对其他业务的了解,例如,你想让 AI 帮助医疗行业,你对医疗行业了解多少呢?

我们的程序员,也要多了解 #软件工程#, #商业模式#, #行业#, 才能让你的这些才能被先进的 AI 工具放大。

衣食住行的 “衣” 的变化

随着 AI辅助编程的发展, 程序员是不是就失去越来越多的工作机会,最后行业萎缩,没有价值了呢?

我们看看人类需求的第一位,在 “衣食住行”中名列前茅的 “衣”, 看看它的发展是不是会给程序员一些启示。 资料来自于网络和 ChatGPT,New Bing(例如百度百科,和一些文章https://www.sohu.com/a/400708937_99933236)

  • 百万年前 - 树叶、兽皮

  • 几千年前 - 用野生的麻。 用石轮或陶轮搓捻成麻线,然后再织成麻布。

  • 几千年前 - 人们已将蚕蛾驯化家养,并能织出较为精细的丝织物。到了殷商时期,养蚕已很普遍,人们已熟练地掌握了丝织技术。

  • 几千年前 - 手工织布机的出现和缓慢改进。 “男耕女织”,“子不学,断机杼” 的说法就出现在这个时代。
    -在这里插入图片描述
    整天坐着织布,似乎和现在码农编码也很类似啊

  • 一千年前: 提花织机的出现

  • 在中国古代织造技术中,最为复杂的就是提花技术。为了使织机能反复有规律地织造复杂花纹,人们先后发明了以综片和花本作为提花装置来贮存纹样信息,形成了多综式提花机和各类花本式提花机。提花技术是纺织史上的里程碑,提花机的基本概念是将提花规律贮存在织机的综片或是与综眼相连接的综线上,利用提花规律的贮存来控制提花程序,使得这种记忆信息得到循环使用。用今天的眼光看,古人发明的提花技术就是一种图形信息存储技术,如同计算机的程序,编好程序之后,所有的运作都可以重复进行,不必每次重新开始。

  • 黄道婆(十三世纪)学习、改进、推广了棉纺织技术和先进工具(现代程序员的祖师爷应该是她们?)

  • 在这里插入图片描述
    现在网上流传的 “爱心 Python 代码” 等等, 能编出这样的花样么?

  • 百多年前: 飞梭的织布工具,和珍妮机(Spinning Jenny)的出现,大大提高了生产率。也引起了手工业纺纱者的愤怒,到会了珍妮机,烧毁了发明者的房屋。 但是革新还在发展,后来出现了水力和蒸汽驱动的纺织机。 到 1830 年,英国整个棉纺工业以及基本上完成了从工场手工业到以蒸汽机位动力的机器大工业的转变。

  • 百年前:化学纤维的出现,让衣服不再是 “一根一根的丝线纺织而成”

  • 几年前:衣服裤子👖 有破洞,都不是 bug 了,而是 feature! 牛仔裤做好后,还专门去做旧,搞出破洞。 (另外,把牛仔裤做旧,做烂的过程,对工人和环境并不友好,这点很多并不了解!)

  • 在这里插入图片描述

请问:

  • 在这千万年的演化中,服装行业是变大了,还是萎缩了,在这个行业工作的人,是有更多的机会了,还是更少的机会?
  • 现在软件编程这个行业,是处于纺织业的哪个阶段呢? (我想肯定不是破洞当作 feature 的阶段)。

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

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

相关文章

一哥们从小厂逆袭,涨薪50%,真是麻雀啄了牛屁股,雀食牛逼啊

前言 大多数情况下,软件测试人员的个人技能成长速度,远远大于公司规模或业务的成长速度。所以,跳槽成为了这个行业里最常见的一个词汇。 实际上,跳槽的目的无非是为了涨薪或是职业发展,我也不例外。普通本科毕业后&a…

vscode课程学习分析选课作业系统nodejs+vue

软件体系结构方案:由于本系统需要在不同设备上都能运行,而且电脑配置要求也要越低越好,为了实现这一要求,经过考虑B/S结构成为最佳之选。使用B/S结构的系统可以几乎在任何电脑上运行,只要浏览器可以正常工作就可以正常…

操作系统复习5.1.0-I/O管理

分类 按使用特性分 人机交互类:键盘、鼠标、打印机 存储设备:移动硬盘、光盘 网络通信设备:调制解调器 按速率分 低速设备:键鼠 中速设备:打印机 高速设备:磁盘 按信息交换单位分 块设备:…

yum和vim【Linux操作系统】

Linux软件包管理器 yum Linux安装软件: 源代码安装(下载到程序的源代码,进行编译,得到可执行程序,太麻烦,因此有些人会将有些常用的软件提前编写好,做成软件包) rpm安装(…

BCD格式及与十进制/十六进制的转换

本文框架 前言1. BCD码是什么?2. 不同进制与BCD码之间的转换2.1 十进制与BCD码的转换2.1.1 十进制转换为BCD码2.1.2 BCD码转换为十进制 2.2 十六进制与BCD码的转换 前言 在诊断快照开发中会遇到保存年月日等使用BCD码格式的需求,本篇我们就一起看一下BC…

Sentinel监控微服务_流量控制_熔断降级_系统规则讲解

Sentinel 监控微服务 需求分析/图解 需求: 使用Sentinel 控制台对member-service-nacos-provider-10004 微服务进行实时监控 示意图 当调用了member-service-nacos-provider-10004 微服务时, 可以监控到请求的url/QPS/响应时间/流量 代码/配置实现 修改member-service-nac…

Redis之SDS数据结构的使用

目录 序言字符串 char*字符串数组简单动态字符串SDS 序言 Redis的几种基本数据结构有字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set&…

美国原装二手KEYSIGHT N8975A是德N8975B噪声系数分析仪

KEYSIGHT / AGILENT N8975A N8975B 噪声系数分析仪 Keysight N8975B 高性能噪声系数分析仪旨在进行快速、准确和可重复的噪声系数测量。它有一个多点触控界面,允许拉伸、捏合和拖动手势。大多数菜单都可以通过手指轻点来访问,而无需切换屏幕。通过允许…

【数据结构】第10周

目录 1.图的基本术语 2.图的存储 2.1邻接矩阵 2.2.邻接表 3.图的遍历 3.1 深度搜索 dfs 3.2 广度搜索 bfs 4.图的应用 4.1 最小生成树 4.1.1 普里姆算法 4.1.2 克鲁斯卡尔算法 4.2 最短路径 4.2.1 Dijkstra算法 4.2.2 Floyd算法 4.3 拓扑排序 4.4 关键路径 一些…

chatgpt赋能python:Python创建一个Animal类介绍

Python创建一个Animal类介绍 Python是一种高级编程语言,其简单易学、灵活性强、可读性高以及强大的库使得Python非常受欢迎。在Python中创建类非常容易且非常常见,我们可以使用Python创建各种类型的类。今天,我们将讨论如何使用Python创建一…

OpenAI发布最新研究让大模型数学推理直接达到SOTA

🦉 AI新闻 🚀 OpenAI发布最新研究:基于过程奖励的监督方法,让大模型数学推理直接达到SOTA 摘要:OpenAI最新研究基于GPT-4微调,采用过程监督和结果监督两种监督方法,奖励每个正确推理步骤的过程…

微信小程序开发实战 ⑨(TabBar)

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

机器学习:基于XGBoost对信用卡欺诈行为的识别

机器学习:基于XGBoost对信用卡欺诈行为的识别 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞&#x1f4…

Kafka集群安装部署

Kafka集群安装部署 简介 Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。 同RabbitMQ一样,Kafka也是消息队列。不过RabbitMQ多用于后端系统,因其更加专注于消息的延迟和容错。 Kafka多用于大数据体系,因其更加…

大数据Doris(三十三):Spark集群搭建

文章目录 Spark集群搭建 一、Spark Standalone 集群搭建 1、下载Spark安装包 2、上传、

Vue+springboot老年人活动报名教育学习系统

基于java语言设计并实现了老年教育学习系统。该系统基于B/S即所谓浏览器/服务器模式,应用Springboot框架,选择MySQL作为后台数据库。系统主要包括首页、个人中心、老年人管理、负责人管理、课程教师管理、组织者管理、活动信息管理、活动申请管理、活动策…

python实现Canny算子边缘检测算法

边缘检测是一种将图片中关键信息表现出来的一种图片技术,它的结果并不是字面意思上的获取图片边缘,而是将图片有用的信息勾勒出来,类似素描的结果,但是已经去掉了很多信息。如下所示,一张原始的图片是这样的&#xff1…

HGFormer:用于领域广义语义分割的层级式分组Transformer

文章目录 HGFormer: Hierarchical Grouping Transformer for Domain Generalized Semantic Segmentation摘要本文方法实验结果 HGFormer: Hierarchical Grouping Transformer for Domain Generalized Semantic Segmentation 摘要 目前的语义分割模型在独立同分布条件下取得了…

正准备升职加薪?自动化测试框架设计原则必须要知道...

本期小编将为大家带来自动化测试方面的基础知识,正在学习及将要提升学习自动化的同学们可自行参考啦,希望大家都可以尽快升职加薪! 下面跟着小编来认识一下自动化测试框架及其原则吧! 自动化测试框架 自动化测试框架需要基于特…

Transfomer编码器中自注意力机制、前馈网络层、叠加和归一组件等讲解(图文解释)

Transformer中的编码器不止一个,而是由一组N个编码器串联而成,一个编码的输出作为下一个编码器的输入,如下图所示,每一个编码器都从下方接收数据,再输出给上方,以此类推,原句中的特征会由最后一…