ChatGPT细说从头(二三):编程终结
引言
在“软件正在吞噬世界但将和程序员无关”一文中,我们介绍了人工智能编程的快速发展,ChatGPT通用模型或AlphaCode、Copilot等专用模型正在变得越来越强大。近日,前哈佛大学计算机科学教授、谷歌工程主管Matt Welsh表示,三年内终结编程。
从机器语言到高级语言
计算机使用二进制,只能识别和1,因此早期人们只能直接使用0和1组成的二进制代码编写程序,即机器语言。随后人们将0和1组成的机器指令使用英文助记符表示,很大程度上克服了机器语言难读难改的缺点,这称为汇编语言。汇编语言执行前要翻译成机器语言,但和机器语言一样高效,目前在特定场景仍在使用。编程语言的重大变革是1956年FORTRAN语言的出现,即高级语言。它使用一些与人类自然语言更接近的预设的关键词编写代码,因此与计算机硬件系统无关,可以更好地描述各种算法,容易学习掌握。目前流行的各种编程语言,例如C/C++、Java、Python、Go等都属于高级编程语言。
软件之困
高级编程语言已经发展了近七十年,也是软件极大发展的七十年,不管风口如何变换,不管是信息化、互联网化、数字化,软件都是必然的解决之道,因此有说法“软件吞噬世界”。
随着需求越来越复杂,软件开发的复杂度也越来越高,在编程语言基础上形成了各种框架、模式、流程,对开发工程师的要求也越来越高。因此,虽然数字化已经成为趋势,但是只有极少部分人才能成为开发工程师,就像极少部分人才能成为画家、钢琴家。软件开发的过程也很繁杂,从需求分析、界面设计、代码开发、测试上线,需要很多角色互相配合。大型项目如果不能妥善管理,延期和错误都会导致项目失败。“人月神话”这本经典著作就讲述了大型软件开发的难题。
人月神话
图片来自网络
降低软件开发门槛,让更多人可以掌握软件开发,提高开发效率一直是软件开发追求的目标。低代码开发平台(low-code development platform,LCDP)是目前流行的一种解决方案。LCDP是将编写代码的过程改为可视化拖拽方式,让没有代码开发经验的人也可以参与到开发中。由于之前人工智能水平所限,低代码开发虽然关注度很高,但效果还有差距。
自然语言编程
高级编程语言虽然得到极大的发展,但仍需要专业的开发人员,而且学习成本非常高,这和高级编程语言和自然语言的差距也有很大关系。而且高级编程语言都使用英语,这就限制了很多不会英文的人学习编程。所以除了上面提到的低代码开发,一直以来都有使用自然语言代替高级编程语言。当然不论使用什么编程语言,最后都要翻译为机器语言才能执行。
在传统编程时代,程序员要学习编程语言、算法、数据结构、数据库、计算机系统等一系列课程,学习将想法和需求转变为代码。现在和几十年前没有太大的变化。ChatGPT等模型开启了自然语言编程时代,想得到一个软件不再需要了解如此复杂艰深的专业内容。这听起来像科幻小说,但现在确实已经到了。计算机科学即将进入一个重大变革期,我们必须提前做好准备,但是很多人还没有意识到。
在自然语言编程时代的初始阶段,人工智能编程结果不一定完全正确,程序员可以转变为代码审查,和人工智能一起完成编程工作。随着人工智能编程的准确度不断提高,程序员可以转型为产品经理。产品经理的角色不会有太大变化,仍然能够写出告诉软件应该做哪些事情的描述,也就是产品需求文档(PRD),甚至给人工智能的PRD会比给人类程序员的更简单,也会有另外的人工智能帮助产品经理写出更好的产品描述。
ChatGPT终结传统编程不仅只影响程序员,和编程相关的领域都会被改变。软件测试、代码安全评审、渗透测试等都会被人工智能逐步代替,软件开发的成本将极大降低,因此软件可以无处不在。
人工智能编程时代,学校的计算机教育方式也将被极大改变,很多同学将学习如何使用和训练人工智能工具为主,而不是现在的专业课。
无限可能
开发工程师编程终结意味着全人类编程的开始,软件将真正成为基础能力。任何人,甚至几岁的小朋友都可以描述自己的想法,人工智能会给他所需要的。以云原生为代表的软件自动部署工具已经得到了快速发展,从软件生成到运行的流程可以在很短时间自动完成,世界上软件的数量将极大增加。
人工智能编程将彻底改变一切数字化的构建模式,包括元宇宙。数字化不再像之前由人工堆砌而成,而是由人工智能以全新的方式完成。
人工智能编程时代可能对少部分人不是好事情,但是对大部分人来说,是开启无限可能的开始。人工智能最重要的意义不是让专业的人更专业,而是要让非专业的人可以更专业。
总结
科技发展经常超出想象,人工智能编程取代人工编程或三年、或十年,但一定会到来。就像AlphaGO改变围棋、Stable Diffusion改变绘画,ChatGPT也会深刻改变编程,原有模式的终结意味着新模式的开始。