可能的重复:
为什么我们没有打扰行号吗?

我好奇为什么早期版本的基本编程语言已经编号如:

42 PRINT "Hello world!"

文字编辑背后没有编号?

编辑:是的,我知道他们是用于goto语句,但为什么?我的意思是具有标签的过计算昂贵的?

有帮助吗?

解决方案

许多微型计算机具有在ROM中的BASIC解释器,它将开始在重新启动时。问题是,没有文本编辑器或文件系统可言。你有一个互动的提示,通过做的一切。如果你想插入一行代码,您只需键入它,首先是行号。这将它插入到你的代码中的正确位置。 e.g:

>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适当)。

有趣的时代!

其他提示

在原始BASIC行编号竟是语言的一个组成部分,以及用于控制流。

在GOTO和GOSUB命令将走线,并用它来控制流程。这是常见的,然后(即使它现在泄气)。

将它们用作标记用于GOTO和GOSUB

像这样:

10 PRINT "HELLO WORLD"
20 GOTO 10

有一些早期的BASIC版本中没有名为标签

如果你想插入的代码2条现有的线之间的线,因为在创业初期,你没有完整的文本编辑器,他们也需要。一切都在“互动”的解释中键入。

所以,如果你输入:

15 PRINT "AND THE UNIVERSE"

该方案将变得:

10 PRINT "HELLO WORLD"
15 PRINT "AND THE UNIVERSE"
20 GOTO 10

当你跑出来的行号,你可以运行一个“重编”工具重新编号程序中的所有行,但在64代和其他家用电脑的最初日子里,我们甚至没有说,所以你必须手动重新编号。这就是为什么你不得不离开的行号10或以上的差距,所以你可以很容易地之间添加行。

如果您想尝试一下的Commodore 64的解释,请写在Flash此C64模拟器: http://codeazur.com.br/stuff/fc64_final/ (没有安装必需)

在基本、在线数表示的顺序。

此外,许多老年编辑不是文件,而只是线("行编辑人员",例如 ed,标准的编辑).通过的编号们可以这样,你知道这行你的工作。

早在一天,所有的语言有序列号,一切都在穿孔卡片。 有每卡一行。 的副牌由你的程序。

当你放弃了卡,你把他们在使用这些序列号的卡片分拣机。

当然,它们是由控制流结构中引用。

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

  
    

线数分别在一些较老的编程语言,如GW-BASIC语法的必需元素。[2]造成这种情况的主要原因是,当时大多数操作系统缺乏互动的文本编辑器;由于程序员的接口,通常是仅限于一个行编辑器,行号提供了一种通过其在源代码中的特定行可用于编辑被引用的机构,和通过该程序员可以在特定点插入一个新行。行号也提供了代码之间进行区分,以被输入到程序的一种方便的手段,并且当由用户(其不具有行号)。输入被立即执行的命令

  

在的C64中,没有甚至一个真实编辑器(内置至少)。要编辑程序的一部分,你会做这样的事情LIST 100-200,然后你只能编辑目前正在显示在屏幕上的那些线(无向上滚动!)

他们是标签报表,这样你可以GOTO的行号。的语句的数目并不一定要在文件中匹配物理行号。

行号是在控制流中。目前还没有命名的子程序。你必须使用GOSUB 60,例如,调用子程序开始行60


在您的更新,而不是所有的语言有标签,但所有的语言在一段时间内的行号。有一段时间,一切都穿孔卡片。 BASIC是第一个交互式语言,在那里你可以真正输入一些东西,马上有反应之一。行号仍然在当前的技术。

标签额外的费用。你要跟踪的符号标签,因为它是指代码或数据之间的相关性。但是,如果每行有行号(如果控制流语句的所有传输总是指行的开头),那么你并不需要一个单独的符号表。

另外要记住,最初的BASIC解释并不需要为变量符号表:有26个变量命名为A-Z。有些是复杂的和有一个锌。有一些很花哨和变量后加上“$”或“%”添加字符串,整数和浮点之间的区别。但不需要符号表中。

IIRC,行号大多用作标签GOTO和GOSUB语句,因为在基本的某些(大多数?)的风味没有办法来标记的一段代码。

他们也使用编辑器 - 即你说:

edit 100

编辑线100。

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

当然,还有一个原因,这是不再进行。试想一下,如果你在第10行说GOTO 20,再后来意识到你需要线10突然后写的代码,10个行,你砸起来反对20,您可能需要您的子程序转移较远(更高的数字),并改变你的GOTO值,或者你需要写另一个子程序跳转代码更远。

在换句话说,它成为真正的面条代码一个恶梦,不好玩维护。

这是进入了在许多情况下,命令行(或者是,在我的旧的Commodore 64),所以有可能不总是会一直的文本编辑器,或者如果有,这是很基本的。

此外,你需要做的GOTO之类,以及插入线的其他人之间。

即:

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

,其中它会去在逻辑10 15 20

一些编辑器只有一个“覆盖”模式并且没有“插入”模式。这使得现有的代码编辑痛苦万分。通过添加行号的功能,你可以从然而随时随地修补文件中现有代码:

100 PRINT "Broken Code"
200 PRINT "Foobar"
...
101 patch the broken code
102 patch more broken code

由于行号没有被在文件中排序。

行号是语言的一部分,在一些非常早期的语言中,甚至操作系统也只是这些简单的行。你所需要的只是一次一行操作。尝试使用 1-4k 程序文件编写会计系统,并按大小对其进行分段以完成工作。要进行编辑,您可以使用行号来告诉您正在编辑的内容。所以,如果你输入如下:

10 PRINT "howdy"
20 GOTO 10
10 PRINT "WOOPS"
15 PRINT "MORE WOOPS"
20
RUN

您会得到:

WOOPS
MORE WHOOPS

空白 20 将有效删除该行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top