蒋涛与北大谢涛深度对话:AI如何重塑软件工程领域

发表时间: 2023-05-29 15:16

【CSDN 编者按】生成式 AI 的爆发已经开始改变很多行业的工作方式,但对于软件工程来说,转型早就开始。一位顶级华人学者在一篇16年前的经典论文中就已尝试用智能化的方式解决特定的软件工程领域的问题,在之后的十几年,这篇智能化软件开发领域的早期经典代表作引领着无数技术人在软件工程领域开疆拓土。

对话嘉宾:

谢涛 北京大学讲席教授

北京大学讲席教授、计算机学院软件科学与工程系主任,欧洲科学院外籍院士、国际计算机学会(ACM)会士、电气电子工程师学会(IEEE)会士、美国科学促进会(AAAS)会士、中国计算机学会(CCF)会士。主要研究领域包括软件工程,系统软件,软件安全,可信人工智能。
蒋涛 CSDN 创始人&董事长

25 年软件开发经验,曾领导开发了巨人手写电脑、金山词霸和超级解霸。

1999 年创办 CSDN(China Software Developer Network)。CSDN 是专业的中文 IT 技术社区,目前注册会员超过 4300 万,涵盖 90% 国内 IT 开发从业人员。

2011 年创办极客帮创投,作为懂技术的投资人,先后投资了聚合数据、巨杉数据库、传智播客、乐动卓越(我叫 MT)、IT 桔子等 100 余家高科技创业公司。被投项目中 SequoiaDB 巨杉数据库作为业界领先的金融级分布式关系型数据库产品,连续两年入选 Gartner 数据库报告,传智播客、柠檬微趣已于 2019 年、2017 年分别申报中小板和创业板上市,淘手游也被贵州省列为第一批科创板备案名单。

责编 | 何苗
出品 | CSDN(ID:CSDNnews)

2021 年,一篇发表于 ASE 2007 的经典论文,让 ASE 将「最有影响力论文」奖项颁给了北京大学讲席教授谢涛和当时的博士生 Suresh Thummalapenta。ASE 与 ICSE、ESEC/FSE 并列为软件工程三大国际顶会,在 ASE 历年最有影响力论文奖获奖作者中,谢涛是首批华人作者。

这篇论文中,谢涛与学生提出用机器学习提高软件研发效能的方法,将大规模的代码搜索、机器学习和数据挖掘结合。这也让他成为最早开展智能化软件工程研究的学者之一。

海外求学与执教的 14 年后,谢涛寻得契机回到北大任讲席教授,继续高水平科研工作。作为最早开展智能化软件工程研究的学者之一,他对 AI 及其应用的认知深入底层,对于 AI 新秀 ChatGPT,他表示:“ChatGPT 是模式上的大进步。它可以不停地对话,让用户把真正想要的东西表达清楚,仅仅是把需求搞清楚这一个点,就能让 AI 的效果和可用性往前迈一大步。”他相信未来中国也能够做出自己的 ChatGPT。

近两三年在智能化软件工程领域,大模型得到了极大关注。Copilot 的惊艳首发,让大家看到大模型在代码生成、代码审查、代码缺陷检测等方面的巨大潜力。再加上 ChatGPT 的拿手交互式对话,AI 技术为基础软件的发展提供了哪些新的方向和机会?对国产基础软件行业的发展有着怎样的展望?我们将从 CSDN 创始人&董事长蒋涛与北京大学讲席教授谢涛的深度对话中为大家悉数呈现。

视频内容收录于今日头条科学频道联合中国计算机学会(CCF)推出的“这很科学”之《科学真言》系列视频。

视频地址:https://live.csdn.net/v/262912

对话实录:

蒋涛:当前人工智能自动生成代码方面的发展状况如何?

谢涛:代码自动生成就是把实现用户所需功能的代码自动生成出来。假设用户需要一个快速排序算法的实现(给定的输入是一个整型数组)。把这个需求以自然语言的方式给到代码自动生成系统后,系统就可自动生成实现快速排序算法的代码。这是一种比较常见形式。

除此之外还有其他的生成形式。还是以排序功能为例,此时给到代码自动生成系统的是一个形式化需求规约,其表达给定输入为任意整型数组,输出为一个对其经过排序后得到的数组。系统就自动生成实现排序功能的代码,并不限定使用哪种排序算法。

