可能是重复问题:
为什么我们一直都要使用行号?
我很好奇早期版本的BASIC编程语言为什么像这样使用行号:
42 PRINT "Hello world!"
那时候的文本编辑器没有行号吗?
编辑:是的,我知道它们用于GOTO,但为什么呢?我的意思是,拥有标签会计算开销太大吗?
可能是重复问题:
为什么我们一直都要使用行号?
我很好奇早期版本的BASIC编程语言为什么像这样使用行号:
42 PRINT "Hello world!"
>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
命令来重新为代码编号(并相应地调整GOTOs
和GOSUBs
)。
这真是有趣的时光!
原始的BASIC语言中,行号实际上是控制流程的一个重要组成部分。
GOTO和GOSUB命令会使用行号进行控制流程。虽然这种做法现在已经不被鼓励,但在过去是很常见的。
还有其他的原因吗?
- user11347610 PRINT "HELLO WORLD"
20 GOTO 10
在早期的BASIC版本中没有命名标签。
如果您想在两行现有代码之间插入一行代码,也需要使用它们,因为在早期,您没有完整的文本编辑器。一切都必须在“交互式”解释器中输入。
所以,如果您输入:
15 PRINT "AND THE UNIVERSE"
10 PRINT "HELLO WORLD"
15 PRINT "AND THE UNIVERSE"
20 GOTO 10
在一些旧的编程语言(如GW-BASIC)中,行号是语法的必要元素。这主要是因为当时大多数操作系统缺乏交互式文本编辑器;由于程序员的界面通常仅限于行编辑器,行号提供了一种机制,可以引用源代码中的特定行进行编辑,并且程序员可以在特定点插入新行。行号还提供了一种方便的方式来区分要输入到程序中的代码和用户输入后立即执行的命令(这些命令没有行号)。
早期的所有编程语言都有序列号,所有内容都存储在打孔卡片上。
每个卡片上只有一行代码。
程序由一叠叠的卡片组成。
当你丢失了这些卡片时,你需要使用一个卡片分类器来将它们按照序列号排序。
当然,这些卡片也可以通过控制流构造进行引用。
这些是语句的标签,可以使你 GOTO
到指定行号的语句。语句的数量不一定要与文件中的物理行号匹配。
行号是语言的一部分,在一些非常早期的语言中,甚至操作系统也只是这些简单的行。你所拥有的就是一次只能操作一行。试着使用1-4k程序文件编写会计系统,并通过大小对其进行分段以完成任务。编辑时,您使用行号来确定正在编辑的内容。因此,如果您输入:
10 PRINT "howdy"
20 GOTO 10
10 PRINT "WOOPS"
15 PRINT "MORE WOOPS"
20
RUN
你将会得到:
WOOPS
MORE WHOOPS
将空白的20删除,可以有效地删除该行。