作者 | 王轶群 陈一戈
责编、采访 | Echo Tang
出品丨GOSIM 开源创新汇
与霍金是校友,大学导师是第一台晶体管计算机发明者,是“人工智能之父”图灵的嫡传弟子……来自 CWI 的史蒂文·彭伯顿(Steven Pemberton)拥有诸多闪光头衔。
作为 GOSIM 2024 欧洲站的重磅开场演讲嘉宾,艾伦·图灵嫡传弟子 Steven Pemberton 在会后接受了 GOSIM 旗下访谈栏目 Open AGI Forum 的专访。
Steven 在专访中与我们分享了他的研究生涯以及这些独到的见解:
-
目前,我们所谓的人工智能语音其实还没有智能,“AI”里并没有“I”。未来,通用人工智能会拥有自我意识,将比人类智能聪明数千倍。
-
过去,相较于计算机设备的高昂成本,程序员的费用显得微不足道;而如今,相较于程序员的人工成本,计算机的成本已大大降低,几乎可以忽略不计。在这样的变化下,编程语言的设计思路需要进行重大革新。
-
开源非常重要,其成果已经深深融入了我们生活的方方面面。
-
在未来的网络中,我们需要回到一条更可持续的信息而非编程之路。
-
程序员不应仅仅关注底层的执行细节,更应该多进行高层次的抽象思考。
以下是采访整理:
职业生涯始于兴趣、运气,而非名利
GOSIM:大家好,欢迎来到 Open AGI Forum。我是来自 CSDN 的 Echo Tang。在 GOSIM Conference Europe 的现场,我们非常荣幸地邀请到了 CWI (荷兰国家数学与计算机科学研究中心)研究员 Steven Pemberton,他有着诸多传奇的故事,欢迎 Steven。
注:荷兰国家数学与计算机科学研究中心,又名荷兰国家数学与计算机科学研究学会,荷语名为 Centrum Wiskunde & Informatica (简称 CWI 或 CWI Amsterdam),其主要研究领域是数学和理论计算机科学。CWI 成立于 1946 年,是 NWO-I 研究所组织的一部分。它位于阿姆斯特丹科学园,也有着密切的国际联系,其创新研究享有全球声誉。该研究所以Python编程语言的创始地而闻名。
GOSIM:首先,您是如何与计算机、编程结缘的,是什么激励您走上了计算机之路?是否可以与我们分享您的技术人生的故事?
Steven:大学时期我学习电子学。在当时,电子学处在一个非常令人兴奋的时期,电脑已经出现,但还没有进入家庭,仍然属于工业化的产物。
我去了一所有导师制度的大学。很幸运,我的导师 Richard Grimsdale(理查德·格里姆斯代尔)是建造世界上第一台晶体管计算机的人。当时,我并不知道这很重要。他的导师又是艾伦·图灵,被誉为英国计算机之父和人工智能之父。
在那里的课程中,我学习了编程。当我离开大学时,我寻找了一份编程工作。事实上,有一段时间我得到了一份非常微不足道的工作,只需简单输入研究机构或研究中心的数据。但由于会编程,我还被安排做一些编程任务,我做得很投入,也很喜欢。这样工作三个月后,公司雇用我成为了一名正式的程序员。
这是一个很棒的环境,让我有很多自由的空间可以去学习。我当时正在为研究项目进行编程,这本身就非常有趣。我热衷于学习计算领域的新事物。
当时我是在英国,那是我长大的地方。巧合的是,我当时工作的信息来源之一是荷兰的这个研究所,也就是我现在工作的地方。我很早就了解了CWI,发现他们所做的事情非常令人兴奋。我花了很多年时间,最终来到了CWI。
GOSIM:回首过往,您如何看待自己早期在技术方面的工作及其后来产生的影响?
Steven:我作为一名程序员在这个研究中心工作了两年。我非常喜欢当时一种名为 ALGOL 68 的新编程语言。我看到一则招聘程序员在新的 ALGOL 68 系统上工作的广告,一个编译器,位于曼彻斯特。在我看来,这就是我理想的工作。我申请并得到这份工作,随后来到了曼彻斯特。
实际上,是艾伦·图灵的老部门。我能得到这份工作完全是巧合,与我的导师曾在该系工作无关。
我在那个部门从事研究计算机的工作。这被称为 MU5 项目,是图灵开始研究的计算机系列中的第五台计算机。这让我参与了真正的研究,我之前的工作只是支持研究。我参与了一个研究项目,为其开发软件。这是一次非常好的学习经历。
当那个项目结束后,我回到了我居住的布莱顿,成了一名大学讲师。我仍然继续研究编程语言。当时我写了一本关于 Pascal 编译器的书。
注:《Pascal 实现:P4 编译器和解释器》(Pascal Implementation: The P4 Compiler and Interpreter)一书在1982年出版,作者:史蒂文·彭伯顿,马丁·丹尼尔斯。
在大学当了五年讲师后,我在休假的一年到阿姆斯特丹的研究所工作。由此,我的职业生涯真正开始了。
GOSIM:您经常被介绍为 Richard Grimsdale 的学生,并且与图灵存在学术传承关系。这样的名声对您年轻时有影响吗?
Steven:当时我还很年轻,是一名学生。所以在那个阶段,一切都是新的。我在学习一切。事实上,我的导师在那时建造了第一台计算机,他在某些方面是一种灵感。我认为这更像是一个灵感火花,让我朝着计算的方向前进,而不是直接受到他所做的事情的启发。另一方面,我一直追随图灵,我读过他的作品并知道他的成就,这成为我的学习沃土,但直到很久这些才在前进方向上为我提供更多的灵感。
GOSIM:您接触过许多计算机及科学领域的天才人物,您觉得他们身上,有哪些宝贵的特质,对您影响最大的人是谁?
Steven:当我刚开始担任程序员时,有两个人对我影响很大。
一位是 Edsger Wybe Dijkstra,他是一位非常有影响力的计算机科学家,对整个计算机科学产生了巨大影响。他在计算科学方面的著作对我在职业生涯初期的影响深远,很大程度上帮助我理解了计算机科学这门学科。我想很多人即使到现在也不完全明白计算机科学学科。也许是因为对程序员的需求如此之大,人们正在成为来自不同领域的程序员,而这些领域不须具备计算机科学背景。我认为计算机科学在很多方面都缺乏学术规范。目前的阶段就像是狂野的西部,很多东西都是以非常随意的方式开发的。由此,Dijkstra的学术著作对我系统认识计算机科学影响很大。
另一个人是 Ad van Wijngaarden,他是当时的CWI主任。他通过ALGOL 68这种编程语言在很多方面影响了我。我认为这很有趣,因为在我看来,这是第一种为程序员而非计算机设计的编程语言。ALGOL 68的设计方式非常一致,这是许多编程语言中看不到的。它的设计非常优雅,尽管当时很多人没有看到这一点,因为它的定义非常数学化,这让很多人望而却步。但其语言本身极其优雅,非常具有前瞻性,并且产生了很大的影响,尽管人们不知道。例如,现在每个人都使用的“取消引用”一词,就来自该编程语言。多数人人不知道,其实“取消引用”是在 ALGOL 68 中发明的。这些是很早就影响我的。
幸运的是,他们都来自阿姆斯特丹,然后我被阿姆斯特丹吸引,所以我也来到了这里。
现在的AI只是机器学习,未来的AI或许会很可怕
GOSIM:我看到您有一些关于 AI 的演讲以及对于 ChatGPT 的尝试,您如何看待今天的 AI?对通用人工智能有什么畅想吗?
Steven:我每年都会在英国牛津大学开设一门介绍人工智能的课程,我在这里使用 ChatGPT 的这些聊天功能来演示它的工作原理。我认为,人们要理解的最重要的事情是,也是我曾演讲的标题——“There's no I in AI”,也就是说,它不智能。我们称之为人工智能,但这是不正确的。它还不是智能的,目前的人工智能只是机器学习。
注:Steven 关于“There's no I in AI” 的分享,链接:https://homepages.cwi.nl/~steven/Talks/2024/01-12-ai/
我们认为这些系统是智能的,因为它们能生成看似有意义的文本。对于我们输入或说出的内容,如果那个东西不智能,似乎就会不产生这样的答案。所以我们将其解释为“智能”,而实际使用的词是随机的、鹦鹉学舌的。只是人云亦云地把学到的东西再返回给你,但 AI 自身是没有深刻理解的。因此,AI 会在未能准确匹配的情况下犯错误。人们总是对此感到非常惊讶,觉得AI为何会犯这么大的错误?答案是因为它不智能。
我认为目前社会还没有成熟到去完全了解机器学习和人工智能之间的区别。我们所谓的“人工智能”技术实际上只是在模拟智能行为,而不是真正理解。我们应该明白,通过这些程序传递给我们的东西是这台机器学到的其他东西的重新表述。因此你不应该信赖,你应该怀疑它所说的内容、解释它所说的内容。你可以将 AI 生成的内容作为灵感来源,但应该对其进行批判性分析和修改,而不是直接接受。
第二个问题是关于通用智能的。我担心,这是一个巨大的危险。一旦计算机变得像人类一样聪明时,这意味着,突然之间,地球上出现了一种新的存在。如果这些智能体具备自我意识,它们就和我们人类一样。那么,关于人的现行法律,是否适用于那些计算机?为什么不呢,这可是一种有自我意识的智能。即使这些智能体暂时无法自主行动,它们仍然具备智能。
举例来说,一旦我们有了这些智能,关掉它们在道德上是否合理?我是说,想象一下,假设我们能够将人类的大脑记忆上传到通用智能中,从而在我们死后以通用智能的形式继续存在。在这种情况下,关闭这些智能体是否等同于‘杀死’这些具有自我意识的存在?我认为,这些都是需要解决的问题。
接下来要思考的问题是,一旦这些机器变得像我们一样聪明,它们没有理由不开始智力加倍,变得比我们聪明两倍、四倍,甚至千倍,然后更有能力察觉到世界上更多的问题。问题是,这些新智能是否会成为我们的朋友?存在三种可能性——可能是完全中立的;可能非常自私,只关心保护自己;或者可能成为我们的朋友。我们并不清楚通用智能的立场,因为我们还未真正了解人工智能是如何工作的。当它最终变成完全智能时,我们真的不知道。我预计,我们不会知道这些东西是如何运作的,它们会变得聪明。我们已经创建了一种机制,但我们不知道是什么让它们做出某些决定。所以问题是,它会站在我们这边吗?
如果看看我们自己以及这个星球上智力较低的生物,我们如何对待他们?我认为我们实际上不太擅长对待智力较低的物种。对我们有用的动物,我们可能会先喂它们一段时间,然后再杀死它们并利用它们。既无害又无用的动物,我们并不真正关心它们是生还是死。对于我们不喜欢的动物,我们很乐意将其杀死,比如一只蚊子或一只黄蜂,我们毫不犹豫地杀死这些动物。所以问题是,人工智能对我们的看法会和我们对待低等智能的物种一样吗?它们也许认为可以让比其智力较低的人类活下去,这是中等的情况。
最坏的情况是——它们发现遇到了气候危机,而我们人类正是气候危机的根源,然后它们可能会觉得解决气候危机的办法是让90%的人类死亡。它们都将连接到互联网,会比我们更聪明,甚至将能够闯入世界上每一个制造或生产的工厂。我确信它们将有权关闭这些设备两周,直到许多人死亡。所以,我的意思是,这不是一个非常美好的未来。这并非不可能。我不知道我们如何才能防止这种情况发生,除非确保人工智能永远不会连接到互联网。
GOSIM:对于所有开发者来说,我们一直在讨论人工智能取代程序员的可能性,您对此有何看法?
Steven:可能性很大。一方面,对于改善人们生活来说,AI 是巨大的契机。有些程序员喜欢坐在电脑前,每天16个小时来编写程序,这就是他们的真实生活。但是很多人更喜欢和家人一起共度时光。所以,如果我们可以用计算机和机器人代替这些工作,那太好了。但目前,还没有迹象表明社会会利用这些技术来改善人们的生活。我认为这很糟糕。我的意思是,有这样一个机会可以让人们的生活变得更好,如果我们可以将工作时间减少到每天四个小时,这对每个人来说都太棒了。如果我们可以使用机器人和人工智能来做到这一点,那就太好了。
我不认为这种情况会发生,因为控制者会认为这对他们没有好处,这仅仅是我的猜测。对此,我有点消极。但是不可否认,AI对于改善人类来说机会很大。
GOSIM:你对开发者有什么建议吗?
Steven:我对人工智能生成的代码质量并不感兴趣。我没有留下深刻印象的原因是人工智能、机器学习已经从互联网上的示例中学会了如何编程。坦率地说,大多数程序员都不是那么出色。这就像体育界中的运动员,只有少数人非常出色,而大多数人的水平处于一般或中等水平。在生活的任何领域,有些人真的非常非常好,还有一些很糟,然后大多数的水平是中间的平均值。所以生成的很多代码,机器学习从中学习到的质量相当平均,甚至较差。所以,它生产的东西也不会那么好。而你需要更好的、更高质量的人工智能,来生成更高质量的代码。
目前,生成的代码还不能完全信任,开发者需要仔细检查验证。你不能说,给我写这个程序,然后运行它。你得说,给我写这个程序,然后你必须检查它是否确实做到了这一点,并仍然对其进行测试。因为这些生成的代码就像人类程序员所编写的一样,可能存在错误。
GOSIM:您认为开源在这一切中扮演什么角色?
Steven:我认为开源是绝对必要的。我是开源的坚定支持者。我自己也参与开源社区贡献,一直用它。开源是一场重要且令人惊叹的运动,它对技术发展和创新至关重要。我们今天使用的许多基础设施都是开源的。例如,Linux操作系统是开源软件的一个典型例子。我们每天可能多次使用到 Linux,无论是在手机、路由器,还是笔记本电脑上。开源是一件好事,它让世界变得更美好。
HTML 走错了方向,声明式编程语言才是正道
GOSIM:HTML 演进到今天,您认为其下一步发展可能是什么?
Steven:我对此有非常鲜明的观点。我建议任何观看此内容的人,看看我的演讲《100 年的网络》,您将获得我对这个问题的完整答案。
注:《100 年的网络》(The 100 Year Web)
视频链接:https://www.youtube.com/watch?v=jl4fnY4BjEY
文章链接:https://dl.acm.org/doi/pdf/10.1145/3543873.3585578
不过, HTML 最近走错了方向。HTML 最初是一种易于编写的标记语言,适用于非计算机专业人士,让他们能够轻松创建有用的内容。然而,近年来,HTML 已经演变成一个需要深厚编程技能才能熟练操作的复杂编程环境。
其次,目前你有很多所谓的框架来构建网站,HTML 本身不再是完全适用的。如今,构建网站不仅需要 HTML,还需要依赖众多的框架。每个框架都有其独特的 HTML 版本,这导致了大量的复杂性。
这种复杂性与用户希望简化和标准化的需求背道而驰。用户希望通过掌握一个标准来进行创造。我认为当前版本HTML的人在设计方面做得不是很好,他们会说:“如果你需要什么新东西,你可以在编程中实现。”那是因为他们本身就是程序员,而不是思考人们真正需要什么并将其转化为语言并支持人们的真正需求。
所以我认为 HTML 已经变得很糟糕,因为它是基于编程的。我认为这也意味着,它正在损害网络的长期可持续性。因为我们现在的大部分知识和信息只能通过网络获得,很多书籍都消失了,尤其是参考书。
并且人们希望该信息在未来 100 年、200年 内都保留在网络上,这是我们历史进程一部分。你不想失去历史记录,所以希望这些记录在互联网上留下来。然而,我难以想象今天创建的网站在 100 年后仍能依靠现有的 JavaScript 和逐渐被淘汰的框架继续运行,这些技术可能在未来的浏览器中无法得到支持。
所以我认为他们在 HTML 方面采取了完全错误的方向,这是首先需要解决的问题,真的,在未来的网络中,我们需要回到一条更可持续的信息而非编程之路。编程是处理信息的错误方法。正如我们在 ABC 语言的设计中所做的那样,最初是为了替代 BASIC。后来,受 ABC 启发的 Python,继承了这种简单性并在全球流行。
注:ABC 语言是由 CWI 的Leo Grurts、Lambert Meertens、Steven Pemberton 主导研发一种交互式、结构化高级语言。该语言为非专业程序员而设计,旨在替代 BASIC、Pascal 等语言,用于教学及原型软件设计。
GOSIM:目前看来,我们正在进入自然语言编程的一年,在多年演进之下,编程语言呈现简化趋势。您对这一趋势有何看法?您如何看待自然语言编程的未来?
Steven:实际上,我曾被邀请到阿姆斯特丹参与开发 ABC 编程语言,这是一段有趣的经历。我认为 ABC 语言在历史上非常有趣,因为它是第一种基于用户界面原理构建的编程语言。ALGOL 68 是为程序员而设计的,而我们更进一步。
我们从程序员的需求出发,首先考虑如何满足这些需求,而不是过于关注实现的可行性。在设计这门语言之后,我们尝试实现它,这一过程本身就很有趣,促使我们探索编程语言的新实现方法。这种语言虽然规模不大,但功能却非常强大。
注:ABC语言的设计者称其代码量通常为 Pascal 或者 C 语言程序的四分之一,并且具备更强的可读性。其主要特点有:只有五种基本数据类型;不需要变量声明(动态变量);明确支持自上而下的编程;语句嵌套由缩进来表示;精度、列表、字符串均无限制。
我把它与自动车齿轮和手动齿轮之间的区别进行比较,自动齿轮更容易使用,但其底层的实现可能会更困难。但如果你能让用户更容易使用,那么对于制造者来说应该很困难。所以ABC是一种非常易于使用的编程语言。我自己仍然每天使用它。实际上,它非常强大。我们发现了编程语言背后的一个原则,即大多数编程语言都是在低层次上设计的,为您提供低级工具,以便构建高级工具。
我们发现每个程序员都需要许多高级工具。如果你将这些构建到语言中,你不必自己建造它们,并且可以立即使用它们。像排序和搜索这样的事情是语言中的基本,而不是需要构建编程语言才能实现。因此,这不仅让许多操作变得快速,还使得语言本身非常简便易用。这是我们从中学到的重要经验教训。
尽管 ABC 并未成为全球广泛使用的语言,但它为 Python 奠定了基础,而后者如今是世界上最受欢迎的编程语言之一。Python 的创始人 Guido van Rossum 也曾参与 ABC 项目,他从中汲取了许多灵感。他在一个操作系统项目中需要一种较低级别的语言,并基于在 ABC 中的经验创建了 Python。这是我的回答的一部分。
注:Guido van Rossum(吉多·范罗苏姆)是 Python的创始人,于20世纪80年代曾在ABC系统开发中工作了数年,受到ABC语言的启发,于1989年圣诞节期间开始编写Python,目标是创建一门易读、简洁且可扩展的编程语言。
我的回答的第二部分是一个观察。在 20 世纪 50 年代,像 COBOL、LISP、ALGOL 和 FORTRAN 这样的编程语言首次设计时,程序员和计算机之间存在一种特殊的经济关系程序员和计算机之间存在一种特殊经济关系——当时,一台计算机非常非常昂贵,比如说一百万,与计算机的成本相比,程序员几乎是免费的。这意味着,当时的目标是尽可能节省计算机的时间,哪怕编写程序需要耗费大量时间。因此,编程语言的设计重点是简化计算机的工作,而不是程序员的工作。
然而,这种关系在八十年代发生了变化,那时计算机和程序员的成本开始趋于相等。如今,与程序员的价格相比,计算机几乎是免费的。
但是我们仍然使用明显源自 50 年代编程语言的语言进行编程。我们还没有做出那种心理转变——“哦,现在昂贵的是程序员,而不是计算机。”我们应该设计那些优先考虑程序员需求的编程语言,而不必过于担心计算机的支持。这就是我当前对编程语言的研究方向——声明式编程(Declarative programming)。在声明式编程中,你只需描述解决方案的目标,而让计算机自己去计算如何实现它,这不一定需要依赖人工智能。
注:在计算机科学中,声明式编程是一种编程范式,即构建计算机程序的结构和元素的一种风格,它表达了计算的逻辑而没有描述其控制流程。这与命令式编程相反,命令式编程以明确的步骤实现算法。常用的声明性语言包括数据库查询语言(例如SQL,XQuery),正则表达式,逻辑编程,函数式编程和配置管理系统。
事实上,即便没有人工智能,我们也能实现这一点。将来你可以选择使用人工智能。声明式编程的一个典型例子是电子表格,它在一个小范围内解决问题——当一个值发生变化时,所有相关数据都会自动更新。这无需额外编程,只需预先指定数据之间的关系。
我们在设计的声明式编程语言——XForms 中,正是遵循了这种思路。我们描述数据之间的关系,然后让计算机处理这些关系。事实证明,这大大减少了编程所需的时间和成本。使用声明式编程,编写程序的时间至少可以缩短至原来的十分之一,甚至有时仅为原来所需时间的百分之一。因此,这种方法更快速、更强大,让你能够在相对较短的时间内完成任务。因此,我认为声明式编程是未来编程语言的发展方向。一旦编程项目经理们意识到这种方法可以将资源需求减少至原来的百分之一,声明式编程的转变将不可避免地发生。
对开发者的寄语:灵活多样,抽象思考
GOSIM:对于许多程序员来说,新技术浪潮会带来焦虑和恐慌。您认为在程序员职业生涯的不同阶段,培养哪些技能或心态是很重要的?
Steven:我认为,对于大多数程序员来说,重要的是不要局限于单一的文化或技术。尽管你在日常工作中会主要使用某种语言,但你应该灵活多样,熟悉多种编程语言及其不同的范式。
程序员不应仅限于一种编程风格,而应该学习使用面向对象、函数式或声明式编程语言,这有助于以多样化的方式思考问题。通过学习声明式编程,我发现自己的问题解决方式发生了彻底的变化。这我来说是一个令人着迷的进化,我觉得这非常有益。
程序员还应避免过于关注底层实现细节。许多程序员习惯于从计算机工作的角度出发,这会限制他们的思维方式。在尝试解决问题之前,程序员应该练习抽象思维,理解所涉及的抽象概念。
GOSIM:这真是一次精彩的对话,感谢 Steven。