为什么BASIC语言要使用数字行号?

20

可能是重复问题:
为什么我们一直都要使用行号?

我很好奇早期版本的BASIC编程语言为什么像这样使用行号:

42 PRINT "Hello world!"

那时候的文本编辑器没有行号吗?
编辑:是的,我知道它们用于GOTO,但为什么呢?我的意思是,拥有标签会计算开销太大吗?

13
当我加载页面时,没有任何答案。当我输入完我的答案后,包括我的在内有六个答案。回答过载。 - Mike Daniels
3
我想你可能触动了人们的怀旧情绪...许多美好的回忆从过去的日子里涌现出来... - NealB
1
为什么我们要费心去使用行号? - gnovice
1
如果你愿意的话,你可以在Visual Studio中启用行号。这是进行代码审查时引用代码的好方法(例如,您可以说“请重构文件xys.cs第150-160行,将代码拆分为几个方法”)。 - Keith Adler
4
@Nissan: "那些不是同样意义上的行号。它们不是程序的一部分,只是编辑器显示的一部分,就像左边界一样。" - John Saunders
显示剩余3条评论
15个回答

1

如果我没记错的话,行号主要用作GOTO和GOSUB语句的标签,因为在一些(大多数?)BASIC版本中没有办法对代码段进行标记。


1

它们也被编辑器使用 - 也就是你所说的:

edit 100

编辑第100行。


5
@Neil:你有一个编辑?我们不需要任何编辑!我们只需重新打一遍那行就可以了。 - John Saunders
@John 所有我曾使用过的BASIC版本,从最初的Dartmouth BASIC到微软的许多版本以及DEC-System 10上的版本(这是你能找到的最老的版本),都内置了一种行编辑器。 - anon
@John 你输入了“BASIC”,然后进入了BASIC环境,该环境具有行编辑器。或者在微处理器系统(例如Tandy CoCo或BBC Nicro)上,您可以立即启动BASIC环境,并且还内置了行编辑器。您使用的是哪个没有行编辑器的BASIC版本? - anon
@Neil:我想它可能被称为编辑器,但它不是一个单独的程序。 - John Saunders
1
@Neil: 这是一个时间框架的问题。还记得什么是“编辑报告”吗?有一段时间,也许“编辑器”指的是“您用于编辑的那些命令”。今天,这个词更可能是指一个单独的程序。 - John Saunders
显示剩余3条评论

1

正如其他人指出的那样,这些行号曾作为子程序的一部分而使用。

当然,现在不再这样做有原因。想象一下,如果您在第10行上说GOTO 20,然后稍后意识到您需要在第10行之后写10行代码。突然之间,您会撞到20,所以您需要将子程序移到更远的地方(更高的数字)并更改GOTO值,或者您需要编写另一个跳转到代码中更远位置的子程序。

换句话说,它变成了真正意义上的意大利面条式代码的噩梦,不好维护。


1
一些编辑器只有“覆盖”模式而没有“插入”模式。这使得编辑现有代码非常痛苦。通过添加行号功能,您可以从文件中的任何位置修补现有代码:
100 PRINT "Broken Code"
200 PRINT "Foobar"
...
101 patch the broken code
102 patch more broken code

因为行号不必在文件内进行排序。


1

在许多情况下(或者在我的旧Commodore 64上),它是通过命令行输入的,因此可能并不总是有文本编辑器,或者如果有的话,它也非常基础。

此外,您需要执行GOTO等操作,以及在其他行之间插入行。

例如:

10 PRINT "HELLO"
20 GOTO 10
15 PRINT " WORLD"

它将在逻辑10 15 20中去哪里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接