代码缩进的起源


31

我有兴趣了解谁引入了代码缩进,以及引入的时间和地点。

对于代码理解来说,这似乎至关重要,但这并不是通用的。大多数Fortran和Basic代码是缩进的(?),Cobol也是如此。

我敢肯定,我什至看到过旧的Lisp代码都写成连续的,换行的文本。您只需要在脑子里数一下括号就可以解析它,不要介意理解它。

那么,如此巨大的进步从何而来呢?我从未见过有关其起源的任何提及。

除了使用它的原始示例外,我还在寻找有关缩进的原始讨论。


我不确定它有一个原点。同样,对于某些早期代码,空间本身占用的空间将是一个问题。
杰克·艾德利2014年

1
实际上,FORTRAN 缩进的。各种各样。它按列排列,C如果要发表评论,则第一列保留给角色。
乔纳森·兰德伦

除非缩进用于更改代码的语义(除非更改缩进会将其放入循环中或作为ifla#的一部分),否则缩进实际上不是语言功能,它是一种IDE功能(以及编译器中的一些内容,以忽略前导空格)。@Jack的权利-最初,程序是在卡上打孔的,而缩进实际上不存在于存储中(也许现在也不应该)。列式RPG不使用缩进(而且每行只能有20个左右的字符),但是IDE可以为您“缩编”代码。
Clockwork-Muse

6
一夜间思考这个问题,我想到缩进在某种程度上可能早于编程。在任何人编写计算机程序之前,缩进都可能在指令列表中使用。我试图寻找一个例子。
杰克·艾德利2014年

@ Clockwork-Muse缩进是COBOL的一种语言功能,直到大约20年前(“ A区域”,“ B区域” )。
罗斯·帕特森

Answers:


21

缩进代码的起源可能可以在ALGOL中找到:

ALGOL引入了代码块以及用于对它们进行定界的beginand end对,这也是第一种在词法范围内实现嵌套函数定义的语言。


这听起来很合理,尽管我想知道Lisp的手法是否可能不是最先出现的。无论哪种方式,我实际上都希望介绍缩进的细节。
Daniel Mahler

4
@DanielMahler-浏览LISP 1编程手册,自己看看。某些示例代码已缩进,但充其量只是偶然。大部分示例代码都向左对齐。
大卫·哈曼

@DavidHammen那肯定是最糟糕的打字机之一...您会以为他们只是手写了整本书。
Panzercrisis

6
我认为引用的文字实际上不支持缩进的使用/存在。那就是对节代码的支持。Java使用方括号({})来分隔块,您可以定义嵌套函数,但这并没有告诉我有关代码是否实际缩进的任何信息。
Clockwork-Muse

12

缩进代码必须在1958年之前到达,因为它存在于LISP和ALGOL中,但并非无处不在。我可以找到的最早的是COMTRAN,它于1957年推出,尽管我只能找到1960年的手册(请参阅第90ish页)。这种缩进与现代概念有所不同,因为自ALGOL以来,COMTRAN缺少大多数语言的块结构,但我认为它仍应包括在内。

我怀疑这实际上不是第一个示例,但我找不到更早的位置。

更新

在我看来,缩进在某种程度上可能早于编程。在任何人编写计算机程序之前,缩进都可能在指令列表中使用。不幸的是,我找不到任何好的例子。


-1

罗斯·帕特森(Ross Patterson)评论的扩展-COBOL编译器(或者至少是我在开放系统前的职业中使用的IBM编译器)强制使用缩进(他提到的“ A”和“ B”区域)。如果未正确放置这些区域中需要的任何元素,则代码将无法编译。但是,除此之外,不需要特定的缩进-修改另一个缩进样式与您的缩进样式不同的开发人员的代码时,这通常会引起麻烦-礼节会建议您遵循现有的模式,以保持同行之间的和平。此外,同一来源中的不同样式将使外观看起来更像俄罗斯方块,从而加剧观看的麻烦。

自从我考虑过COBOL及其缩进以来已经有好几年了-感谢您提出问题,并为过去提供了一些旅行!

马蒂

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.