我们是如何阅读代码的?

来源:互联网 发布:mysql 工具 安卓 编辑:程序博客网 时间:2024/05/17 02:05

最近,我参与了一项针对程序员心理测试工作。我的一位朋友Mike Hansen做了一份关于《人们是如何理解程序的?》的调查报告,旨在找出编程系统中的一些特性以便帮助程序员明白他们做了什么,以及如何使系统产生高质量的软件。在进行实验测试时,Mike向开发者们展示了几个简短的Python程序并且告诉他们其输出的程序,在测试对象前面设置了眼球追踪仪,以便他能清楚地看到测试过程中不同阶段的工作情况。

幸运的是,我也成为测试对象中的一员。随后,Mike给我分享了利用眼球追踪仪拍下的一段视频,如下:

点击查看视频(需翻墙)

在观看整个视频过程中,另我感到吃惊的是,我们的大脑就像计算机一样工作。

首先,我阅读了整个程序,然后开始解释程序。该程序需要解决调用两个函数的问题,一个是between;另一个是common。第一次调用between时,在调用站点和定义函数上,我花费了很长时间;第二次调用时,我只看了下定义函数。

在编程语言中,我似乎在做一些类似(just-in-time)即时编译。通过第一次调用,我阅读并解释了每一个指令。之后,我能记得某个函数的功能并且能够快速输出程序。第一次调用解释大约占用24秒,而在第二次时仅用了10秒。

另一个观察是,函数命名似乎很有帮助,我能够迅速地通过common来执行工作。与此同时,在阅读整个程序时,我在想“这个应该是两个数组中的返回元素。”阅读整个程序以确认这个命名如它所暗示的那样,然后我可以在我的脑海中做出相同的操作,而不是通过解释代码来做。

我很期待看到Mik的演讲能说明什么。

令Mike感兴趣的是,了解没有经验的程序员从有经验的程序员那学到哪些经验。比如,变量命名可以帮助有经验的程序员快速理解代码。另一方面,没有经验的程序员不必在意函数里的变量是如何命名的。

如果你这个调研感兴趣,你可以发邮件给mihansen@indiana.edu,相信你会有所收获。

英文出自:Theincredibleholk