最近在研究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……