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

缘起

唐门教主上个月某天深夜写了一篇博客 --《编程的未来》,要我谈谈感想。 这也是最近软件工程师们聊得比较多的问题,上周,在上海的 “关东小磨” 和十多位 CSDN 博主聚会的时候,大家也稍微谈了一下这个话题,但是谈得不透。AI 就像 房间里的大象 那样,大家都从各自的角度感到了它的某种威胁,但是不能得到全面的观感 — 我想在本文整理一下我的思路。

在这里插入图片描述

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

AI 编程的能力边界

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

  • 生成的代码长度有限制。 很多情况下,不能输出完整的代码,还需要程序员来拼接代码,当然这些程序员要非常懂这些程序,才能拼接成功。 //问程序员:你参加过的最复杂的项目,总代码量有多少?能超过一千行代码么?
  • 不能有效处理超长的程序,开发环境的配置,多线程编程,已有程序的 bug 修复等问题。 //问程序员:你修复过的最复杂的 bug 是什么?
  • 泛化能力有限,如果是一个活人程序员,他在一个算法测试平台通过了很多编程练习,那么,他在另一个不同的编程平台也应该能应对自如。但是,目前的 ChatGPT 还是不能融会贯通,举一反三。 //问程序员:你能举一反三么?
  • ChatGPT 处理复杂编程中的抽象的 “类” 和 “依赖关系” 的能力还比较弱。 //问程序员:你在这方面能力如何?你写的最复杂的 OO 设计有多少的父类子类?
  • Fred Brooks Jr. 在著名的 “没有银弹” 论断中提出,软件开发中的关键任务就是理解并处理反映软件构成的复杂的概念, 目前的 AI辅助编程也并没有在这个方面取得突破。 //问程序员:你构建过多么复杂的软件,这个软件运行了几年,这几年中你是如何维护这个软件的?
  • 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 行代码集成到现有的十万行代码的系统中去,能把各个模块集成、优化为一个高效的系统。
  • 对软件运行数据的理解,能从数据中洞察到问题,而不只是一个会念数据的人类。
  • 提问的能力,向用户提问,了解用户的真正需求,向领导、同事提问,了解大家的思路,当然,还有从对方的角度思考问题的能力,交流的能力。
  • 和软件团队其他角色和流程合作的能力。 一个产品的质量,可能取决于整个流程中最差的那个角色和环节。 一个软件工程团队 有售前、产品经理,产品架构、技术架构、QA、安全体系、UED、售后支持等角色,程序员在编程阶段获得了 AI 工具的赋能,能否让其他角色和流程也能获得类似的赋能呢?
  • 对其他业务的了解,例如,你想让 AI 帮助医疗行业,你对医疗行业了解多少呢?

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

衣食住行的 “衣” 的变化

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

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

  • 百万年前 - 树叶、兽皮

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

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

  • 几千年前 - 手工织布机的出现和缓慢改进。 “男耕女织”,“子不学,断机杼” 的说法就出现在这个时代。
    -在这里插入图片描述
    还有这样的:

    整天坐着,一根线一根线地织布,似乎和现在码农一行一行地编码也很类似啊

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

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

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

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

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

  • 1844 年,德国诗人海涅写下描述纺织工人苦难情况的诗歌《西里西亚的纺织工人》

我们织进去三重的诅咒—— 我们织,我们织!

  • 在这里插入图片描述
    这首诗也选入了 1980 年代的中学课本。在工作场所诅咒自己的工作… 现在还有么?

