大模型会毁了初级程序员 —— 对话图灵奖得主 Joseph Sifakis |


【编者按】GPT 系列的面世影响了全世界、各个行业,对于开发者们的感受则最为深切。以 ChatGPT、Github Copilot 为首,各类 AI 编程助手层出不穷。编程范式正在发生前所未有的变化,从汇编到 Java 等高级语言,再到今天以自然语言为特征的 Prompt 工程,编程的门槛进一步降低,让很多开发者也不由得思考,编程的未来究竟会如何演化,在这大模型时代,开发者又该何去何从?基于此,新程序员 007:大模型时代的开发者》邀请到图灵奖得主、中美法三国院士 Joseph Sifakis 进行深度对话。万字长文,感受对人工智能的深邃思考。

注:《新程序员 007》聚焦开发者成长,其间既有图灵奖得主 Joseph Sifakis、前 OpenAI 科学家 Joel Lehman 等高瞻远瞩,又有对于开发者们至关重要的成长路径、工程实践及趟坑经验等,欢迎大家点击订阅年卡

采访 | 邹欣,CSDN &《新程序员》首席内容顾问

作者 | 王启隆

责编 | 唐小引

出品 | 《新程序员》编辑部

从 ChatGPT 引发百模大战,GPTs 让人人都能用自然语言构建 GPT,全球范围内对于 AGI 通用人工智能的探索日渐深入,而计算机领域关于“超智能”的神话也愈演愈烈,其中一个广泛传播的观点是,计算机智能最终将超越人类智能,技术奇点即将到来。

机器智能(图源:AIGC 生成)

但同时,也有许多科学家对这些热议保持理性或反对的态度。图灵奖得主、中美法三国院士 Joseph Sifakis 认为,再强大的机器也不足以战胜人类的智慧,在他的著作《理解和改变世界》中这样谈道:“我认为科学界应该对这种蒙昧主义和信口开河的混杂产物做出反应,并基于科学和技术标准,对人工智能的前景给出清醒的评估……人们都在热议计算机智能的假想风险,也许把真正的风险掩盖住了,包括引发高失业率、安全性、侵犯隐私权等。”

Joseph Sifakis,图灵奖得主、中美法三国院士

Joseph Sifakis 教授出生于 1946 年,是知名的计算机科学家,他的一生都在致力于系统验证和形式化方法在系统设计中的应用,他开发了多个验证工具,提出了解决状态爆炸问题的抽象技术。2007 年,由于在模型检测理论及应用上所做出的杰出贡献,他获得了国际计算机界最高奖——“图灵奖”

除了图灵奖得主的身份外,他还是中美法三国院士,对教育充满热忱,与中国渊源深厚,是中国南方科技大学计算机科学与工程系的杰出教授,他说“我对中国学生渴望学习和理解事物的热情印象深刻,我希望能持续看到中国源源不断的创新,因为你们有能力构想并实现一些伟大的事情。”

怀揣着好奇心与满载的问题,CSDN &《新程序员》首席内容顾问、技术畅销书《编程之美》《构建之法》作者邹欣代表开发者对 Joseph Sifakis 教授(以下简称 Joseph)进行了深度采访,并在 2023 长沙·中国 1024 程序员节的“新程序员全球人工智能高峰论坛”上进行了压轴直播。采访过程中 Sifakis 教授金句频出,展现了他博学而健谈的一面:

  • 开启电传飞控时代的空客 A320:“四十多年前带领 12 位工程师,用 6 万行 C 语言代码和简单的底层硬件开发了飞机控制系统——这些都很简单。”正文还有更多的技术细节揭露!

  • Sifakis 教授近期的研究领域是自动驾驶:“对于关键系统,如自动驾驶汽车,我个人认为最好的解决方案是将神经网络与传统解决方案并行工作。

  • 对「奇点时刻」的看法:“完全是胡说八道,是荒谬的。

  • 程序员到底该不该在工作中使用 AI:“对于经验丰富的工程师来说,利用 GPT 或其他大模型来提高生产力绝对是正面的。随后话锋一转:“大模型会毁了初级程序员!

  • AI 的真正风险:“为关键事情做选择的责任从人类转嫁到了机器上。

  • 评价计算机科学的未来:“这个时代的计算机科学家应该具备更广泛的文化知识,因为机器正在被应用于不同的领域。

  • 在采访中盛赞中国:“你们的创造非常有趣,充满激情和年轻的力量,开拓了我的视野。

【小提示】点击下方👇查看专访视频

12 个人、6 万行代码、1 门 C 语言

开启电传飞控的时代

再强大的机器也不可能战胜人类的智慧。

邹欣:首先,请 Joseph 教授向我们的开发者朋友们介绍一下自己,以便大家能够更好地了解您。

Joseph:我起初在雅典国家技术大学(希腊最古老、最负盛名的大学)学习电子工程,后来出于某种原因我前往了法国学习物理。到了 1970 年,我对物理学的兴趣转移到了计算机课程上,历史上的那一年差不多也是计算机科学的起点。总之,我最终决定放弃物理,转而学习计算机。

