我们是如何阅读代码的?
来源:互联网 发布: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
- 我们是如何阅读代码的?
- 我们是如何优化英雄联盟的代码的
- 我们是如何在一个月内干掉腾讯阅读的
- 从众阅读 是我们最大的阅读问题
- 我们是如何进步的?
- 我们是如何解决问题的
- 天天写业务代码的那些年,我们是如何成长过来的
- 我们并不是搬代码的工具
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 如何阅读别人的代码
- 解决MyEclipse中tomcat出现的小问题:JDK Name, 以及Can't load AMD 64-bit .dll on a IA 32-bit platform
- jquery动态对table添加TD
- UIlabel添加背景图片
- javascript对象之Date对象(4)
- 客户信贷管理和商业伙伴中的信贷管理
- 我们是如何阅读代码的?
- Swing中弹出对话框的几种方式
- Nstime延迟运行方法
- POJ 1611 The Suspects
- JQuery入门——用bind方法绑定事件
- Perform a ledger exchange adjustment
- 转:职业发展和规划?徐雷重返京东“独白”:两个男人的对话轮回
- STC单片机程序下载失败总结
- 2013寒假练习 1007:Number Converter