如今代码补全(也叫代码续写)是产业界软件开发常用的一种工具辅助。类似于大家使用输入法工具感受到的,打出前几个字,后面工具就会自动提示下文。代码补全是代码自动生成当前在产业界已经落地的主要应用场景之一。但从使用上,两者有一些本质区别。代码自动生成可以在使用者读不懂被生成的代码或者不知道自己要写什么样代码的情况下使用,而代码补全通常要求使用者知道自己要敲什么代码,AI 只是让敲代码更快些。

蒋涛:代码自动生成已经在基于人工智能的代码补全的基础上更进一步。随着微软的 GitHub 发布 Copilot,各大公司也都推出代码自动生成引擎,DeepMind 曾发布 AI 编程系统 Alpha Code,但没有引起太大反响,是因为该技术有一定局限性吗?

谢涛:这里有好几个局限性,也是科研攻关的重点。

要让代码自动生成在某个软件企业内部落地,可能需要针对该企业软件开发的本地特点再学习、再训练,以便更好地提供定制化服务,要做好并不容易,不过我相信将来都可以解决。当前用于代码生成任务评估的常用数据集 HumanEval 是一个自包含的数据集,其中代码通常没有去调用第三方库等。但在真实开发场景里,所写的代码很可能会去调用一些第三方库或是自己写的库。 如果要生成的代码调用了企业内部的库,就可以通过上述的再学习、再训练去应对,但要想效果好并不容易。

另外,所生成代码的简单性、可理解性目前也没有很好地解决。如果能有机制去确认所生成的代码完全正确,而不用使用者去看它、改它,就能在使用过程中省下很多时间。除了人肉眼看代码外,如何保障生成代码完全正确?或许可以提供一些测试用例,但它不一定能完备,代码仅仅是通过了测试用例也不能让人放心。当然,也可以提供形式化需求规约并使用定理证明来证明所生成代码符合给定的规约,不过这么做需要较大的人力投入,并且对其支撑的工具也尚未成熟到能应对较大规模、产业实践中的代码。

蒋涛:写完代码或生成出来的代码能用 AI 判定其质量吗?

谢涛:产业界已经开始做这样的尝试,例如基于大数据或 AI研发出一个自动代码审查的工具。一些企业已经部署了这类工具,以数据驱动的方式来去辅助人工代码审查。除了代码审查外,AI 也可以助力测试任务。不过这些仍然是开放性的问题,需要长期攻关才能让落地效果足够好。

蒋涛:人工智能越来越强,会不会把普通人的饭碗抢了?甚至把程序员自己的饭碗也抢了?哪一类的程序员可能受到威胁?

谢涛:写代码时思考、设计较少的程序员岗位会受到威胁,比如传统意义上的“码农”。代码自动生成在特定领域效果很好,比如面向终端用户编程的一些领域。具体来说,BI 部门要紧张了,原先依赖于数据分析师根据数据分析需求去写 SQL 语句、可视化脚本等,现在自然语言翻译到 SQL 语句效果已经做得很好。在各种软件工程任务比如软件测试上,将来测试数据生成、测试预言生成等都可以被 AI 去自动化,前提条件是有足够多足够高质量的数据去喂给 AI。不过,研发基础软件等复杂软件的软件工程师应该不用发愁,因为这些研发工作太复杂了,应该不会受到 AI 的威胁。

蒋涛:人工智能不仅是程序员的帮手,还会干掉一部分人重复性的工作。一些数据分析的工作,可能会逐渐被机器人取代,研发基础软件的工程师则不必过于担忧。什么是基础软件?国内发展现状如何?

谢涛:业界对基础软件的定义范围不尽相同,但基本共识是包括操作系统、编程语言、编译器、数据库管理系统、办公软件以及浏览器在内。广义的基础软件还包括一些开发工具、测试运维工具等。办公软件因为太常用了,且在工作中处于关键位置,因此也成为了底座之一,现在被认为是基础软件重要部分。此外,一些工业软件支撑着工业应用的底座,也被包含在特定行业的基础软件里。

国产基础软件有很多子领域存在卡脖子的情况,比如操作系统,广义的工业软件 MATLAB 等等。也许大家要问 Linux、Android 等很多操作系统都是开源,怎么就被卡脖子了?很大一部分原因在于生态上的限制,导致其话语权不在我方。

