前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何阅读研究论文

如何阅读研究论文

作者头像
泉哥
发布2020-03-06 09:17:59
5850
发布2020-03-06 09:17:59
举报
文章被收录于专栏:漏洞战争漏洞战争

遥想当年,曾有一段时间经常下载国内论文来阅读,主要是关于漏洞挖掘相关方向的,但最后发现,天下文章一大抄,从本科到博士的研究论文有很多如此,另外有些只是做完作业,对研究结果完全无视,此风尤以毕业论文见长。这种情况导致我很长时间内不再看国内的研究论文,尤其是中文写的论文。 近两年,随着Fuzzing技术的崛起,四大顶级学术会议上经常出现Fuzzing技术相关的研究论文,于是常下载阅读,对于长论文还会打印出来。刚好昨晚看到一篇来自滑铁卢大学的文章叫"How to Read a Paper"(点击“阅读原文”获取)其中一些观点跟鄙人的一些阅读习惯相同,但也有一些方式不太认同,请读者自行依据个人习惯取舍。本文更多地是分享计算机相关研究论文的个人阅读方式,特别是那些习惯把论文就从头到尾阅读完的人更该看看。

135编辑器

三步阅读法

以前拿到论文经常从头到尾看,有时看了几页才发现并不是自己想要的,比较浪费时间。所以"How to Read a Paper"作者提倡“三步阅读法”(The Three-Pass Approach),虽然我的阅读顺序和方法与之不同,但也可以分为三步:

  • 第一步:了解论文大意,主要还是看自己是否感兴趣,是否有继续读下去的必要;
  • 第二步:了解论文主要内容,不求理解各个细节;
  • 第三步:深入理解论文内容,必要时动手验证。

第一步

先看标题,是否属于自己感兴趣的内容。

今年OffensiveCon大会有个个议题叫“can't grep this",如果你不看目录根本不知道对方是要讲CodeQL代码审计,所以接下来,依次阅读摘要、关键词、目录、结论,以了解论文大意,决定是否需要继续阅读。

个人觉得这里引言、参考文献是可以先不用看的,因为你看了上面几部分之后觉得没兴趣就可以扔掉论文了。引言更多是讲研究背景、价值和必要性,一般不涉及技术细节,对于理解论文的内容没多大帮助,常常是吹嘘成分居多。

阅读摘要和关键词,是为了判断论文讲述的技术方向、水平。结论是为了验证最终的效果以及该项研究的主要贡献,很多国内的毕业论文就经常经不住这种考验,最多验证下1day,有些甚至没效果没结论,这点着实令人对前面各种花哨的技术内容失去信心和兴趣了。

若是决定继续阅读,对于需要仔细阅读的长论文,我一般会打印出来,方便对比看和作笔记。比如Project Zero的Samuel公布的研究论文"FuzzIL: Coverage Guided Fuzzing for JavaScript Engines",无论是技术水平,还是写作格式,绝对是学术与工业结合的佳作。

第二步

第二步主要是图片、表格、引言、算法、参考文献。比如研发相关系统的论文,都会附上系统架构图,这对于帮助你理解论文的研究内容有个大体的认识,还有算法实现,多数为伪代码,比较好理解,可以进一步了解对方的技术实现相对前人有何不同,判断其主要贡献,效果验证部分经常也会提供对比表格、图片,方便判断此论文的技术价值有多大。若是贴大段真实代码、各种复杂公式的,可以先忽略,到第三步再细究

在这一步,可以帮助你判断自己的技术背景知识是否足够来理解该论文,除搜索引擎外,以及末尾的参考文献也是一份不错的学习资料,可以先标注一些你感兴趣且未读过的参考文献,在读完论文之后再去阅读参考文献。阅读参考文献可以看有没有自己阅读过的优秀论文,同时也可以主题阅读的方式,去找到更多优秀的论文进行学习。对于感兴趣但不足以理解论文内容的,该补的知识还是得先补下。

第三步

第三步仔细阅读正文,掌握论文中的技术细节,必要的话作笔记,电子版的可以在pdf上编辑标注,比如印象笔记,个人是习惯在纸质版上标记。最后就是根据论文价值和个人兴趣决定是否需要自己动手实现一遍,一来验证作者思路的准确性,二来帮助提升个人的技术能力。

"FuzzIL: Coverage Guided Fuzzing for JavaScript Engines"为例,我看论文花了一天,内容全英文且很长,看完之后搭建环境跑通FuzzIL又花了一天,然后阅读FuzzIL源码又花了一天,原本还想二次开发或者重写一个,最后还是没搞。不过,圈内已有人二次开发并发现Chrome 0day,也有一位认识的朋友直接用Python重写了一遍。

总结

本文主要总结了一些阅读研究论文的方法,个人更多的是阅读漏洞挖掘相关的论文,所以在阅读方式上可能会与其它论文类型的阅读略有不同,这仅代表个人阅读习惯,大家自行取舍。最后,总结一下本文分享的论文阅读顺序:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漏洞战争 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
代码审计
代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档