程序理解是软件工程师使用源代码作为主要信息来源来理解软件系统行为的过程。理解计算机代码是一项具有挑战性的活动,它涉及各种认知能力,从语法解析到重建系统。
理解代码的过程非常有趣,但是很少有人知道人类大脑在理解代码时是如何处理代码的。
所以现在有个问题非常有意思:当人们分析计算机程序时,哪些大脑区域是活跃的?
对此,麻省理工学院的工作人员做了相关研究。
在阅读代码时,从大脑信号的记录中解码感兴趣的代码属性是发现大脑中存储了什么信息的一种方法(通过fMRI或EEG)。在这种解码分析中,目标代码属性的选择(应该研究哪些代码属性)是一个关键问题。我们可以选择代码的一些基本特征,并检查它们是否可以被破坏。尽管这样的集合很有用,但它不能阻止编码其他更复杂的代码元素。
研究人员通过检查功能磁共振成像(fMRI)测试程序员对Python代码理解的大脑记录来研究这个问题。
MD和语言系统在人脑中的大致位置。所描述的区域被用作在单个参与者中对这些系统进行功能本地化的起点
这些最初评估了大量静态和动态代码特性,包括与运行时和抽象语法树(AST)相关的度量指标,并研究了它们如何与神经大脑信号连接。然后,他们训练探测器将大脑记录与由经过代码训练的ML模型发现的表示形式匹配,以确定大脑表示是否携带关于计算机程序的细粒度信息。
通过这项研究,科学家发现哪些大脑系统主要负责编码和解码与计算机程序相关的信息。
他们发现,不同的代码特征是由多需求系统和语言系统(负责非常不同的认知任务的大脑系统)编码的,而且它们都与机器学习的代码表示特别一致。这些发现表明,至少有两种不同的神经机制影响着计算机程序的理解和评估,这促使代码模型目标的发展超越了静态语言建模。
这项工作的目标是将大脑对代码的表示与(1)特定的代码属性和(2)经过代码训练的语言模型产生的代码表示联系起来。
他们还发现,像控制流和静态分析这样的语法相关特性是由语言系统编码的。
这证明将大脑表征转化为通过编码模型学习的表征是可能的,这是他们工作的另一个重要贡献。他们注意到MD和LS中代码模型所表示的属性的编码,其中四个模型从MD中更精确地映射出来。
这项研究可能会促进我们对大脑是如何组合在一起的理解,从而帮助我们创建更有效的代码模型。该研究还提供了初步的证据,支持解码某些基本的代码相关原语,如控制流数据。因此,这项研究可以彻底改变我们编码的方式,并帮助我们创建更有效的代码模型。
参考:
https://www.marktechpost.com/2022/12/28/exploring-the-brain-mit-researchers-investigate-which-areas-are-activated-during-evaluation-of-computer-programs/
https://openreview.net/pdf?id=AqexjBWRQFx
仅用于学术分享,若侵权请留言,即时删侵!