为什么BASIC有编号线?

Gio*_*hal 20 programming-languages basic

可能重复:
我们为什么要打扰行号呢?

我很好奇为什么早期版本的BASIC编程语言有如下行编号:

42 PRINT "Hello world!"
Run Code Online (Sandbox Code Playgroud)

当时的文本编辑没有行编号?

编辑:是的,我知道它们用于GOTO,但为什么呢?我的意思是标签的计算成本太高了?

Fer*_*cio 26

许多微型计算机在ROM中都有一个BASIC解释器,可以在启动时启动.问题是没有文本编辑器或文件系统可以说.您有一个交互式提示来完成所有事情.如果要插入一行代码,只需输入代码,从行号开始.它会将它插入到代码中的正确位置.例如:

>10 print "hello"
>30 goto 10
>20 print "world"
>list
10 PRINT "hello"
20 PRINT "world"
30 GOTO 10
>

(在该示例中>是BASIC提示符)

如果你想擦除一行,你会输入类似的东西ERASE 20.一些非常奇特的系统给了你一个行编辑器(即EDIT 10)如果你没有计划你的行号并且用完了(如何在10到11之间插入一行?)某些系统给你一个RENUM命令,它会重新编号你的代码(GOTOsGOSUBs适当调整).

娱乐时间!

  • 不仅如此,那时候还没有互联网.您想要访问您_walked_到它所在的计算机.上坡.双向.当Ferruccio说没有文件系统时,在最早的微型计算机系统上根本就没有永久存储器.把它关掉,一切都消失了.最终我们有能力将节目保存在盒式磁带上.有时你甚至可以从磁带重新加载程序,如果你设法达到正确的水平. (8认同)

Ree*_*sey 9

原始的BASIC行编号实际上是该语言不可或缺的一部分,用于控制流程.

GOTO和GOSUB命令将占用该行,并将其用于控制​​流.这是常见的(尽管现在不鼓励).

  • 虽然你的答案没有错,但更完整的答案表明缺乏交互式文本编辑器使得行编号成为必要的罪恶; 这样就可以在先前输入的行之间插入额外的代码行. (4认同)
  • 不要忘记行号对于调试很有用,因为编译器/运行时会在发生语法错误/异常时报告有问题的行号。 (2认同)

Phi*_*ert 8

它们被用作GOTO和GOSUB的标签

像这样:

10 PRINT "HELLO WORLD"
20 GOTO 10
Run Code Online (Sandbox Code Playgroud)

某些早期BASIC版本中没有命名标签

如果您想在两个现有代码行之间插入一行,那么它们也是必需的,因为在早期,您没有全文编辑器.所有内容都必须在"交互式"解释器中输入.

所以,如果你输入:

15 PRINT "AND THE UNIVERSE"
Run Code Online (Sandbox Code Playgroud)

该计划将成为:

10 PRINT "HELLO WORLD"
15 PRINT "AND THE UNIVERSE"
20 GOTO 10
Run Code Online (Sandbox Code Playgroud)

当你没有行号时,你可以运行一个"重新编号"工具来重新编号程序中的所有行,但是在Commodore 64和其他家用电脑的早期阶段,我们甚至都没有,所以你' d必须手动重新编号.这就是为什么你必须在行号中留下10或更多的间隙,这样你就可以轻松地在它们之间添加行.

如果你想试用Commodore 64解释器,请查看用Flash编写的这个C64模拟器:http://codeazur.com.br/stuff/fc64_final/(无需安装)


Jus*_* R. 7

在BASIC中,行号表示序列.

此外,许多较旧的编辑器不是用于文件,而是简单的行("行编辑器",例如ed,标准编辑器).通过这种方式对它们进行编号,您就知道您正在使用哪条线.


小智 6

在当天,所有语言都有序列号,一切都在穿孔卡片上.每张卡有一行.卡片组成了你的程序.

当您丢弃卡片时,您将它们放入使用这些序列号的卡片分类器中.

当然,它们由控制流构造引用.


小智 6

一个简单的谷歌揭示维基百科有什么说法:

在一些较老的编程语言(如GW-BASIC)中,行号是语法的必需元素.[2] 主要原因是当时大多数操作系统缺少交互式文本编辑器; 由于程序员的界面通常仅限于行编辑器,因此行号提供了一种机制,通过该机制可以引用源代码中的特定行进行编辑,并且程序员可以通过该机制在特定点插入新行.行号还提供了一种方便的方法,用于区分要输入到程序中的代码和用户输入时立即执行的命令(没有行号).