当前位置:  开发笔记 > 编程语言 > 正文

为什么我们要打扰行号呢?

如何解决《为什么我们要打扰行号呢?》经验,为你挑选了7个好方法。

当您在BASIC中编写内容时,您需要使用行号.喜欢:

10 PRINT "HOME"
20 PRINT "SWEET"
30 GOTO 10

但我想知道:谁想出了使用行号的想法?它是如此令人讨厌,并在发展中(双关语)世界留下了相当的"回声"!



1> ypnos..:

当时的想法是,您可以使用适当的行号轻松地在程序中的任何位置添加代码.这就是为什么每个人都使用10号,20号,30号线号码所以还有空间:

10 PRINT "HOME"
20 PRINT "SWEET"
30 GOTO 10
25 PRINT "HOME"

在第一个接口BASIC可用,没有闪亮的编辑器,甚至没有像vi或emacs(或DOS编辑,嘿).您只能在控制台上打印出您的程序,然后您可以先添加相应的行号来添加新行或替换它们.您无法浏览"文件"(程序保存在内存中,虽然您可以将副本保存在磁盘上),但光标就像您现在习惯的那样.

因此,行号不仅需要作为臭名昭着的GOTO的标签,而且确实需要告诉解释器您正在编辑的程序流程中的哪个位置.


我记得想要在第24行和第25行之间添加一条线的相当大的问题,当时无法重新编号线(在Commodore PET上).
这让我回忆起在父母AT&T PC6300上编写GW-BASIC应用程序......

2> Anton Gogole..:

它有一个龙的历史.

行编号实际上来自达特茅斯BASIC,它是BASIC编程语言的原始版本,并且是所谓的达特茅斯时间共享系统的组成部分.DTSS有一个基本的IDE,它只不过是一个交互式命令行.

因此,在"IDE"中键入的每一行,以行号开头,都添加到程序中,用相同的数字替换以前存储的所有行; 其他任何东西都被认为是DTSS命令并立即执行.


+1 - *这*是正确的答案.行编辑器和在同一环境中立即执行的组合可能是BASIC最重要的贡献.

3> Paul Tomblin..:

在出现像VDT(视频显示终端)这样的东西之前,我们在打孔卡上编程了老人.Punch卡为序列号保留了第72-80列 - 如果你丢弃了卡片组并且它们都已经无序,你可以将卡片放入卡片分类器中,根据这些序列号对卡片进行排序.在许多方面,BASIC行号与那些序列号相似.

BASIC世界的另一个优势是,在过去,BASIC被解释为运行.使用标签而不是分支的连续行号需要第一次传递来获取所有标签及其位置,就像您使用行号一样,解释器知道它是否需要开始向前或向后扫描目的地.


这是唯一正确的答案!
BASIC在20世纪70年代出现......并且有一些基本的实施方式.小时候,我为CS专业赢得了D&D购买冲孔卡,包括一些BASIC.
此外,BASIC最初是作为编译器实现的,而不是解释器(类似于许多LISP实现在执行之前在条目上编译每个表达式的方式),因此解释器内部也是无关紧要的.
这不是无关紧要的,而是历史.你认为你的父母不相干,因为他们不是你吗?
是的,我同意.它绝对是打卡的心态.此外,由于大多数早期的家用电脑都有内置的基本编号(Apple,Commodore等),因此它变得非常普遍.有趣的是,这也允许您非连续地输入您的程序,这有助于他们有限的编辑功能.我在BASIC写的第一件事就是文本编辑程序.但是只要我用扩展BASIC拿到Vax,我就很高兴再也看不到行号了.

4> Sean Cavanag..:

回到那天你没有像emacs或vi这样的二维编辑器.你所拥有的只是命令行.

您的程序存储在内存中,您可以键入单行命令来编辑单行.

如果你是Unix神,你可以用ed或者其他东西来做,但对于C-64,VIC-20或TRS-80的BASIC,你只需要覆盖该行.

所以会话可能如下所示:

$10 PRINT "Hellow World"
$20 GOTO 10
$10 PRINT "Hello World"

现在该程序将正常工作.

一些较旧的大型机甚至没有屏幕的线路终端.你的整个会议用墨水印在纸上!



5> gbarry..:

"谁?" 将是发明家,Kemeney和Kurtz.

阅读完回复之后,我查了维基百科的"达特茅斯BASIC" 条目,并对此感到惊讶

第一个编译器是在分时系统准备好之前生成的.它被称为CardBASIC,适用于基于标准读卡器的批处理系统.

所以,看起来Paul Tomblin"得到了广场".



6> 小智..:

它们起源于FORTRAN,BASIC源自FORTRAN.但是,在FORTRAN中,只有其他行(如GOTO目标)引用的行才需要数字.在BASIC中,他们有二次使用,即允许编辑特定的行.



7> Armando Fox..:

Paul Tomblin的答案是最全面的,但我很惊讶没有人提到BASIC项目的最初目标很大一部分是使用分时器来提供一个适合初学者的互动环境.(Kurtz和Kemeny关于"所有学生普遍接入"的愿景远远超过了这方面的时间.)

为实现这一目标而开发的BASIC系统采用了Teletype ASR-33(以及后来的其他)打印终端.当连接到具有分时功能的操作系统时,这些允许以交互模式编辑和运行BASIC程序(与使用穿孔卡不同),但它们不是光标可寻址的.行号是一种初学者友好的方式,既可以指定程序语句的顺序,也可以在没有屏幕编辑器的情况下进行明确的编辑."线编辑器"的维基百科条目进一步解释,任何曾尝试使用行编辑器(例如Un*x'ed')的人都能理解为什么Kurtz和Kemeny应该感谢让初学者不得不学习神秘以这种方式编辑文本所需的命令序列.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有