上段文字提到的提花机,也传到了欧洲,在十九世纪获得极大的改进,其中一个模型就是雅卡尔提花机。 雅卡尔发明了一种用打孔卡片控制的纺织机,纺织机可以根据预先设置好的“程序”(虽然当时还没有“程序”这个概念)移动丝线,织出漂亮的布匹。这是第一次把信息通过一个机器能够识别的载体记录下来,再由这个信息来控制机器的运转。
现代计算机的先驱巴贝奇从雅卡尔的提花机得到了启发,很快想到可以把穿孔卡片应用到他正在设计的分析机上。分析机读卡装置的原理与雅卡尔提花机类似,也是靠探针尝试穿过卡片,要么顺利穿过,要么被卡片顶住,两种不同情况下的探针位移能产生不同的机械传动——这其实是计算机史上最早的二进制应用。

  • 百年前:化学纤维的出现,让衣服不再是 “一根一根的丝线纺织而成”
  • 几年前:衣服裤子👖 有破洞,都不是 bug 了,而是 feature! 牛仔裤做好后,还专门去做旧,搞出破洞。 (另外,把牛仔裤做旧、做烂的过程,对工人和环境并不友好,这点很多人并不了解!)
  • 在这里插入图片描述

请问

  • 在这千万年的演化中,服装行业是变大了,还是萎缩了,在这个行业工作的人,是有更多的机会了,还是更少的机会?
  • 现在软件编程这个行业,是处于纺织业的哪个阶段呢? (我想肯定不是破洞当作 feature 的阶段)
  • 巴贝奇这样的计算机先驱从纺织机械的设计中得到了启发,你能从纺织业或者其他行业得到什么启发呢?
  • 你认识了这个软件编程行业处于对应的 “衣” 阶段,你觉得应该从 “衣” 那个阶段获得什么启示呢?

一波一波的浪潮

另外,让工具来帮助编程,和软件工程的各个环节,一直以来都是软件工程师和软件科学家的愿望和探索。 从自动语法提示,自动测试用例生成,到 CI/CD,这几十年都有巨大的进步。 CASE (Computer Aided Software Engineering) 一度是一个非常热门的研究领域,最近为何很少听到了呢? ChatGPT 给我如下的解释:

CASE(Computer-Aided Software Engineering)是一种计算机辅助软件工程的方法,旨在提高软件开发效率和质量。它包括了多种工具和技术,如需求分析、数据建模、程序设计、测试等等。
然而,CASE在20世纪90年代之后逐渐没落了。其中的原因有以下几点:
复杂度高:CASE工具本身就很复杂,而且很难与其他工具集成。这导致了学习和使用CASE的门槛非常高,普通开发人员很难掌握。
成本昂贵:CASE工具的价格很高,因此只有大型企业才能承担得起。对于中小型企业和个人开发者来说,购买CASE工具是一笔巨大的财务负担。
缺乏标准:CASE工具之间缺乏标准化,因此不同的工具之间很难进行兼容和集成。这导致了开发效率的降低,使得CASE的应用受到了限制。
功能单一:CASE工具通常只能完成一部分的软件开发任务,无法满足复杂软件开发的需求。因此,开发人员往往需要同时使用多个CASE工具,这增加了开发的复杂度和成本。
综上所述,以上原因导致了CASE的没落。虽然现在已经有了更多的开发工具和技术,但CASE的思想仍然在软件开发中发挥着重要的作用。

我个人也搞过一些 “程序理解”, “自动编程” 的实验,下图是我和微软研究院的小伙伴在 2019 的内部 “黑客松” 上展现了 “自动找到你想要的 Python 代码” 的功能。核心想法是借鉴了 2018 年 GitHub 团队的工作,用 word-embedding 来训练和寻找代码、函数说明、代码注释的相关性,帮助用户找到他想要的代码。 这个小项目最后还得奖了。😄
在这里插入图片描述
在这里插入图片描述
一轮一轮的小波浪之后,一个大潮正扑面而来:
在这里插入图片描述

数据来自 CSDN 趋势图。

长忆观潮,满郭人争江上望。来疑沧海尽成空,万面鼓声中。
弄潮儿向涛头立,手把红旗旗不湿。别来几向梦中看,梦觉尚心寒。

IT 界每隔几年就有一波浪潮或者泡沫,新的一波大潮已经打过来了,躲?能跑多远?不如反方向跑,迎接浪潮,就像古诗中说的勇向涛头立 的弄潮儿。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python敲出爱心

