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

news/2024/7/5 3:06:34

缘起

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

在这里插入图片描述

软件 = ?

首先,从去年开始的 AI 辅助编程浪潮中,很多人提到,目前的 AI 代码生成有很多做得不好的地方,或者有很多的 bug。 我认为不必纠结这些 bug,它们一定会不断地被解决,就是一个时间问题,也许是半年,也许是一周。 😄
我们要讨论的,AI辅助编程在工业尺度上,会起到什么作用? 在《构建之法》这本书里, 我提到下面的三个公式,我们可以看到 “编程” 到底在 IT 这个工业中,到底处于什么位置:

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

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

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

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

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

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

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

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

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

衣食住行的 “衣” 的变化

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

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

  • 百万年前 - 树叶、兽皮

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

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

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

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

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

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

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

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

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

  • 几年前:衣服裤子👖 有破洞,都不是 bug 了,而是 feature! 牛仔裤做好后,还专门去搞出破洞。 (!)

  • 在这里插入图片描述

请问:

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

http://lihuaxi.xjx100.cn/news/1202210.html

相关文章

华为OD机试 - 数据最节约的备份方法(Java JS Python)

题目描述 有若干个文件,使用刻录光盘的方式进行备份,假设每张光盘的容量是500MB,求使用光盘最少的文件分布方式 所有文件的大小都是整数的MB,且不超过500MB;文件不能分割、分卷打包 输入描述 一组文件大小的数据 输出描述 使用光盘的数量 备注 不用考虑输入数据不合法…

bat脚本代码,一键修改网卡的dns地址和恢复为DHCP获取的方式

echo off REM 指定为 Unicode 编码(65001)来解决中文乱码的问题 chcp 65001 >nul REM 脚本以管理员身份运行 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","&quo…

Gradio的web界面演示与交互机器学习模型,Blocks的事件侦听《7》

在第一篇文章我们就熟悉了Blocks的用法,使用Blocks比Interface更加灵活,这节重点关注Blocks里面的相关操作。 1、Blocks标准例子 import gradio as grdef greet(name):return "你好 " name "!"with gr.Blocks() as demo:name g…

竞赛中常用的Python 标准库

对竞赛中常用得标准库进行解析和给出代码模板 目录 1.functools 1.1 cmp_to_key 1.2 lru_cache(记忆化存储,加快递归速度) 2.collections 2.1 deque 2.1.1 单调对列实现 2.1.2 BFS广搜 3.sys 3.1 sys.maxsize 3.2 sys.exit() 3.…

基于Hive的数据应用实践总结

百分位数(percentile)计算 百分位数含义:统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如&#x…

milkV-duo的Linux的开发环境搭建

目录 写在前面 内核编译 烧录失败的示例(这种情况下就和插上空卡一样) 进入系统 串口进入 SSH接入 写在前面 基本上大部分的问题都能在开源社区上得到答案,记录下我遇到的问题. 附上开源社区 MilkV Community 这里的引脚图和板子的丝印有点对不上&#xff…

Java使用Spark入门级非常详细的总结

目录 Java使用Spark入门环境准备安装JDK安装Spark 编写Spark应用程序创建SparkContext读取文本文件计算单词出现次数 运行Spark应用程序总结 Java使用Spark入门 本文将介绍如何使用Java编写Spark应用程序。Spark是一个快速的、通用的集群计算系统,它可以处理大规模…

卓望数码前端一面

卓望数码前端一面 原文网址:https://www.nowcoder.com/discuss/409361218459234304?sourceSSRsearch 1.css中flex布局有哪些常见的属性 display:flex 首先让一个容器为flex布局应该写 display:flex flex-direction flex有两个关键的轴,分别是主轴…