文学编程的直觉动机?

4 scheme literate-programming racket scribble

所以,我使用scribble/lp模块使用plt-scheme编写我的第一个文字程序:

#lang scribble/lp
(require scribble/lp)

<<lp_scheme.ss>>

@chunk[<squarefunction>
        (define (f x)
         (* x x))]
Run Code Online (Sandbox Code Playgroud)

当然没有什么有用的.现在我有点想知道为什么我不会使用简单的注释,而不是文字编程结构.任何意见欢迎.如果有人可能有更多的曝光/曝光,那将是非常好的.有了它可能会更直观地解释良好记录的代码和使用Literate编程结构编写的代码之间的差异.

Bev*_*van 9

(我假设你正在使用Donald Knuth对文字编程的定义.)

关键的区别在于序列之一.

在编写常规应用程序时,对表达内容的顺序有限制.

为了显示:

  • 特定类的所有代码必须在一个地方
    (或在极少数地方表达,例如C#部分类)
  • 一个方法的所有代码必须一次性给出,执行顺序正确
  • 必须在依赖于它们的事物之前声明依赖关系
    (在大多数语言中使用之前声明的变量;在Pascal中使用之前声明的过程/函数;在.NET之前编译的库程序集)

通过文化编程,您可以摆脱这种限制,并在向其他开发人员解释程序时,以任何有意义的顺序表达您的概念.

这有另一个结果 - 在某些形式中,您可以表达一个概念(例如,"所有属性将在更改时触发PropertyChanged事件"),并在整个应用程序中编织在无数其他地方.

对于非常简单的程序,有文化的程序和评论良好的程序可能看起来一样 - 但随着系统复杂性的增加,两者将开始显得非常不同.

  • @Amit:并不总是更接近他们"思考"的方式.但总是朝着程序**和**的最清楚的解释.*思考*无关紧要.博览会的清晰和完整是最重要的. (3认同)