当您在BASIC中编写内容时,您需要使用行号.喜欢:
10 PRINT "HOME" 20 PRINT "SWEET" 30 GOTO 10
但我想知道:谁想出了使用行号的想法?它是如此令人讨厌,并在发展中(双关语)世界留下了相当的"回声"!
当时的想法是,您可以使用适当的行号轻松地在程序中的任何位置添加代码.这就是为什么每个人都使用10号,20号,30号线号码所以还有空间:
10 PRINT "HOME" 20 PRINT "SWEET" 30 GOTO 10 25 PRINT "HOME"
在第一个接口BASIC可用,没有闪亮的编辑器,甚至没有像vi或emacs(或DOS编辑,嘿).您只能在控制台上打印出您的程序,然后您可以先添加相应的行号来添加新行或替换它们.您无法浏览"文件"(程序保存在内存中,虽然您可以将副本保存在磁盘上),但光标就像您现在习惯的那样.
因此,行号不仅需要作为臭名昭着的GOTO的标签,而且确实需要告诉解释器您正在编辑的程序流程中的哪个位置.
它有一个龙的历史.
行编号实际上来自达特茅斯BASIC,它是BASIC编程语言的原始版本,并且是所谓的达特茅斯时间共享系统的组成部分.DTSS有一个基本的IDE,它只不过是一个交互式命令行.
因此,在"IDE"中键入的每一行,以行号开头,都添加到程序中,用相同的数字替换以前存储的所有行; 其他任何东西都被认为是DTSS命令并立即执行.
在出现像VDT(视频显示终端)这样的东西之前,我们在打孔卡上编程了老人.Punch卡为序列号保留了第72-80列 - 如果你丢弃了卡片组并且它们都已经无序,你可以将卡片放入卡片分类器中,根据这些序列号对卡片进行排序.在许多方面,BASIC行号与那些序列号相似.
BASIC世界的另一个优势是,在过去,BASIC被解释为运行.使用标签而不是分支的连续行号需要第一次传递来获取所有标签及其位置,就像您使用行号一样,解释器知道它是否需要开始向前或向后扫描目的地.
回到那天你没有像emacs或vi这样的二维编辑器.你所拥有的只是命令行.
您的程序存储在内存中,您可以键入单行命令来编辑单行.
如果你是Unix神,你可以用ed或者其他东西来做,但对于C-64,VIC-20或TRS-80的BASIC,你只需要覆盖该行.
所以会话可能如下所示:
$10 PRINT "Hellow World" $20 GOTO 10 $10 PRINT "Hello World"
现在该程序将正常工作.
一些较旧的大型机甚至没有屏幕的线路终端.你的整个会议用墨水印在纸上!
"谁?" 将是发明家,Kemeney和Kurtz.
阅读完回复之后,我查了维基百科的"达特茅斯BASIC" 条目,并对此感到惊讶
第一个编译器是在分时系统准备好之前生成的.它被称为CardBASIC,适用于基于标准读卡器的批处理系统.
所以,看起来Paul Tomblin"得到了广场".
它们起源于FORTRAN,BASIC源自FORTRAN.但是,在FORTRAN中,只有其他行(如GOTO目标)引用的行才需要数字.在BASIC中,他们有二次使用,即允许编辑特定的行.
Paul Tomblin的答案是最全面的,但我很惊讶没有人提到BASIC项目的最初目标很大一部分是使用分时器来提供一个适合初学者的互动环境.(Kurtz和Kemeny关于"所有学生普遍接入"的愿景远远超过了这方面的时间.)
为实现这一目标而开发的BASIC系统采用了Teletype ASR-33(以及后来的其他)打印终端.当连接到具有分时功能的操作系统时,这些允许以交互模式编辑和运行BASIC程序(与使用穿孔卡不同),但它们不是光标可寻址的.行号是一种初学者友好的方式,既可以指定程序语句的顺序,也可以在没有屏幕编辑器的情况下进行明确的编辑."线编辑器"的维基百科条目进一步解释,任何曾尝试使用行编辑器(例如Un*x'ed')的人都能理解为什么Kurtz和Kemeny应该感谢让初学者不得不学习神秘以这种方式编辑文本所需的命令序列.