说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

我们是如何阅读代码的?

HTML文档下载 WORD文档下载 PDF文档下载
作者Eric Holk近日接受了一份调查研究《人们是如何理解程序的?》,通过回顾视频,Eric发现大脑如同计算机一样工作。作为程序员,你平时又是如何阅读代码的呢?

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

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

点击查看视频(需翻墙)

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

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

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

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

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

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

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

英文出自:Theincredibleholk

欢迎关注研发微博参与互动。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