文学编程,让打码更优雅

编程文艺范儿

Posted by Nino Lau on September 20, 2018

最近在研究Jupyter Notebook的时候发现了文学编程的这个概念。左手程序员,右手艺术家,文学编程是什么,编程又如何能编出文艺范儿呢?

文学编程的概念

文学编程是一种由Donald Knuth提出的编程范式。这种范式提供了用自然语言来解释程序逻辑的机会。当然你一定会想到Markdown或者源代码中的注释。 与之不同的是,文学编程中间穿插着宏片段和传统的源代码,从中可以生成可编译的源代码。

文学编程的好处

  • 文学编程提供了更高质量的程序,因为它迫使程序员明确地陈述程序背后的思想,使考虑不周的设计决策更加容易被察觉。
  • 同时,文学编程提供了一个一流的文档系统,它是在程序创建、阐述思想过程中自然建立的。生成的文档允许作者在以后的任何时候重新回忆起自己的思想过程,并允许其他程序员更容易地理解程序的构造。

文学编程工具与文档生成器

文学编程经常被误解为只是一个注释提取工具,如Perl普通旧文档或Java Javadoc系统。然而文学编程工具实现了抽象概念网络,或者提供改变源代码的顺序、以便人类理解的能力,它们是有别于普通的注释提取工具。

文学编程工具的工作流

文学编程工具往往的工作由两部分组成:

  • 文档生成
  • 可执行代码生成

两者在同一个源上生成,因此它们是一致的。

文学编程举例

不同的文学编程工具有着不同的用法,这里列举一个常见的文学编程工具Jupyter Notebook(IPython Notebook是它的前身)。

左手程序员,右手作家:你必须会的Jupyter Notebook

28 Jupyter Notebook tips, tricks, and shortcuts – [翻译版]

文学编程工具

第一个出版的有文化的编程环境是WEB,由Donald Knuth在1981年为他的TeX排版系统而引入。文学编程概念还有许多其他实现,如Axiom、noweb、Latex、Jupyter Notebook、Julia……

更多参考

DK大神的论文 网站