我一生中的大部分时间都生活在法国,在那里我创建了自己的实验室,发展了关于系统验证的理论。我们最为人所知的成就包括开发用于空中客车的编程技术、空客 A320(Airbus A320)的嵌入式系统 Ansys SCADE 及其技术认证等。2007 年,我获得了图灵奖,我的一系列工作得到国际的广泛认可。近几年我对自主系统开始感兴趣,尤其是自动驾驶系统。

邹欣:众所皆知,编程技术具有非常广泛的应用领域,有些仅仅是用于低风险场景,而有些则是用于精细的关键系统,比如导航或支持飞机运行的系统等。但据我所知,要证明一个程序拥有 100% 的准确率是非常困难的,几乎不可能。

Joseph:没错,为此我们就必须提供一些证实程序准确率的证据,而这正是空中客车面临的挑战,因为空中客车也是世界上第一批使用数字电传操纵飞行控制系统的商用飞机。这个挑战实际上在于说服认证机构,向他们证明,在用计算机取代了所有的电动机械系统后,放一台电脑在飞行员和飞机的机电部件之间,系统就能正常工作。

事实上,我们不得不为这些系统开发一套编程符号体系以及一个经过认证的编译器。在上世纪 80 年代末 90 年代初,我们真的做了一个编译器出来,并且还应用了一些验证技术。这套系统非常简单,我们只用了不到 6 万行的 C 语言代码就完成了它。

邹欣:整套系统都是用 C 编写的吗?

Joseph:我们用的是那种限制重重的 C 语言,没有任何动态特性。那个时候的另一大限制是系统必须在裸机上运行,没有操作系统,所以确保系统的正确性反倒容易得多。因为如果没有任何操作系统,就只需要像编译器一样生成非常简单的循环代码,再设置一个运行时系统来处理外部事件。总而言之,它的原理其实很简单。

邹欣:这么简单的系统,却完成了一大壮举——据统计,空中客车在 40 年左右的时间里一直以非常安全的记录飞行。

Joseph:这也是为什么我们在验证上所做的工作已经得到了认可。所谓严格的工程设计技术,意味着要从需求出发,并配备一套严格的方案生成代码,且工程师必须对自己的所有决策作出合理的解释,技术实现也必须具有可行性。实际上,只有空客 A380 采用了真正的操作系统来工作,其他空客都是用我上述提到的方法运行的。

邹欣:A380 是一个更先进的型号吧?

Joseph:是的,因为使用操作系统其实会导致更多问题——在我看来,让一个“看似完美的实时操作系统”掌控全局,对于空中客车来说本身就是一大问题。

邹欣:这样的话题对我这个程序员而言实在很有“杀伤力”,所以请让我稍微深入了解一点技术细节。这个程序可以编译并在裸机上运行,那是否存在一个可以运行的硬件抽象层(HAL),还是直接在设备上进行操作?

Joseph:没有,取而代之的是一个小调度器,也就是事件管理器。它非常简陋,只有先进先出(FIFO)队列,程序通过将事件放入这个队列,按照一种循环的方式运行。这种循环程序的核心是通过周期性的方式对输入进行采样,继而处理在某个时间段内到达的所有事件。除此之外还涉及了一些技术细节,但整体来说这就是一种非常简单的循环程序,我们称之为响应式编程(Reactive Programming)。

邹欣:某种意义上,这好像也是一个实时系统,对吗?

Joseph:这是一个硬实时系统,即要求在预定的时间内完成任务,没有任何的中断、多任务处理或优先级。因为我们采用了更传统而简洁的方式,让一个事件处理器来满足硬实时系统的基本需求。这个系统使用的循环程序结构就像那艘著名的“五月花号”船一样坚固可靠,事件触发某个动作,满足某个条件即可执行。整个系统就是一个巨大的循环:当条件为真时,执行某个任务;当条件不满足时,执行其他任务;而处理这些任务的方式是一个庞大的分支结构,执行任务,同时每隔一段时间执行一些操作。

这是一个非常简单的程序,没有动态性也没有指针。原理如此简单,却可以得到一个万分安全的系统,因为它避免了使用多任务处理或优先级处理时可能遇到的所有困难。

邹欣:非常精彩。这是一个相当巨大的 while()循环,在循环里还有很多不同的事件。

Joseph:是的,对于每种情况,确保有足够的时间是很重要的。我们设定了一个固定的周期,时间大约是 10 毫秒左右。这个系统需要确保分析代码、检查每个情况是否能够在规定时间内完成。如果 C 代码足够简单,就可以做到。因此,系统能够提供非常强的响应性保证。唯一的参数就是这个周期,然后你对代码进行分析,针对每种情况进行相应的处理。

邹欣:这一壮举的关键要素在于,你的程序是机器的唯一掌控者,没有其他因素能干扰到它。

Joseph:程序员掌控机器,也就掌控了一切的安全问题。

邹欣:虽然你一直在强调它很简单,但我认为即使从今天的角度来看,这可能仍是世界上最具挑战性且确实可行的系统之一。

Joseph:说到当年,我们还向那些空中客车的工程师学习,借用了一种叫做同步数据流(Synchronous Data Flow)的建模符号表示法。它就像一个巨大、有输入的数据流网络,是一种类似于模块图示语言的存在。我们就是靠从空客工程师那里学到的同步数据流更精确地定义语义、编写编译技术。