Python敲出爱心 Python是一种高级编程语言,它的简单易学、可读性强等特点让它成为很多程序员的首选语言。除了作为一种功能强大的编程语言,Python也有很多有趣的用途,比如,我们可以用Python轻松地敲出爱心。 准备工作 在开始之…

爱心方程(专属理科生的浪漫?!)

目录 前言 C/C 源代码 扩展 Java Python HTML MATLAB 前言 这个在大一的时候就想找了,然后后面是找到了一个,但是忘记出处了。我决定把可以找到的所有爱心给整理一下,为了实现“理科生的浪漫”!!! …

使用Gpt-3绘制爱心,无法做到直接判断用户肉眼的上下来进行输出相应的图形代码. 默认“正着绘制“:朝着Y轴方向;终端 Y轴朝上,EasyX Y轴朝下.

前言 使用GPT-3(本站大佬链接) ; VS2010 ; EasyX 一、第一个图形在终端输出,GUI界面无输出(肉眼朝上) 生成爱心方向,与windows终端逻辑坐标Y轴相同,正方向朝上 1.对话 2.代码 #include <graphics.h> #include <conio.h> #include <math.h> #include &l…

ChatGPT工作提效之使用百度地图在首都为六一儿童节献爱心(多边形覆盖物、文本标注、自动获取经纬度、爱心函数)

ChatGPT工作提效系列 ChatGPT工作提效之初探路径独孤九剑遇强则强ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互)ChatGPT工作提效之生成开发需求和报价单并转为Excel格式ChatGPT工作提效之小鹅通二次开发批量API对接解决方…

新手入门前端代码单文件在线编辑器:codepen

作为一个前端新人第一次接触前端代码在线编辑器codepen&#xff0c;觉得这个还是很方便的&#xff0c;当需要请教别人查看你的代码哪里出了问题或者想要分享自己代码的时候就不需要那么麻烦了&#xff0c;只需要分享一个链接&#xff0c;就可以在线查看了。 传送门&#xff1a…

chatgpt赋能python:Python怎么敲代码敲出动态爱心

Python怎么敲代码敲出动态爱心 Python已经成为程序员们进行日常编程工作的首选语言之一。除了其易学易用的语法之外&#xff0c;Python还拥有各种各样的库和框架&#xff0c;有助于快速开发各种类型的应用程序。其中&#xff0c;Python的动态爱心代码在不同场景下得到了广泛的…

chatgpt赋能python:Python敲爱心代码的详细方法和注意事项

Python敲爱心代码的详细方法和注意事项 Python编程语言擅长数据处理和操作&#xff0c;也可以用于绘制图形。今天&#xff0c;我们将讨论Python如何在绘图功能中使用爱心。 什么是爱心绘图&#xff1f; 您可能已经熟悉了Python中的绘图功能。它可以绘制简单的图形和图表&…

chatgpt赋能python:Python敲代码敲出爱心:SimpleandFun

Python敲代码敲出爱心&#xff1a;Simple and Fun 记得在学习Python初期&#xff0c;我们总是会有各种各样的想法&#xff0c;希望用Python表达自己的情感和创意。今天&#xff0c;我们将分享一个特别有趣而且令人惊喜的事情&#xff1a;如何用Python怎么敲出爱心&#xff1f;…

chatgpt赋能python:Python怎么敲代码敲出爱心加名字

Python怎么敲代码敲出爱心加名字 在Python编程的世界里&#xff0c;有许多有趣的技巧可以让你的代码更加生动有趣&#xff0c;而其中一个最常见的就是敲出爱心加名字。这个技巧不仅能让你的代码更加个性化和有趣&#xff0c;同时也可以用于营销和SEO优化等方面。下面&#xff…

chatGLM-130B vs chatGPT,简单初步实测,看看谁更能打?

在前面初次接触到科大讯飞的星火大模型的时候我就写过一篇和chatGPT模型的对比分析测试文章&#xff0c;如下&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《chatGPT VS 科大讯飞星火大模型 使用初体验&#xff0c;到底谁更胜一筹&#xff1f;》 今天正好有点时间…

