阿里发布的Qwen2.5-Coder模型是一个开源编程模型,其32B版本在代码生成、修复、推理及多编程语言支持方面的性能已接近GPT-4和Claude 3.5 Sonnet的水平。这表明国内大模型在编程细分领域的进步迅速,且开源特性使其更具影响力。
百度的“秒搭”结合了AI和多智能体技术,用户无需招募项目经理、设计师或开发人员,只需通过自然语言指挥多个智能体协同完成任务。这意味着未来编程将更加依赖自然语言,普通人也能轻松创建AI应用或智能体。
黄仁勋认为,AI的发展将大大降低学习编程的意义,未来人类应专注于生物学、教育学、制造业和农业等技能。他预测编程语言将普及,每个人都能成为程序员,这是AI带来的奇迹。
编程语言经历了四代发展:第一代是机器语言(二进制代码),第二代是汇编语言,第三代是高级编程语言(如Fortran、C、Java),第四代是更接近人类自然语言的编程语言(如Python、Ruby)。每一代都在降低编程复杂度,提升表达效率。
只要冯诺依曼结构的计算机存在,编程语言和软件就不会消失。编程语言是人与计算机沟通的桥梁,而软件则广泛应用于各个领域,从协作办公到医疗、教育等,软件吞噬世界和软件定义一切的趋势仍在持续。
大模型如GitHub Copilot和Cursor AI通过自然语言理解和代码生成能力,显著提升了编程效率。这些工具不仅能辅助编程,还能自动生成代码,甚至让非专业用户也能快速构建应用程序,推动了编程工具的自动化和普及化。
程序员需要具备编程思维、专业领域理解能力以及代码串接和补齐能力。编程思维涉及逻辑化、规范化的需求表达;专业能力要求对特定行业的深入理解;代码串接能力则帮助解决AI生成代码中的缺陷和复杂问题。
让孩子学习编程有助于培养编程思维和逻辑能力,但不应以谋生或考证为主要目的。编程技能未来可能会随着技术发展而变化,因此更应注重培养孩子的创造力和解决问题的能力,而非特定语言的掌握。
未来的职业教育应注重培养程序员的专业能力和代码串接能力。程序员需要熟悉所服务行业的专业术语和逻辑规则,同时具备解决复杂问题和优化AI生成代码的能力。职业转型将更倾向于高端的架构师和行业专家。
AI不会完全取代程序员,但会改变其角色。程序员将更多从事需求分析、逻辑建模、框架搭建和代码优化等工作,而AI则负责代码生成和基础任务。顶尖程序员和行业专家仍将具有不可替代的价值。
欢迎收听由科技版版牌和 AIGC 开放社区联合出品的播客节目伴随着近期一系列关于 AI 编程的一些新产品一些新闻的爆出让 AI 能否替代程序员以及我们的未来是不是还要继续学习编程这样的话题又热了起来
我真的很怀疑这次大模型在人工智能领域的第一个真正产生颠覆性的应用可能就是会出现在编程领域程序员两年前可能还被很多人视为金饭碗的一个行业怎么一下子就说变成了黑暗会砸了这个饭碗呢程序员这个行业是否还存在以及我们未来的年轻人孩子们是否还需要编程
我正是带着这些的问题 所以才决定整理材料做了本期节目在节目开始前 我也想提前概括一下这期节目的内容和我们的思路是什么首先我们会聊一下近期到底发生了哪些事件以及有什么业内的大佬又讲了什么样的话第二 我们会回顾一下人类历史上为什么会出现了编程语言这种东西它存在的价值是什么
第三,我们会去回看说我们过去的这若干年,我们是如何去降低我们人类编程的复杂度以及试图用自然语言来去表达编程这个话题接着我们就会去聊由于大模型的诞生给我们所有的这些工具平台发生了哪些本质上的变化
在最后一部分我们就来得出一些结论到底程序员这个职业存不存在以及他们需要哪些技能那未来我们的教育应该走向何方所以这就是我们整个今天节目内容的大致的一个思路那好我们正式开始今天的主题那到底最近发生了哪些事情呢
首先我们可以看到在 9 月份的时候阿里刚刚发布了它的千问的 2.5 的 coder 的编程模型首先这是一个开源模型它一下子发布的包括 0.5B 3B 14B 和 32B
从测评结果上来看我们可以看到千文 2.5 这个 coder 的 32B 的模型就是 321 参数的模型它的整个在测评上它的性能基本达到了和 gpt4o 和 cloud3.5 sonnet 的水平这里面包括了代码生成代码修复代码的推理以及多编程语言的各个方面的一个情况
我们大家可能都知道就是说 GPT-4o 和 Cloud 3.5 Solnet 目前代表世界上的一个最高的水平一个是来自于 OpenAI 这家顶天的大模型公司另外一个来自于基本上我们可以说是第二名的 Anthropic
这家公司那从时间上来看呢 4 欧差不多是 8 月份发布的 Cloud 3.5 呢是 10 月份发布的也就是说现在目前国内的这些大模型通常在两到三个月的时间内基本上就可以赶上了全球的这个最新或者最高的这个水平哈
另外一个比较震惊的原因也是因为这个模型其实是一个开源模型因为我们知道前两个基本是避远模型其实这个也背后代表了我们在大模型编程细分领域的进步还是非常大的当然我们也说目前这只是一些通过一些测试题做的一些测评数据
因为目前千万 2.5 的 coder 已经集成到了 cursor 就是最新的 ID 平台中这个平台我们后面还会讲到所以未来我们很多的结果还是要用我们很多程序员或者用户的口碑来去检验的第二件事情就是在上周 11 月 12 日
2024 百度的世界大会上百度 CEO 李延宏发布了最新的他们的无代码工具叫做秒搭而且他在里面特别谈到这是 one more thing 就是新增的一件事情这个秒搭是结合了 AI 和多智能体的一些技术我们首先听听李延宏在发布会上是怎么说的这意味着什么
这意味着你不需要去招募项目经理设计人员开发人员测试人员等等你自己就可以指挥多个智能体来协同完成任务也就是说只要有想法你就可以心想事成我们将迎来一个前所未有的只靠想法就能赚钱的时代
随着大模型技术的能力还在于指数级的跃迁自然语言就成为了这个时代最重要的编程语言我们每一个人都能够动手创造一个属于自己的也属于他人的 AI 应用或者智能体我是软件工程师出身国外有一种说法叫做软件吞噬世界
但我认为这个世界不应该被吞噬而应该被创造,A.I 时代应用创造世界所以请大家和我一起见证 Applications creating the world 谢谢大家因为秒搭明年才能正式对外使用目前其实还没有看到如何去试用
但至少我们看到了未来大模型结合 AI 然后五代码平台的这样一个发展的趋势在讲话中至少李延红传达了两种观点一种是说自然语言是可以替代传统的编程语言的第二每个人都可以成为程序员其实这也是李延红一贯的观点他在 24 年的 3 月份的时候参加央视的对话的开年节目上李延红就曾经讲过类似的观点
以后其实不会存在程序员这种职业或者说所有的人只要你会说话甚至连写字可能都不用你只要会说话你就会具备今天的程序员所具备的能力其实这个意义还是很大的有时候我们调侃过去大家学编程语言学 C++学 Python 之类未来的编程语言只会剩下两种
一種叫做英文一種叫做中文目前這個世界上人文智能技術最頂天的兩個語言嘛未來的人覺得還是最超級的興奮的
虽然李安红的两次表达内容不太相同但是观点来说看起来是类似的那你如果觉得李厂长的评估可能是没那么靠谱的话那么其实在国外也有类似的讲法那么全球股票市值目前已经第一的公司就是英伟达
CEO 黄仁勋黄教主在年初的一次演讲中其实也提到了他说深圳市 AI 在未来发展将会大大降低了学习编程的意义人类应该专注于更多的技能比如说生物学教育学制造业和农业
所有人都不需要再学习编程而且编程语言将成为普及的人类的这种的预言每个人在世界上他都可以成为程序员说这就是人工智能的奇迹我们也来听听他的原话是怎么说的
我想说一句,这会和人们感觉完全相反。在这十年,十五年之内,几乎所有人都会告诉你,你孩子要学习电脑科技,每个人都应该学习计划。实际上,这和几乎相同。
我们的工作是在创建设计技术,让没有人需要设计,让设计语言成为人类。世界上所有人都成为设计师。这是人工智能的奇迹。国家、国民,在电脑工学中解决数据问题的解决方法,
或在教育年轻人或在生产或在農地那些人,懂得了业务的知识,现在可以使用你所适当的技术。你现在有一个电脑,它会做你所指示的事。我们必须把每个人都升级,而我相信升级的过程会是惊人的。
同样,Stability AI 的 CEO Mostaki 也讲出过类似的观点,他的观点在最后总结到说,五年后就不会再有程序员了。ChatGPT 可以通过 Glue Level 3 程序员试,它可以在 MacBook 或 iPhone 上使用。- 现在吗? - 是的。- 五年内没有程序员。 - 五年内没有程序员。
差不多也就是几周前谷歌的首席执行官皮柴哥在 2024 年第三季度的谷歌公司的财报会议上曾经表示谷歌现在超过四分之一的新代码都是由 AI 产生的而且这些生成的代码是由 AI 产生之后再由工程师去审查和检查的
所以正是这一系列的产品的发布新闻的爆发这些科技大佬的讲话那让我们很多的从业者就会迷茫让我们的很多的家长也会迷茫那是不是让我的孩子再继续学习编程呢那程序员这个行业是否还有价值呢甚至这个职业是否还会存在呢那这个如果我们讲的今天讨论这个话题放在两年前那可能都会被视为天方夜谭哈
因为当时各个大学里边的计算机系都在扩招然后每年会产生很多的毕业生但在外面也有很多的所谓的编程的培训机构为这种企业来培养专业技能的人才互联网上也有各式各样的培训课程大学毕业以后就会成为程序员或者我们叫马农因为马农这是一个大家对这个群体嘲讽的一种说法
以前的可能大家最多就是嘲笑一下头发少什么格子衬衫不苟言笑什么的但是如果这些学生能够毕业去大厂能够当程序员拿到高薪收入稳定前途光明那其实是个妥妥的优质白领怎么会这样一个正是如日中天的行业突然就会被社会淘汰呢
如果我们想要讨论是否要学习编程的话题,我们首先要了解一下什么是编程语言,编程语言是怎么来的,它经过了什么样的发展路径,我们这里面也不是做过多的学术考古,只是帮大家梳理一下整个编程语言的脉络。
事实上在 1940 年代世界第一台计算机就是爱尼亚克诞生的时候其实那个时候是没有所谓的编程语言的没有编程语言我们怎么来控制计算机的处理和运行所以像爱尼亚克这样的计算机它没有用于代码存储的存储器它主要是通过这种物理的方式重新来布施它的连接线和这种操作数千个开关和电缆来去控制计算机程序的
到了后来冯诺伊曼提出了整个的计算机的结构里面才谈到了使用存储器来存放程序的这样的理念那么这些要求这些程序就需要被人编写起来也逐步就有了计算机编程
所以按照教科书的概念计算机的编程是通过设计和构建可执行的计算机程序来执行特定的一个计算过程这就是讲计算机编程从今天来看我们大概走过了 4 代的编程语言第一代编程语言也就是说单纯的所谓的机器语言 Machine language
这个是由于说当时的数字设备只能理解 1 和 0 这样的二进制的语言而且那个时候还没有所谓的编译器和汇编器更多的是通过线路来控制面板然后或者我们给机器输入一些打孔带或者打孔卡来直接下达指令打孔就代表 1 不打孔就代表 0 计算机可以直接来识别和执行这些指令集合
所以早期我们可以看到的计算机解决的问题是比较单一的那几乎就是一些复杂的数学计算问题那机器语言的特点是什么呢因为它是直接告诉计算机 1 和 0 那它的运行速度就比较快效率也比较高但缺点是什么当它发生错误的时候呢这样 1 和 0 的代码是机器不容易被修复的
即使我们在现代的一些程序中可能一些开发人员偶尔还会使用这种低级别的机器代码对一些比较驱动程序或者固件或者硬件设备的程序接口可能做一些编程这种编程已经很少存在了第二代的编程语言就是汇编语言
早年间我们作为计算机本科的学生还要去学习汇编语言我不知道现在的学生是不是还在学习汇编汇编语言更多的是把我们刚才说的这种机器指令的代码然后进行一个转换它表达形式来说也是一个比较低级形式的编程语言
这个的会编语言的指令体系和计算机体系这种结构的机器代码之间有强强的对应性就是说我到底要怎么去操作机器所以就用会编语言来去写明会编语言通常每一条机器指令都会有一个语句几乎是一对一对应的
当然了它也支持一些像常量注释会编辑指令符号标签等等的通常在汇编语言里面会去支持内存的位置寄存器和红处理等等那汇编语言在很长时间内曾经被广泛的用于各种编程活动中比如从 50 年代末开始那大家就可能为了提高这个编程要率那汇编语言才逐步被更高级的开发语言所替代
一样今天的汇编语言也是偶尔在用于直接操作硬件或者访问处理器的一些关键性能上会使用到汇编语言今天我们看到比较典型的一些设备驱动程序第一级嵌入式的系统或者实际系统可能会用这种汇编语言来去编程
我们其实大家可能比较知道的其实是已经都到了我们的第三代了就是我们的高级编程语言比如说类似 Fortune Basic C 或者 Java 这个时候已经进入到 1960 年代了高级的编程语言其实是对机器语言更高层次的抽象
高级的编程语言一般不会让用户直接去操作寄存器内存地址调用堆栈等底层处理而它处理的主要对象就是一些我们在程序中看到的变量数组对象一些运算符号或者波尔表达式以及可能我需要调用的一些子程序或者函数处理方式就包括循环线程锁等计算机我们现在经常理解的这些计算机的编程的概念
就这样才能让真正的程序员和我们真正在底层操作的这些硬件的这些操作的语句相分离而让我们的程序员更加关注于这段程序的所谓的计算逻辑和应用逻辑的处理而不必再去关心一些底层的计算机的一些硬件的配置和设置
所以高级的编程语言是更加注重代码的可用性、可读性、可解释性、可维护性和见状性而并不是说我们程序要求处理的多快速当然这背后其实代表了整个计算机的性能在不断的提升所以我们才对性能和存储量的要求并没有那么高了
世界上第一个为计算机设计的高级的编程语言是 Planck-Herkul 这个是其实在 1943 年到 45 年是德国的计算机支付楚泽所设计的但当时由于计算机硬件所限其实这个语言其实没有能得到使用也并不为人所知直到 2000 年的时候这门编程语言才在柏林大学首度成功执行
而真正的被人类所使用的第一个编程语言是 IBM 巴克斯所发明的 Fortune 语言那在它是 1958 年首次正确编译和处理的当时 Fortune 主要的在计算机上主要是编写用于工程和一些科学计算比如说一些天气预报计算流体动力等离子的一些物理体地球物理学等等的这些专业的科学的计算
那后面来说呢随着计算机的普及那就产生了所谓的 Basic 语言 Basic 语言呢其实是达特茅斯学院凯梅尼当时呢主要是为了推广分识系统以及普及大学生教育而推出的一种叫做简单辩证语言这是 Basic 的全称哈
当然大家知道后来 Basic 的比较著名的人物就属比尔盖茨了因为他在高中时代就使用过 Basic 编程后来盖茨成立了微软之后他们就形成了第一个所谓 PC 版的 Basic 后来演变成叫 Microsoft Basic 在 90 年代微软推出了 Windows 之后计算机也进入了图形时代可能基于文本行的这种 Basic 语言就走到了尽头
那后来微软呢就是还推出过一个基于 Windows 的版本叫做 Visual Basic 可能早期学编程的人可能还会了解到这个可视化的这个 Basic 编程语言那后来比较在广泛使用的那当属 C 语言了 C 语言是 1970 年代由 Dennis 李奇所创建的但它是整个伴随着 UNIX 操作系统而诞生的语言
从现在的视角来看其实 C 语言既是一种高级编程语言也是一种低级的编程语言因为它可以去底层去操作计算机硬件的一些指令机但是相反它也不直接依赖于这些硬件开发者可以轻松的使用在任何机器上能够在编写 C 语言
我们今天直到今天我们可以看到其实 C 语言在流行程度上影响力以及动摇度上在所有的开发语言直到今天几乎没有跌出过开发语言的前三名也就是说我们今天可以看到很多语言在优雅度表现力和效率和简洁之间其实仍然没有 C 语言做得好
那 C 语言呢其实还启发了后续很多的编程语言包括后面的 C++呀一直与苹果公司现在用的这个 Object C 和这个微软后面用的这个 C Sharp
大家今天还在常用的另外一种编程语言就是 JavaJava 主要体现的是面向对象编程的特征它是 James Gosling 在 1991 年 6 月所发起的 Java 语言开发项目所开始所以它归属在三公司当然后来三公司又被 Oracle 收购了 Java 其实是一种高级的基于类和面向对象的编程语言
它的设计目的是减少所谓对平台的依赖度那是一种通用的编程语言希望能够让程序员编写一次随处运行所以在 Java 的程序里边是需要在 Java 的虚拟机上也就是 JVM 上来去实现的而不用让程序员再去关心底层的计算体系架构到底是怎么样的
其实这些高级编程语言很多功能都是类似的而且他们都支持图灵完备性所以在很长一段时间我们认为有了 C 有了 Java 其实就能够满足我们几乎所有的编程的需求了逐步我们又开发了作为第四代的编程语言像 Python Ruby Circle 其实像 Python 这类语言它其实是伴随着我们的互联网和人工智能时代所诞生的
那 Python 语言呢支持大量的这种动态类型以及垃圾回收的机制而且支持多种的编程范式包括结构化的也包含面向对象和函数式的
它最大特点是有一个比较大的全面的库经常它被描述为说自带电池的一种语言 Python 最近一直被评为最流行的编程语言并在整个人工智能的机器学习的社区中得到了广泛的支持其实我们今天可以看到很多编程语言的初学者都是在使用 Python 来作为自己的首选
当然世界上的编程语言非常多有些就是昙花一现有些像刚才我们提到的这种长盛不衰这当然离不开编程语言自身的一些能力当然这些编程语言和他们所处的生态环境编程社区的支持力度也是离不开的
那并且呢一些主流的平台的支持情况啊也能够帮助这些编程语言能够快速的发展啊我们在这里就不再展开讲了哈大家懂的人自然都会懂啊
我们通过分析四代的编程语言的整个的变迁其实向我们展示了什么样的一个特点编程语言其实跟我们人类自然语言表达最大的不同就在于说自然语言是用于人与人之间交流的而编程语言是作为人向机器传达指令的中间的一种载体也就是说事实上它发生了一个三者的变化那就是我们人类所表达的自然语言当然
在过去来说主流就是英语第二个就是编程语言编程语言是作为人与计算机沟通的桥梁第三就是计算机计算机用于运行和处理这些我们编程的这些应用程序它背后运行的就是这些代码
一方面编程语言要屏蔽掉计算机端就跟我们说第三块的一些问题你比如说硬件的依赖软件的依赖跨平台的问题所以我们看到很多语言是在解决底层的计算机的差异性问题
而另外一方面我们是希望用户在使用这些编程语言的时候要尽量的语法简洁规范更加容易的使用并且你在使用的时候一定要有一些代码资源库容易维护尽量贴近人类的这种的自然语言但人类的语言的最大的问题是不太标准不规范所以这些我们看到的所有的编程语言一直在自然表达和标准规范之间在找平衡
所以我们可以看到其实过去的编程语言在解决编程语言和计算机这段做了很多的事情但是在人如何转化成编程语言之间的这个过程呢还有很多的探索当然这次是通过大语言模型我们在试图来解决这个问题那总体上来看呢其实我们在编程语言的设计的这个理念上一直在朝着让自然语言逼近的这样的一个过程
所以这次人工智能的出现其实也是符合整个编程语言的整个的发展的趋势所以首先要澄清一点编程语言这件事情首先不会消失只要计算机的基本范式还存在也就是我们今天讲的冯诺依曼结构的计算机不改变那么就需要为给这些机器他们能听懂的这些指令要通过编程语言来去给他们这些指令这件事情就不会消失
所以我们可以看到其实编程语言如果要消失的话那首先要计算机本身的硬件做出大的一个改变或者说计算机要首先消失那既然编程语言还仍然存在那么用编程语言写的这些软件会不会消失呢或者停步不前呢那我想答案也是否定的啊现在对计算机所使用的软件的趋势来说可以看到是越来越多越来越广啊
其实大家一定听到过软件吞噬世界和软件定义一切这两个说法这个两个说法恰好代表了整个软件发展的一个广度和深度那广度就是我们讲的这个软件吞噬世界这个其实是在 2011 年 8 月份的时候马克安德森在曾经一篇文章中写到 Why software is eating the world
这篇文章是其实他回顾了当时互联网智能手机以及云计算对于商业的一些改变另外他也写了软件未来的进一步重塑汽车零售物流金融医疗保健教育等传统行业他从协作办公到营销销售到人力财务再到 IT 安全软件的逐步会走向这种 SaaS 的商业模式
特别是我们看到在微软或者 Oracle 的时代企业软件往往以功能性来组成而在 SaaS 时代软件则已专注于某个行业或领域组成所以他特别谈到了说未来的很多软件都提供 API 接口然后为去跟企业的应用去对接所以他谈到了软件吞噬世界的问题
另外我们第二句话就是软件定义一切其实它代表了软件的一个深度我们以前可以看到所有的硬件和软件是分的比较清楚的但是后来就产生了软件定义某某的这样的一个热点的术语最早来自于所谓软件定义网络
那传统的网络体系结构呢大多数是由这种路由器啊交换机这种所配置形成的网络的这种设备制造商呢也不允许第三方的开发者对硬件做一些纯新的编程那所以它更多的是直接写在这个交换机和路由器里面所以它构成了一种以硬件为中心的这种网络体系架构
但是伴随着整个网络的复杂度复杂性增高然后它的扩展性的一些问题资源利用率的问题维护上的问题那就逐步的无法满足需要了所以才会产生了利用软件来重新定义网络架构的这样的一个讲法
后面就逐步出现了软件定义的存储软件定义的环境软件定义的数据中心等等后来就变成了叫软件定义一切 software define everything 经常简称为 SDX
软件定义一切逐步成为了一种符合软件基础设施化的特别明显的特征它体现了在整个我们数字经济的时代我们的很多活动是依赖于这些基础设施的而软件也构成了这些硬件基础设施最重要的一个组成部分这个和传统的一件软硬件的理解是有很大的差异的
但不知道会不会以后就变成了说 AI 吞噬世界 AI 定义一切这样的新的说法前面我们也讲到了编程语言不会消失软件也不会消失如果我们把编程语言比作生产资料的话软件成果比作我们的生产的结果的话也就意味着从我们把编程语言生产资料用来加工变成成果之间的这件事情也不会消失
既然这项工作不会消失为什么程序员会消失其实背后的原因大家可能想象的说并不是这一段产生消失而是在用人类语言到达编程语言的这一端然后的一些工作变为了消失所以我们才说程序员编程这样的一个技能或者职业会消失但事实上在大模型出现之前
我们就在试图利用简化编程或利用自然语言的方式去编程这个问题上我们就已经做了很多的探索那在工具层面主要体现为两大类的工具一类就是我们的所谓叫集成开发环境 IDE 那另外呢我们就是后面近年来谈到的所谓的低代码平台或者无代码平台那我们首先来看看 IDE
我想所有学习编程的朋友们最早可能都是来使用 IDE 来学习编程语言的 IDE 的这种直观性和易用性也非常的显著的降低了大家学习编程的这样的一个门槛
事实上 IDE 也是伴随着编程语言的诞生就诞生了最早就是在 DataMouse Basic 上就我们刚才谈到的 Basic 语言上有了第一种使用 IDE 的这样的一个方式它主要是在控制台或中端前当然那个时候它是基于命令行的不是基于图形界面的当时它就集成了一些编辑文件管理编译调试执行能简单的功能
到了 1970 年代,德国的慕尼黑的 Softlab 开发了世界上的第一个真正的软件集成开发环境,叫做 Mastro 这个 Mastro 当时在全球来说有 22000 名的程序员进行了安装到了 1989 年的时候,当时在德意志联邦德国就有 6000 个这样的安装的介质
我们可以说当时 Metro 是在 70 和 80 年代是这种在软件 IDE 行业的领导者不同的时代的 IDE 具有的能力是不同的当然了一般 IDE 主要就是三个主要的组成部分就是原单码编辑器编译器和解释器和调试器
IDE 除了提供代码编辑之外它一般还会提供一些为人类辅助编程的一些提示的用法比如说像语法的高量代码的格式化版本控制代码搜索等等发展到后面由于编程语言的各种多样化和复杂度所以很多的 IDE 都提供了所谓的 IDE 的这种插件的扩展用户可以根据自己的需要来安装特定的一些插件
今天我们可以看到很多的 IDE 平台比如像苹果的 Xcode 微软的 Visual Studio 随着 Java 的普及从 Eclipse 又发展到了 Intelligent IDEIDE 一直是作为我们大量的程序员的一个辅助工具也是简化我们代码表达简化代码编写工作量提高生产效率的一个主要的工具
但是不管怎么样这些 IDE 的平台最终编写代码或者代码负责的人还是我们的程序员这些程序员要负责中间的所有的处理逻辑和代码所以工具我们讲从 IDE 的层面它做了很多的集成和整合但是它仍然没有消除人类编写代码的一个过程
这样的话就产生了我们在业内谈到的第二类的主流的平台和应用就是所谓的低代码平台这个也是近年来比较流行的低代码就是 local 的这种平台叫做 local development platform 简称 LCDP 其实在传统的开发平台中也都渗透了一定的所谓的低代码的开发的概念
但是这些大部分的 D 代码的这种开发平台都是属于比较专属的或者细分领域的比如比较常用的我们看到像业务流程平台就是像 BPMMS 就是我们的开发人员可以通过一个节点来拖拽然后来配置好我们的业务流程
或者我们专用的一些报表平台我们可以拖拽数据到这种已经设置好的报表格式上来生成新的报表或者是像一些前端开发程序我们可以拖拽一些前端展示的一些空间来完成页面的布局和设计以上的这些操作确实是不一定是程序员一些我们讲到的一般的工作人员或者业务人员在经过培训后也可以简单的上手
所以我们有时候把这种脱离该程序员进行应用生成和配置的工作把它们叫做 power user 就高级用户或者叫做公民开发者 citizen developer 公民开发者这个名词在一定时间内也是广受业界好评的大家都在各个企业里面所推自己的所谓的公民开发者
那 D 代码平台它背后的原理是采用了一些代码封装或者预制模块的方式并且结合用户这种拖拉拽的方式的一些界面来减少传统的手工代码的这种编辑的工作量从而实现一些小规模应用的快速创建快速设置和部署
但是你可能也发现问题所在了就是这些 D 代码平台大部分都和某个细分领域相关而且它必须要匹配一定的所谓的运行环境不同的 D 代码平台之间其实是无法互通的如果用户员遇到说原来的 D 代码平台不支持一个功能或者特殊情况这个时候一般 D 代码平台还支持说专业的编程语言向里面注入一些脚本或者代码通过一些专业的方式来解决一些具体的问题
如果低代码的平台达到一个比较完善的情况下在业界当时也产生了一个新的概念就是无代码平台也就是说无需用户编码这种情况下我们可以看到这种的所谓的无代码平台它的功能或者自定义的这种能力会更加受限而且大部分都受制于这种软件平台供应商的制约在后期很难再去进行修改和迁移
所以我们可以看到在低代码平台或者无代码平台所遇到的整个的开发问题后续还是要专业的程序员来出手的所谓的我们讲到的低代码或代码更像是一些更高级的应用的生成或者配置的工作它和我们所谓传统概念中的编程工作还相距甚远
既然我们已经有了这种多年打磨的好用的 IDE 以及地带码平台为什么这次我们又认为说在于替代人类编程这件事又前进了一步背后的原因可能大家都知道就是大模型大模型我们讲的其实就是大语言模型作为编程语言来作为一种规范化的语言它很容易的就变成了大模型被喂养的这些资料我们可以看到
越是被这种整理好的规范化的高质量的语言那大模型就越擅长那编程语言恰恰符合这个特征而且我们可以看到过去几十年来人们所编写的所有的代码如果被良好存储和明确定义的那么很容易的就用到了大模型的训练过程中所以我们就看到了这次大语言模型在编程旅行的种种的一个突破
那对于 AI 如何替代编程这件事情是如何逐步发展出来的呢我们可以看到这里面最早是在 2020 年当时 OpenAI 刚发布了基于 Transformer GPT-3 的时候那虽然那个时候对于人类的自然语言的理解还显得略显不足但其实它已经在编程方面已经体现出它的强大了
当然谁最早看到了这个问题谁最敏感呢那就是说当时拥有最大的代码库的这个人那就是 GitHub 那于是呢他们就决定打造一个 GitHub Copilot 也就是说我们认为就是编程的副驾驶因为即到今天呢我们可以看到其实大家还认为说 AI 无法替代程序员而更多的应该采用一种辅助编程或者绝对编程的形式所以它叫 Copilot
那 Copalic 最初呢是由 OpenAI 的这个 Codex 的模型来去提供支持的当时这个 Codex 也是基于 GPT-3 的一个专用的一个领域的模型因为它在接受了十几种编程语言的一些训练而形成的这种领域模型那当时 OpenAI 将 GPT-3 的独家授权给了 JHub 的母公司微软那所以后面呢我们可以看到微软推出的 Office 的 AI 版本也叫做 Office Copalic 啊
在 2022 年 2 月的时候当时就有一篇论文在描述了 J-Harp Copilot 在培训新手程序员时候所产生的影响大家知道那是 2022 年的时候他们当时就发现 Codex 的大模型的平均表现已经优于了大多数的一些初学者或者一种学生了但是在于具体的问题的解决上比如说在于大模型判断到底使用哪些功能一些条件集合或者循环的使用的时候表现的还不太好
所以最后论文的结论是说 Copilot 对一些编程的学习者是非常有帮助的但是也可能会导致他们一些过度的依赖和代码抄袭的情况当然这项评估是在 2022 年做的到了 2023 年 11 月份的时候 Copilot 就已经集成了最新的 OPPED GPT-4 的大模型那个时候当然 Copilot 的能力就不可同日而语了
那就在最近呢 G-HARM 呢他也宣布了说他们不再依赖 OpenAI 的 GPT 模型而转向采用多模型的一些策略那他其实希望说我们这些开发者能够利用 Copilot 能够展现出不同的这个编程语言或任务类型上的一些特征啊
在新的策略下其实 Github Copilot 引入了新的模型包括最早我们提到的 Anthropic 的 Cloud 3.5 的 Solnet 和 Google 的 Gemini 的 1.5 ProGithub 还出了全新的 AI 的原生开发环境叫 Copilot Workspace 这个工具是帮助开发者能够从自然语言从一些 idea 的想法出发能够快速创建代码直至完成软件
Copied workspace 第一次其实是在 2023 年就面世了当时是作为技术预览版所发布的后来 J-Hub 还推广了自己的所谓的基于自然语言的应用开发工具叫 SparkSpark 就是有点像我们前面谈到的秒搭这些工具它非常适用于这种非专业的开发人员就通过一系列的自然语言提示就可以来构建一些应用程序
如果对于专业的开发人来讲 Spark 则提供了一些精细微调的一些细节功能所以我们可以看到其实 G-Hub 也从 Copilot 模式逐步转向了一些所谓自动化编程的这种或者讲叫适用于普通用户的这样的一个编程的方式其实最近更出圈的其实是来自于市场上另外一款所谓的开发工具就是 Cursor
那 Cursor 呢现在也是集成了 Cloud 3.5Solnet 和 GPT-4O 等模型刚才我们最早也谈到它也会集成这个签问的代码模型那 Cursor 呢主要是提供了一个实时的代码建议错误检测和自动构建的这样一个能力
它的简单性也在于说我只要通过一个聊天窗口就可以进行操作那也意味着说我们不懂程序编码的人在几分钟内就能够去构造一个应用程序并且可以在这个基础上不断添加新的功能它也是希望能够做到人人都可以编写代码的这样一个状态
最早 Cursor 的出圈是来自于 Cloudfare 公司的一个总裁的 8 岁的女儿她在网上就使用 Cursor 这个软件利用了 45 分钟就搭建了一个聊天机器人而且这个过程整个是现场直播的差不多有 180 万人来在线观看
后来 OpenAI 的创始成员 Capacity 然后看到了小女孩的操作后就对用户对 Cursor 大家赞成而且向很多用户去推荐这款软件他当然就说如果未来的话我们不需要去写代码了我们只要按几次 Tab 键整个编程文件就有了所以 Capacity 也在 X 上大胆的预言说未来我们编程就是按 Tab 键就够了
另外一个网上的小哥利用 Cursor AI 加 Voice 就仅凭这种说话的方式他就在 5 分钟内构建了一个财务的仪表盘应用
还有人利用三周的时间写了 11000 行的代码构造出一个视频编辑器而且还是就说网页移动端都支持那种所以这个时候 Cursor 这个软件就在最近半年来就非常的出圈让很多这种编程者就知道以至于很多开发者就退订了 Copilot 的费用重新去订阅 Cursor 这款软件那 Cursor 这件
软件的背后的公司叫做 Anisphere 它是由 4 位 MIT 的学生所组成的他们在 23 年 8 月份的时候各个团队只有 5 个人直到今天其实这个团队也很小差不多也就是 12 名公主室加研究人员所以最早 OpenAI 也拿出了 800 万美元的这样的初期的融资投了这家的公司
如果我们把 Cursor AI 和刚才的 Copilot 进行一个对比的话其实我们看到 Cursor 在设计中更多的考虑了操作的简单性界面的简洁和用户的体验的友好使得很多我们现在的开发人员很轻松的就能够上手另外它的一个特点在于个性化的编码能力它对于实时的代码的一些建议代码重构都是很好的
如果 Cursor AI 的这些使用者他们不断的学习和使用软件的话他们的一些代码风格随着时间的积累可能 Cursor 给出的建议会更加具有个性化更加适合当前用户的要求但是我们可以看到其实 Copilot 在多语言支持或者自然语言处理的方面也是比较好的
所以从全球来看我们这两款软件的话大家是你争我多然后各有优劣很多的我们的开发者也是通过这两款软件意识到了 AI 对于编程的重要性以及大家很多的用户体验也是在这两款软件所体会的
那除了国外的这两款软件之后呢国内呢也有很多的对标者出现啊比如说阿里的这个通一灵马蚂蚁极端的这个 Q-Fulse 百度的 Chromate 以及科大讯飞的 iFlight Code 那以上几家呢很多都是基于自己的大模型呢再加这个代码库子训练的版本的这个大模型来完成的哈
那其实我们会看到那传统的一些开发工具厂商 IDE 厂商也行动起来啊那他们不一定使用自己的大模型啊他可以借助第三方大模型来完善自己原有的这个 IDE 的能力啊比如说我们原来在第 46 期里面谈到的神兽数码这个 code master 啊
它里边就是也是借用了第三方的大模型他们完善了自己的 IDE 的这个编程的一个环境所以我们在那期节目中专门也聊了 AI 辅助编程的一个相关的情况大家如果感兴趣的话大家可以反回去可以听第 46 期的节目
那正是有了我们以上提到的这些大模型这些辅助工具这些 ID 新的平台那我们才产生了今天这样的担心担心来自于两个方面比如说我们一些正在学习编程的这些大学生可能说那我毕业后还是不是能找到工作呀
另外还有一些家长他现在正在把孩子送到一些编程的培训机构去学习编程是不是应该还让孩子来继续学习编程呢针对这样的一个疑惑或者一些讨论我们也想说试图给出一些我们自己的分析和结论
首先我会看到既然编程语言不会消失那么这些 IDE 或者 D 代码平台或者这些新的模型总需要有人上手去使用
当然 Copilot 还是在当副驾驶那么不管怎么样就是说你去看或者使用或者管理这些开发语言的人那必然是存在我们先不管这些人是不是程序员或者以什么样的方式去来编写或者使用这些编写语言那这些所谓的 user 我们总是存在的
那随着 AI 能力的不断涨大那是不是意味着这些普通人就可以成为我们刚才说的这些 user 呢
那也就是说这些人是不是一定要具备一些所谓的专业特质或者专业能力呢那这个就涉及到专业的所谓程序员这个行业是否存在的问题因为我们知道所谓一个领域或者一个行业存在是有它背后的专业能力所支撑的那也就是说我们这些 user 要能够成为专业的人他必然有些需要特别的一些能力
所以首先我们看一下说我们把 AI 的能力想象到最大 AI 能够帮助你写出你所想要的什么任何代码这个时候我们什么能力最重要因为 AI 它是理解你的自然语言再转化成计算机代码但前提是什么前提是要把你把你自己的想法要表达清楚而且是没有二一性的表达清楚我们也就是看到就是
不同的人可能对于同一端的语言理解是不一样的但是在如果上 AI 去编程或者我们真正写成计算机程序的时候不同的人看到同一段语言的理解一定要是一样的
这一点其实就已经难倒了很多的人看起来很简单但事实上我们真正能够准确的描述出自己想要的东西或者是想要表达的严谨的逻辑和规范其实是很困难的我们就举个非常简单的例子说你让计算机给你一杯水
其实过程中你要描述出水的类型这是矿泉水自来水还是开水以及你要的水的温度或者说温度的形成方式比如是我烧到温度就行了还是我烧开之后再晾凉到温度以及我水的容量到底是多少成水的杯子的大小那你要考虑到水如果溢出了杯子之后将会如何处理
如果在送的过程中杯子破碎了又会怎么办这些问题都要解决了才能最后考虑到这个杯子如何送到你的手中如果运送过程中水洒了是不是要回去重新接还是我继续送给你
如果你认为说一个我们的普通的人一个普通的业务人员就能够清晰的向计算机清楚的表达这些规则和逻辑的话那你真的是太高看我们普通人了哈
也许我们你会说我们今天很多的工具好像没有你讲的这样的复杂的要求它也能满足我们的日常工作需要其实背后是因为这些软件的程序员或者这些软件程序已经默默的帮你做好了很多基础性的工作它帮你设定了很多的默认值帮你解决了很多的异常的情况所以作为一个普通的用户才能简单的去使用我们这些应用程序
但是现在如果你是作为程序员 那这个角色就不同了 所以你一个普通人 普通用户就要来设计和完成这个倒水的整个应用所以这个就是本质的区别 我们以这个很小的例子就来讲是说一个普通人能够变成程序员中间其实还有很多的能力是需要提升的
首先讲的最大的一个能力就是所谓叫编程思维的能力编程思维的能力就是采用一种比较逻辑或者规则化规范化的方式来讲清你的需求或者要求这些能力恰恰是多年从事编程工作的程序员们所训练出来或所具备的编程思维我们并不是只是说你会写程序或者懂某种语言的这种技巧而它其实背后代表了一种解决问题的思维方式
所以在编程思维的引导下你需要把一个大的问题分解成更小的一些部分然后再逐步的去解决编程思维背后也包含了所谓抽象模块化的很多的理念比如说抽象就是说你需要把一个问题做一个
更高级的这样的一个提炼比如我们再把两个数字做之和或取和的程序呢那我们需要把这个问题就理解为说 A 和 B 相加
这是一个很简单的比喻对于模块化来讲我们需要把一个大问题拆解成更小的部分比如说我们就说让一个程序去绘制正方形但你需要把一个问题分解为不同的步骤你比如说你先要绘制一条线然后你的绘制的方向再旋转 90 度然后再绘制一条线然后再转 90 度你这样重复这个步骤就可以完成一个正方形的绘图
所以我们可以看到传统的这种编程思维就需要分解到不同的要素就是问题分解
把一个复杂的问题拆成细小的步骤比如说你购到一个汉堡包你就要知道有上面有圆面包然后有生菜有西红柿有奶酪有馅饼下层还有面包是这样的一个分解的过程还有一个模式识别问题但你看到问题中类似的一些模式或者重复性你需要去找出规律比如你看到水里的鱼的鱼鳍你就知道这个东西是来用来游泳的
比如另外你还要做问题的一些抽象把一些问题简化为一些更基本的一些概念也就在这个过程中你在抽象过程中你要去除很多的所谓的一些描述细节比如说你需要把长方形为理解为比如我都是有四个直角的这样的一个形状
另外接下来你通过编程思维还要定义算法设计来找到一步步解决这个问题的一个路径比如像我们经常使用的排序算法或者分类算法等等的这个也是经常计算机考试要考的最后才是所谓的利用编程代码去来实现计算机程序所以我们可以看到其实
如果 AI 只是完成最后一步就帮你实现代码这是远远是不够的因为前面有大量的工作是需要程序员做的那我们就算是完成了让 AI 帮你去完成算法设计和代码实现的话那前面至少我们还有问题分解模式识别和抽象这个三个环节是需要专业人员来去完成的
这样的话我们就可以说如果你把前面的三个问题都来完成之后也就是说问题也分解了模式也识别了你也抽象了好我现在让你说你把这个过程用清晰的自然语言把它表达出来告诉我们的 AI 大模型你是不是真的能够做到能够做完整清晰的语言表达因为我们事实上在很多我们的程序设计中要辅助很多的所谓的设计图
一些逻辑的规则性的表达一些所谓超过自然语言层面的内容来去告知我们的开发人员更何况如果我们直接用自然语言的话你会漏掉很多的细节这些细节能不能通过大模型来去充分的来它来给你补齐我就想目前来说或者我们在很长的一段时间内我相信还是比较有难度的所以我觉得第一个首先欠缺的
就是所谓的叫编程思维逻辑那第二个呢我们要看到除了前面的内容来讲呢我们即使来去做解决问题模式问题识别和抽象来说我们也需要做很多专业领域的训练
如果你只是作为一个大学生你没有接触到任何的行业和领域你就来完成前三面的事情也是非常有困难的所以这个时候就需要你的第二项能力所谓的叫专业领域的思考和理解能力那这个是编程思维之外的事情那程序员呢通常我们在一些专业的领域里边是需要具备这样的一个专业领域的思维和建模领域的
而且很多在过程中是需要采用一些专业级的术语来表达的其实传统的这种计算机领域就存在这个问题比如我们举个简单的例子比如说财务人员他想要通过自然语言来表达他的业务逻辑
在这个之前就需要把它的自然语言转化成很多专业的财务术语你比如什么借方或者贷方余额 闸查 科目等等的这些专业术语然后实时程序语言它并不是从自然语言转化成编程语言的它其实是从财务语言来转化成编程语言的
这也就是我们常常说到的其实很多的需求是要从需求分析再到设计再到编码的一个过程而不是从需求简单的能够过渡到编码过程这个里面不只是语言表达的问题背后还有很多专业逻辑和专业术语的问题
我们今天看到很多我们刚才谈到的什么不放弃的这种功能或者一些简单的应用很多都是 C 端应用它在别人构造这些应用的时候它也很难去展示 B 端应用 C 端应用相对来说它是简单或者大家有一定的通识的说我一个构造一个不放弃应该是怎么做的
但事实上问题也没有这么简单你去做一个音乐的播放器如果从来没有人了解过这个领域的难道你真的知道什么是一个好的播放器吗那你不知道的话那你只是在模仿别人已经做好的音乐播放器
这里面就谈到说你模仿别人做音乐播放器模仿的意义有多大呢在软件领域很多不都是赢者通吃吗一个好的应用能够涵盖很多的用户的需求你作为一个劣质的模仿者你产生的应用到底它的价值又有多大呢之前的李彦宏也说说每个人都可以去创意但我想这里面还不只是创意的问题它背后其实是要你设计人员
或者我们讲开发人员要具有很强的专业素养或者对某一个领域的深厚的一个洞察力所以我们就算说 AI 能够理解自然语言你也能够很好的表达自然语言但是你是不是能够用专业的语言来表述专业的问题这一点是非常难的
其实我们今天在很多从业人员在 2B 行业的从业人员里边他这个过程也是需要逐步培养和日积月累的训练的
所以我们可以讲到说如果让 AI 去解决这个问题这个过程可能就远超所谓的 AI 编程这个领域它就涉及到在这些其他领域的一些所谓的上下文或者认知的一些通识的问题所以这个时候也就是说你很难用一个所谓的只会写代码的专用模型就可以解决好编程问题
这背后就是代表了要其他领域的一些通识的一些问题更不要谈一些专业化的问题了这是我们讲到的第二个能力就是专业能力那第三个能力我们其实也可以看到今天我们即使做到了 AI 具有编程思维也有专业能力的理解力那一般的程序员最后还需要完成最后一公里的工作
因为当我们面对一些复杂的问题的时候我们是不是只用自然语言表达就够呢我们是不是要带一些图表或者一些给他一个示例一个 example 一些公式等复杂的表达那这个过程中是不是我们需要给 AI 展示一些图片或者视频能够来更加复杂的方式来对这个我所要的需求进行一个表达
这个时候我们就看到它并不是完全的自然语言它需要 AI 理解左边多模态的能力
所以我们经常讲在做一个编程工作它其实并不是简单的看起来只是写代码那么简单其实它中间涉及到知识和一些经验的传达所以如果是这样来讲的话那大模型我们今天讲的编码大模型能否具备复杂的多模特的理解能力呢如果它不具备我们的自然语言又不能表达这么清楚那一定就会存在一定的障碍
所以我们今天很多的我们的开发人员需要完成最后一件事情就是要帮助 AI 来完成那些它无法串接或者无法修补的那些错误那也就是完成这个程序最后一公里的这样的一个工作
但现在的比较麻烦的是很多 AIGC 的工具无法让你很好地去修改它而是说再给你重新生成一遍就像我们在生成图片或者视频的时候它用抽卡的方式来完成这个过程所以这个是无法做到人和 AI 能够做到很好的结合的我们看到如果是说我们的用户能够去解决这些 AI 所产生代码的缺陷一些深层次的问题
那也就是在这过程中你可能不一定知道编程语法但你必须要知道说我的程序代码是如何工作的那如果达到这个要求其实对我们的开发人员来说的要求也并不低而且它是需要非常有专业素养和有经验的人才能完成的
另一方面我们可以看到今天的 AI 的编程的工程化能力也是比较弱的比如说代码框架对于 AI 的整体的架构的认知能力还比较低但是我想这一点随着 AI 能力的提升可能会在一定程度上得到解决
所以我们可以预测在 AI 的未来世界中我们仍然需要程序员在编程过程中从开头的一些分析建模找逻辑搭框架清晰的表达自己的需求以及最后的找 bug 找问题和代码串接等等层面来帮助 AI 完成最后一公里所以在过程中
还是有很多专业的事情要做的当然你也可以说这些工作不是程序员做的我们给他起另外的个名字但从今天看来我们仍然认为说程序员这个职业或者行业仍然是有必要存在的而且我们今天看到的情况是说
对于编码这个领域其实和 AI 其他领域也很相似就是越是顶尖的一些程序员其实他们对于 AI 的收获或者效率的提升会更多而对于一些纯底层的对于编程本来就不太理解的人 AI 对于他们的价值增加几乎接近于零其实它会导致整个的一个分化的加大
那不管怎么样呢就是说我们仍然需要很多人是需要这具有编程思维专业能力和代码补给串接能力的
那我们可能是说那这些程序员的这个职业或者能力要求发生了很大的改变或者角色发生了很多的变化也许你也可以给他起一个另外的名字不把他们叫做程序员但是不管怎么样这些专业技能仍然是存在的而且我们在可见的未来下 AI 也是无法替代的
最后我们就来再谈一下关于编程教育或者孩子教育的问题关于教育问题我们大概分成两个部分来说第一部分就是儿童和青少年的编程教育另外我们可以认为是走向社会的一些职业教育
这也是我们目前现在国内的两大的教育体系那少儿和学生的教育来自于一方面来自于学校那另外呢也来自于一些所谓社会的培训机构而把孩子推向这个领域呢大多也不是这个被培训者本身就不是这些孩子而是孩子的家长所以呢家长对于如何去教育孩子学习编程这件事情的认知就变得非常重要
而对于职业培训来讲我们现在很多的培训一方面是来自于社会培训机构而另外更多的是来自于这些用人单位的上岗培训或者工作中的培训就是 on-job training 我们对此更多来自于被培训者本身的一些认知他最后评价说到底好与坏来自于说最后我们真正在工作中的一些实战的应用的效果
我们先来看一些少儿教育的方面我们想象如今的家长为什么要让孩子去学习编程一些人可能认为说看清了比较大的形式比如我们刚才我们谈到的软件和计算机的普及那么编程就像学外语开车一样是一个普及化的技能应该让孩子去掌握
那可能也有些家长认为说我们学习了编程那未来可能当个程序员比较好找工作以赚钱谋生为目的那可能还有一些家长呢认为说我为了让孩子主要是考个竞赛或证书什么的之后主要是为了高考加分我也不一定从事这个行业主要是为了考一个好的大学那如果是第一种目的呢我们可以细聊哈那如果是后两种目的呢我想这个观点呢我觉得可能就此打住啊首先
科技发展和技术变化很快如果你在很小的年纪就是出于工作目的来去学习某种知识的话我想在你真正的未来的发展中也很多情况是无法预料的甚至说你现在报考的一些专业可能四年后就会落伍那更何况像这么一项编程技能就像你学习了一门所谓的外语但这门外语可能毕业后你发现这个世界上人就不存在了
这是第一点那第二呢如果你是为了考证啊那我们根据上面聊到的整个计算机编程的变化那今天我们在很多考的这些所谓的计算机奥赛里面考的这些 C 语言那到底在未来有没有意义
那逐步的这些教育部门的制定政策的人是不是也会意识到这个情况那他们也会去改变对于考试的这种要求那你今天在学习的这些所谓 C 语言的算法编程到底还有多少的能力哈
如果你真正要去考证真的不如去学个奥数因为数学这个基础能力来说从目前来看还是持久不衰的但是奥林匹克的计算机的所谓编程竞赛这件事情还真不见得未来会怎么样所以说我们就首先要在孩子学习计算机编程的过程中小区端正态度那么少年儿童在学习计算机编程的培训过程中应该去学什么培训老师应该去教什么
其实现在儿童编程领域主要有一些用于入门级的一些培训的语言有一点像简化版的或简版的编程方式
其实最早的用于教育变成的有一些特殊语言就是 logologo 在 1967 年就出现了他在 BBN 这个公司最早他们就希望构建一种用于教学的这样的一个语言他们当时就是构造一个数学玩具孩子们可以在这个 logo 的程序里面去玩一些单词或词句
然后他用一个虚拟海归的使用的方式能够及时的视觉反馈和用一些图形方式的进行一些调试所以这是最早的一个用于所谓在少年儿童领域的一个编程的教育到了 2000 年初的时候麻省理工学院的媒体实验室它有个叫终身幼儿小组的一个组织他们开发了一个针对面向儿童的可视化的编程的语言
在 03 年的时候他还获得了国家科学基金会的拨款构造了一种新的编程环境主要是让儿童用代码来表达自己当时他们就和很多机构一起合作开发了比较著名的语言就是我们今天大家都熟知的 Scratch
那个 scratch 其实最早就是为用于教育所来使用的一种编程语言它没有一些特别复杂的一些用法它更多的采用了基于块的这样的一个编程而且采用这种拖拉拽的方式让儿童很容易这种比较感兴趣的方式来去使用到一些简单的编程的理念
所以这个 Scratch 后来就是伴随着整个在线教育网站叫 code.org 这个的平台然后来一起为使用
那 Scratch 本身它就作为儿童的这种教育培训工具它主要面向的就是 8 岁到 16 岁的一些孩子在这个过程中这个 Scratch 也被翻译成多种的语言但它主要就包含一个舞台里面在左侧有很多的这种能够被附用的这些代码块但是你对于孩子来说是看不见代码的
可以把这些块进行一些排列组合然后通过一些循环然后一些设置变量然后也能定义自己想要的一些想要的应用方式所以今天我们可以看到在业内的很多的所谓的教育软件都是基于这个 Scratch 的比如像编程猫或者圆编程什么的目前就是更多的把它包装为一种游戏的式的训练的方式
其实这种方式在各个我们看到的不管是线下的教育培训机构还是线上的培训其实都是大同小异而背后的主要区别在于整个教师的引导能力和教师对于孩子的这种理解能力如何去培养的这样的一个过程中了所以我们可以看到
对于这种编程来讲它是能够容易让孩子能够理解背后的所谓的编程逻辑或者编程素养的所以这个对于我们刚才讲的三种能力的第一种绝对是有帮助的所以如果是很多家长利用这种软件让孩子去学习和理解编程我们认为还是有一定的意义的
第二我们就要回到说职业教育方面因为如果说少年儿童的教育还是出于某种对知识的普及也就是说你孩子学了这样的编程未来也不一定从事这样的专业工作更多的是加强一些编程的素养和编程的思维但是对于职业教育就不同了因为职业教育培训的目的是不一样的那就是为了让你找工作而且找到一个合适的岗位获得一个比较好的薪水
那就还要回到说那程序员这个职业上会不会可能消失或者说他会不会停止发展不再往前走了那社会的总需求量降低那你再去学这个职业培训那你学完了也可能找不到工作那回顾历史呢我们可以看到有很多职业的消失的一些特征啊是到底是什么你比如说历史上有一些职业在消失比如说什么电报收发员
啊或者是一些打风而没的职业啊还有这个底片冲洗啊还有一个电电话的这个接线员或者 BB 机的这个传呼员这些技术大部分或者这些我们的职业和岗位大部分是随着他们所触及的所谓生产资料不存在了啊也就是说你比如说电报手法员那电报技术已经过世了那底片冲洗是因为有了数字的摄影技术让底片胶片这种啊
自生产资料不再存在了那电话接线员是因为我们更多的成功的电话然后已经补给了对吧那我们的不需要人去转接了所以这些职业的消失大部分是由于生产资料不存在了那这个职业就消失了但是刚才我们也讨论过那编程语言和应用程序这件事情嗯
不会消失那么也就意味着程序员这种劳动者来说他上游的这些原材料也就是变成语言以及他所产出的这些成果也就是应用程序都还存在从这个角度来讲程序员这个职业是不会消失的当然你也可以会讲是说还有一些职业虽然生产资料还在但是它被广泛的自动化所替代了
所以这种社会对此的需求也会保持不变或者不再进行需求从而导致这种从业者的失业比如说像我们常说的这种高速收费站的收费员报刊亭的老板包括公交的售票员包括裁缝
这种职业或者是角色不能说没有只能说更少或者他们的职业技能也在发生着改变和职业转型甚至就是包括我们传统制造行业的这些车工洗工前工等等他们如果未来转向了这种输控操作的机械领域他们也要转变成新型的这种输控机床的操作员但是反过来讲他们的生产的精度和效率是大大消失了
所以我们可以说这种类型的职业大多不会消失而更多做的是职业转型那看着我们前面分析的三种能力就是编程思维专业能力以及补齐和串接能力那随着 AI 能够替代人类编程的能力的不断的提升其实意味着说我们在职业教育中必须要重视程序员的职业的转型
如果说我们在儿童教育的领域中已经解决好了编程思维问题的话那么新的职业教育的方向应该瞄准后两者也就是说应该提升我们所有从业的编程者的专业能力
也就是说要和你所从事的软件所服务的行业有关比如说医疗金融电信还是政府那么这个程序员必须要熟悉这个领域或这个行业的一些专业术语和逻辑规则如果更好的话你要动查到这些领域的背后的深层逻辑以便于你进行问题分析和逻辑模型建立
对于第三个方面就是搭框架补齐和串接代码这个领域来说我想即使通过职业教育也会变得相对的困难因为这项能力很多时候要结合具体的实战经验才能完成的这个只是如果通过一些所谓的我们社会上的职业教育其实我认为是很难完成的所以我们可以看到
比较理想教育结构就是说如果你在少年和儿童时代能够学习一些编程的思维了解世界的一些运行方式并对说编程这件事情你首先要去昧认为说这件事情是我们只是我们学习创造和改造世界的一种手段有利于帮助我们解决一些复杂的问题到此而不在于说你要去学习某门语言的一些语法结构和它的特定的用法
那完成之后呢你在入职教育阶段就要去学习一些专业领域或者行业术语了解各个领域的运作机制那么最难的方面也就是说你需要在实战过程中了解和学习代码一些的深层次逻辑来完成最后一公里的这样的一个创造所以呢这个最后一方面呢还是最多的是要在实战工作中才能完成
今天讲了这么多内容我们以此来推论结论就是说从未来程序员的数量上来看也许确实社会不再需要那么大的庞大的程序员对付
一方面是因为我们更需要的是一种高端的开发人员是需要懂架构懂原理懂机制懂人工智能的这种权能型的战士是一种更高阶的这种所谓进化后的变成人员那另一方面呢我们要求是懂行业懂领域也是懂人工智能更加专业性的一般性的开发人员
如果你作为一个普通的成员你偏离了刚才我们谈到的这两个战场那确实有可能会被社会所淘汰其实正是因为这种现象你也会看到最近在很多的职场里边即使真正最高端的我们的开发人员是不愁找不到工作的而另外一方面对于熟悉某个领域这种途必端的成员也比较不太容易失业
而现在很多事业恰恰是原来可能从事互联网行业一些 2C 领域的这些编程人员其实是缺乏一些专业的知识并且在工作中也缺少一些人脉和资源的积累而恰恰由于他们的薪水可能会比较高所以才是裁员的主要的灾区
所以今天我们汇总了很多关于编程语言编程工具以及人工智能对整个程序员所带来的影响最后我们也分析了对于儿童教育和职业教育两个方面我们未来的一些朝向和方向我想总体来说是对我们今天要讨论的问题有了一个初步的结论但是未来到底是什么样的其实我们大家又怎么知道呢
那不管怎么样我觉得对于任何人来说是并不需要害怕我们只需要做好我们的准备迎接未来的挑战就好了好今天的节目就到这里如果您对我们的节目内容感兴趣的话也希望能够评论订阅和转发什么是大事落叶说就天真好看打湿了衣裳它依然飘走什么是相爱
是留不下所以花要开是明知那站台无人爱一生生活小小啊耳垂满上花莫怕缠只悬花一下人间留不住的嘴小小啊而有你莫怕雨匆匆的落下夜像一地
天空到你吐是回了家我们去看短暂的花去爱终将失去的蝴蝶明年不会来未不回来什么最炫耀是你与我人间转一转在阳光上好的日子朝着朝着山上走什么最孤单
是我知晓所有的遗憾却依然泪如雨下的牵着牵着她的手小小娃莫怕大雨匆匆地落下一个人也像一地天空到你吐是回了家我们去看短暂的去爱终将失去的
蝴蝶明年不会不来飞呀什么最绚烂是你与我人间转一转在阳光上好的字朝着朝着山上走什么最苦是我知晓所有的遗憾却依然泪如雨下的牵着牵着她的什么是答案
是落雨说酒店正好开为何流浮着大事了一刹他依然飘走什么是相爱是留不下所以花要开是明知那张坛柜也生生乎那么傻只笑淡却依然笑