空客工程师有着电气工程的背景,所以这是他们理解的语言。对于工程师而言,会更熟悉 MATLAB Simulink 这个工具,它实际上更复杂一些。但现在时代不一样了,工程师们只要编写 Simulink 图表,程序就能直接生成 C 代码。

邹欣:你们大概花了多少人/时间来制作第一个飞行控制系统的版本?

Joseph:当时,我们为此创建了一个实验室。实验室中有 12 名工程师,原计划用三年来开发程序,但实际上只用了两年来开发第一个版本。实验室的全体工作人员大约有 20 人,但并非所有人都参与了这个项目。其中一些人在我的实验室中开发了一种名为 Lustre 的语言,后来 Esterel Technology 公司接管了这个项目,最终发展为一个叫做 Esterel 的工具,如今仍在使用——总之说来话长,这里面的故事多得说不完。

邹欣:用编程语言这种抽象的文本形式来控制数十吨的机器起飞和翱翔,真是一件非常浪漫的事情。

Joseph:在许多行业中,这种思路体现为使用特定领域的语言(DSL。不必直接在通用编程语言中编写,而是通过 DSL 生成相应代码。这一思想在各个领域都普遍存在,例如 SQL 在数据库领域的应用。使用特定领域语言为系统提供结构化原则,是汽车工业、航空电子和互联网平台等行业的通用做法。通过这种方式,可以有效避免许多潜在问题。

本文将被收录于《新程序员 007》扫码可以提前订阅

大模型的黑盒是自动驾驶面临的下一道坎

人类思维的计算具有“弹性”——它具有天生的适应机制。正是这种适应机制使得语言和概念的产生成为可能。

邹欣:我目前就职于一家专注于自动驾驶技术的初创公司。我们发现在一些特定条件下,比如高速公路,算法表现相当不错。

Joseph:是 L4 级别吧?

邹欣:我们还处于从 L2 级别向上发展的阶段。

Joseph:嗯……你看,自动驾驶技术如今被分为六个不同级别,其中三个级别用于自动驾驶和驾驶辅助系统,其余三个用于其他系统。在 L3 级别,有一个需要在人类驾驶员监督下行驶的自动驾驶系统,但我认为这个想法并不可行,因为人与机器之间的交互是一个非常棘手的问题。
然后就是 L4 级别的完全自主驾驶,既特定地理条件下的自主驾驶。这种实现方式正在取得进展,中国和欧洲都进行过一些有趣的实验。L4 级别的自主驾驶之所以可能成功,是因为在高速公路或受保护的特殊环境中,情境感知问题相对较为简单和琐碎。
自动驾驶汽车所面临的主要问题是,系统需要能够理解所发生的事件并正确解读。因此,感知功能必须足够可靠,并建立对外部世界的准确模型,这是非常困难的。除此之外,还有人为干涉的因素,这也是为什么在一些论文中我将自动驾驶称之为“疯狂想法”的原因。从我个人的角度来看,虽然制造自动驾驶汽车是一项巨大的科学挑战,但社会可能不应将其作为首要任务。

图源:CSDN 下载自视觉中国

邹欣:如果一个人类驾驶员处于高压力或疲劳的情况下,他可能会犯错,人们对此通常很宽容。但如果是人工智能犯错,就会有很多人认为这是不可接受的。

Joseph:是的,这涉及到多重标准的问题。首先,人工智能的挑战在于它采用了一种与传统计算机不同的计算方式——神经网络的黑盒,我们对其了解严重不足。还有一个备受关注的问题就是人工智能的可解释性,在传统的系统工程中,存在一个原则:如果工程师声称系统具有某个性质,必须提供一种证明其正确性的方法,尤其是对于关键系统。然而,对于人工智能而言,这是不可能的。

缺乏标准是人工智能领域的一个根本问题,也是业界众多讨论的焦点所在,更是系统工程中的一个基本问题。在我熟悉的航天领域里,飞行系统在每小时的飞行中故障率不得超过 10 的负 9 次方,每一架飞机都要经过系统性的验证。我们在生活中构建的任何技术、任何物件,从烤面包机,到桥梁,再到电梯都是经过认证的,世界上任何事物都是经过认证的,而现在对于人工智能却没有任何标准,因为我们无法推理系统的行为。

在美国,一些机构因为缺乏标准,甚至容许存在自我认证的系统。只要像特斯拉这样的公司声称其车辆能够自主行驶,驾驶员就能直接启动车辆,而无需任何形式的保证。这样的想法却能在美国逐渐普及,因为美国在人工智能技术方面占据主导地位。

从比较大模型与人类的角度看,人类具有理解情境的能力,并且拥有“健壮性思维”。健壮性思维指的是人类可能在某个情境下犯错或者正确,但却会保持相对一致的判断和思考方式,而不是在相似的情境中表现出不一致的结果。神经网络则存在异常现象,例如对抗样本,稍微改变输入可能导致系统输出不稳定。这些现象在系统工程中是不可接受的。