202537日晚,信科“E席谈”青年学术沙龙第二十七期活动在理科一号楼1127学生活动室顺利举办。北京大学计算机91直播 助理教授、博士生导师王迪老师受邀进行了以“计算之魂:程序设计语言”为主题的分享。91直播 团委书记吕媛老师参加了本次活动,沙龙由91直播 学生科学技术协会李唯嘉同学主持。

王迪老师讲授

讲座伊始,王迪老师先展示了自己围绕计算机程序设计语言的一份“简历”,同时提到了他曾在大学时期选修了数学91直播 的编程课,以此来引入本次学术沙龙的主题:“计算之魂:程序设计语言”。王迪老师提到,程序设计语言,是编写软件的最基本的工具。近些年来,越来越多的新的程序设计语言在蓬勃发展。那么,我们为什么需要这么多程序语言呢?王老师指出,程序设计语言跟计算有着密切的联系,是驾驭计算的一种工具。在当下的信息时代中,信息量爆发、数字化加速推进,人们对于不同计算任务的需求不断提升,在种种原因的共同作用下,催生了更多新的程序设计语言的诞生。

紧接着,王老师举了几个现实例子来简要地向同学们介绍了计算任务、程序设计语言、计算实现——软件设计的三个要素。其中,程序设计语言是连接计算任务与计算实现的不可或缺的桥梁。在现实中,计算任务是类似于计算最大公约数、算数独、判断人脸、计算棋盘状态下的最优决策等等。目前,计算语言可以大致分为机器语言到汇编语言到高级语言到下一代语言,而计算实现则是CPUGPUTPU等等。

同学们认真听讲

然后,针对语言蓬勃发展的现状,王迪老师重点讲述了我们设计下一代语言的动机,可以大致分为三类:让程序更容易写、驾驭智能的计算、让程序没有缺陷。

在第一部分“让程序更容易写”中,王老师用“我奶奶也能学会编程”的风趣说法通俗地向同学们解释了“让程序更容易写”的意义之一。王老师借用快速排序与二叉搜索树的例子来介绍了函数式编程,能否只描述目标,让计算机自动完成相应的计算。函数式编程描述目标的方式是定义一个从输入到输出的函数去限定多对一的关系。以及逻辑式编程,能否只描述目标,让计算机自动完成相应的计算,逻辑式编程中描述问题应该通过逻辑式去描述,王老师举了计算多个数中最大值以及计算数独的例子。紧接着,王老师介绍了向同学们介绍了《七周七语言》这本书。同时,他指出,语言数量增加的原因还在于计算任务的增加需要某个语言去更精确地描述某一类任务,构造某种程序设计语言,去描述某领域的特定问题,即领域特定语言(Domain Specific Language)。

在“驾驭智能的计算”部分,王老师首先提出了程序合成的概念,即能否不写程序,而是从问题描述出发直接生成程序?他指出Excel的快速填充功能,其实就是在特定领域内程序合成的例子。紧接着,他比较了逻辑式编程和大语言模型在给描述算答案的过程中的表现,大语言模型并不能很好的完成任务,但是如果给问题描述,让大语言模型生成计算答案的程序,则其表现会好得多。那么,为什么用程序设计语言作为媒介能更好的解决一些问题呢?王老师指出,大语言模型其实是一种生成式计算,是完全由数据驱动的,以概率为基石,带有不确定性,可能会关注某些与该问题无关的信息,因而在新的场景下不一定能有符合预期的表现。在程序设计语言的历史发展进程中,语言的抽象程度越来越高,那么很自然的想法是自然语言编程能否带来新型的抽象,这个想法在过去是被否定的,但是大语言模型的诞生可能会带来新的机遇。

在第三部分“让程序没有缺陷”中,王老师指出,设计软件的时候,必须去规避灾难性的程序缺陷。那么,如何知道程序的正确性就变得异常重要。但是,王老师同时提到,哥德尔不完备定理与图灵等人的理论证明了不可能有自动判定程序正确性的程序存在。所以,需要寻找别的替代方式去避免程序出错。比如规约函数,即通过声明式的方式给出明确的函数定义,并通过点到点分析的方式,去检查与原函数有无差异。同时,还可以通过程序断言的思路,让编译器去分析程序做了什么,去给出一个近似的答案,其中可以分为上近似与下近似两种,上近似用于证明程序没错,结果是“没有”或者“可能有(存在误报可能性)”,下近似用于证明程序有错,结果是“有”或者“可能没有(存在漏报可能性)” 。而还可以通过人(或者AI)去写一个正确性的证明,再去自动检查,这或许是一个可行的思路。

王老师耐心解答同学提问

最后,本期“E席谈”青年学术沙龙活动在同学们热烈的掌声中圆满结束!


响应国家关于教育科技人才一体化战略以及北大“科技创新年”整体部署,信科“E席谈”青年学术沙龙在本学期持续开展,邀请信息学科领域优秀青年教师为本科生介绍信息技术学科和产业发展热点和前沿话题,分享青年教师的学术成长发展道路,引导信息学科本科学生一方面开阔学科视野,增进专业认知,寻找未来感兴趣的发展方向,另一方面坚定学科理想和学术追求,规划好学习科研的方向和计划,自觉将个人的学习成长与北大“新工科”建设发展战略、与世界信息科技前沿和产业发展、与国家重大战略需求紧密结合在一起,努力培养专业基础宽厚、创新能力突出、意志坚定、视野开阔的信息领域高层次人才。