如何写好一篇论文

其实身为一名将来要成为码农的软工master,学术活动基本上是与我们无关的,而与写paper也几乎是绝缘的。然而因为读书报告的缘故,也是寥寥看了几篇paper,尤其是Google的那三篇牛文,更是好好的拜读了一番。读完之后,除了对GFSMapReduceBigTable有了些了解外,倒是对这些paper的行文风格甚是感兴趣,觉得这些paper的行文似乎都是一脉相承,但是其思路倒是很是清晰明了。

今天闲来无事,把之前从网络上淘来一份slide给看了,主题就是讨论如何写好一篇论文的。至此想起之前的那些牛文,顿时明白了那些行文风格是从何处而来的了。于是,也有了把这个slide写成blog的想法。

这篇文章主要是把slide中的我认为比较重要的部分提取出来予以整合以实现共享吧。

首先,我们明确一下写paper的目的,按照国内这种功利的学术氛围,paper无非是用来实现各种利益的工具而已。然而,paper的真正的目的应该是交流思想的,把我们的对于某一问题的思想传递给别人。正如slide中的作者所述:

The greatest ideas are (literally) worthless if
you keep them to yourself.

对于写paper的方式,原作者给出了两种方式:
1.Idea -> Do Research -> Write Paper
2.Idea -> Write Paper -> Do Research
而且,原作者似乎比较倾向于第二种方式,理由无外乎借助外部力量实现研究的明确性。但是,由于我没有写过paper的经历,总是觉得的第一种方式才是合乎逻辑的,或许,原作者的Write Paper只是编写paper吧,并不是将其正式的发表出来,暂时只能这样猜想了。

如上所说,paper的真正作用是传递思想,那么我们该怎么把我们的思想传递给读者呢?当然是要有合理明了的逻辑顺序。因此,我们有着以下的要点和行文思路:

  • 现在有个难题,我们需要解决它。
  • 这个问题嘛,其实很有意思的,也是很有用的。
  • 当然,这也是一个很难的尚未解决的问题,所以要我们来解决。
  • 我现在找到一个解决方案。
  • 这是我的方案的实现,这里详细的介绍了我的方案的实现,而且我还给了充分的数据哦!
  • 其他人也对这问题给出了方案?好的,我的方案比他们的好多了,当然也是存在写不足的嘛!

好了,行文思路我们都有了,剩下来就是实现啦!OK,我们为我们的文章编写了以下的结构

  • 摘要(4句话左右)
  • 简介(1页纸)
  • 问题描述(1页纸)
  • 我的方案(1页纸)
  • 方案的具体实现情况(5页纸)
  • 其他人的类似工作(1-2页纸)
  • 总结和未来规划(0.5页纸)

关于摘要,我们有下面的要求:

  • 摘要放在最后写,虽然它排在最前面
  • 摘要的好坏决定了paper是否会被其他人阅读的
  • 摘要的结构遵循四句话结构:
    • 陈述问题
    • 说明问题的意义所在
    • 说明我们的方案已经完成的目标
    • 说明别人能根据我们的方案还能做些什么

写完摘要,我们就要写简介了,简介的主要要点如下:

  • 描述问题
  • 阐述我们对该问题的解决做出了那些贡献:
    • 用列表清楚的列出我们的贡献
    • 我们的贡献列表其实就是论文的大纲,我们的paper在后续中要一一予以论证的

接下来就是整个paper的主体了,问题+我们的方案+详细实现

  • 这处不要用引用的方式向读者介绍方案,读者很难的理解我们的真正思想
  • 具体描述方式:
    • 描述问题及其意义
    • 描述我们的方案
    • 证明我们的方案,解释我们是如何具体实现的
  • 使用简单的案例向读者解释,复杂的公式谁都看着头痛

写完整个paper的主要部分,剩下来的就不多了。对于同一个问题,我们给出了方案,别的人也说不定有其他的方案,那么,我们就要比较一下,以显出我们的优势。我们的方案肯定也是借助了外部的其他人的工作成果的,那么我们还要在相关工作予以引用说明啊。

  • 如果我们借鉴了别人的成果,那么我们就要予以承认的
  • 大度的竞争,可以请同方向的人对于paper草稿进行review
  • 承认方案中的不足部分
  • 我们的思路和想法必须自己的,若有冲突和重合,就要进行引用

这个slide中大致给出了这些思路,若是想要看具体的实践,可以推荐Google的那些paper,这些paper都是很好遵循以上的原则的,值得一读。

PS:参考的slide可以到此处下载