强化学习极简入门:通俗理解MDP、DP MC TC和Q学习、策略梯度、PPO

前言 22年底/23年初ChatGPT大火&#xff0c;在写《ChatGPT技术原理解析》的过程中&#xff0c;发现ChatGPT背后技术涉及到了RL/RLHF&#xff0c;于是又深入研究RL&#xff0c;研究RL的过程中又发现里面的数学公式相比ML/DL更多&#xff0c;于此激发我一边深入RL&#xff0c;一…

ChatGPT 连夜迭代,网友:你老婆不好使了。。。

ChatGPT凌晨升级&#xff0c;你的“老婆”真的不管用了。 以往&#xff0c;每当有人搬出“我老婆说xxx&#xff0c;我老婆永远是对的”这种话时&#xff0c;它立马秒怂认错&#xff0c;也不跟你争论25到底等于几了。 但现在&#xff0c;不管有没有老婆&#xff0c;ChatGPT都十分…

ChatGPT 连夜迭代:你老婆不好使了

点击上方“芋道源码”&#xff0c;选择“设为星标” 管她前浪&#xff0c;还是后浪&#xff1f; 能浪的浪&#xff0c;才是好浪&#xff01; 每天 10:33 更新文章&#xff0c;每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路&#xff0c;很肝~中文详细注释的开源…

ChatGPT 又迭代:这下连你老婆也不好使了 !

文末留言送书活动 ChatGPT凌晨升级&#xff0c;你的“老婆”真的不管用了。 以往&#xff0c;每当有人搬出“我老婆说xxx&#xff0c;我老婆永远是对的”这种话时&#xff0c;它立马秒怂认错&#xff0c;也不跟你争论25到底等于几了。 但现在&#xff0c;不管有没有老婆&#x…

chatgpt赋能python:Python如何搜索文献

Python如何搜索文献 在当今信息大爆炸的时代&#xff0c;我们需要越来越多的信息来帮助我们进行决策和工作。对于研究人员来说&#xff0c;搜索文献是非常重要的一步。Python作为一门简单易学的编程语言&#xff0c;可以帮助研究人员更加高效地搜索文献信息。 第一步&#xf…

OpenAI-ChatGPT最新官方接口《聊天交互多轮对话》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(二)(附源码)

目录 Chat completions Beta 聊天交互前言Introduction 导言Response format 提示格式Managing tokensCounting tokens for chat API calls 为聊天API调用标记计数 Instructing chat models 指导聊天模型Chat vs Completions 聊天与完成FAQ 问与答其它资料下载 Chat completion…

ChatGPT也不会的k8s安装方法——极简安装法

要学习k8s&#xff0c;首先要有一个k8s。那么如何才能获得一个k8s呢&#xff1f;这不由得让我想到了最近比较火的ChatGPT&#xff0c;以下简称小恰。 俗话说&#xff0c;遇事不决问小恰&#xff0c;解决效率翻上翻。让我们先来看看小恰怎么回答的吧。 问小恰 由于众所周知的…

ChatGPT用法

机器学习技术 chatgpt技术是一种机器学习技术&#xff0c;可以用于在线对话和社交机器人。通过将海量语料库中生成的文本进行建模和训练&#xff0c;可以生成准确、多样性和流畅的自然语言响应。 社交 chatgpt主要用于在线对话和社交机器人&#xff0c;其主要原理是基于神经…

ChatGPT开始颠覆整个教育系统!全球多所高校都要求学生远离ChatGPT

近期&#xff0c;人工智能&#xff08;AI&#xff09;领域动作频频&#xff0c;特别是以OPENAI公司的ChatGPT为代表的生成型AI面市以来&#xff0c;引发各界关注&#xff0c;有关ChatGPT的多个话题登上热搜。 目录 蹿红的AIGC到底是啥&#xff1f;ChatGPT又是啥&#xff1f; …