国产操作系统近几十年发展良好,国家也一直在支持。但现在主流国产操作系统的“心”(内核)还是 Linux,尽管我国程序员与企业在 Linux 内核的贡献比例很大,甚至国内大厂华为对 Linux 内核的贡献如今位列第一,但是回到上述关键词——话语权,还是呈现贡献者多但核心决策人员话语权少的状况。但我国在大数据、 AI、云原生等相关的开源新兴领域有一定话语权。中国新一代技术力量正迎头赶上,企业的发展常常等不及其他人来引领,就自得投入并孕育出不错的研发核心人才,也因此在新兴领域有些建树。

蒋涛:如何定义基础软件的核心人才?

谢涛:有这样一个例子。回北大之前,我曾在 UIUC(University of Illinois at Urbana-Champaign,缩写为 UIUC)计算机系任教。该系有个 2005 年毕业的博士名叫 Chris Lattner,他的博士生导师 Vikram Adve 也是我的前同事,他们推出的 LLVM 构架编译器与 GCC 并列为三大编译器之一。Chris Lattner 后来被称为 LLVM 之父。他的导师告诉我, Chris 在读博期间就研制了 LLVM 编译器的基础设施,毕业后他就打定主意要去产业界,并且展现了很强的能力,拿下很多 offer,最终进入了苹果。Chris 当时的想法是:“谁允许和支持我继续把 LLVM 发扬光大,我就去哪儿!”Apple 全力支持了此事,所以 LLVM 后面发展势头很好。这里我们可以看到基础软件核心人才身上的特点。

蒋涛:人工智能的应用如今也非常广泛,水能载舟亦能覆舟,AI 成为了一部分人的帮手,也成为了一些不法分子手里的利器。央视曾曝光诈骗集团利用人工智能技术让机器人打诈骗电话,拨出 1700 万通电话,最后有 80 多万人上当,总计骗取 1.8 亿,而被骗的人从电话里根本分辨不出是机器人的声音。有没有 AI 技术可以辅助识别机器人骚扰电话,保护普通群众?

谢涛:大数据、AI技术越来越多被诈骗团伙等犯罪分子利用,使广大用户受害的事件层出不穷,要对其进行绝对防治是很难的。就像安全领域的攻和防的关系,我们只能通过提高诈骗门槛来一定程度去防治。目前 AI 技术已经使得发动攻击、诈骗的行动变得门槛很低,也能做出很逼真的机器人合成声,以及非常逼真的交谈内容。对于普通大众用户来说确实挺难防这些 AI 诈骗的手段。

以我的亲身经历为例分享一下防骗心得。有骗子曾以短信询问我某个业内同行的电话号码。这种询问途径其实不太常见,一般人不会直接就发短信来询问另一个人的电话号码。我们可以认真分析,如果一件事情所发生的途径并不自然且不常见,那么很可能就会有问题,要多加小心。

蒋涛:现在高仿技术越来越强,Deep Fake 可以在视频里换脸,高仿技术现在能做到什么样的程度?怎么样甄别高仿网站或者 App?

谢涛:仿冒的网站、App、邮箱、微信,诈骗短信、电话等,从照片内容来看是防不胜防,诈骗分子会做得很逼真。普通用户要学会看来源,看一些外围的信息。比如说看网站的 URL 链接。有些电子邮件里面包含网站链接时,它字面显示出来的链接和你复制粘贴到浏览器里的链接有可能是不一样的。有一次我收。有一次一个邮件要求我重设某账户的密码,由于我对软件安全比较敏感,因此没有直接点击邮件内的网址链接,而是复制粘贴这个链接至浏览器出来,这时就很快发现了网址有问题。因此,养成慎重打开链接的习惯很重要。

对于不懂 IT 的老年人,有一个针对移动应用或网站老年人用户的方向——适老化改造,探索怎么样才能让移动应用或网站等对老年人用户更友好。例如,首先技术上要有防诈骗手段支撑,包括 UI 设计、报警提醒等措施。在使用 AI模型到这些场景的时候,参数要设置成更大程度去保护老年人用户,因为他们被骗的成功概率更高。从老年人用户自身的角度来看,接到一个电话要先看看来源是哪里,现在智能手机可自动标注来源,老年人要注重去看这些细节,不要太轻信一些来源不明的信息或者是电话。