当前位置: 首页 > 后端技术 > Python

分号“;”简史在编程语言中

时间:2023-03-26 17:48:43 Python

在本文中,我将简要描述计算机编程语言中分号(许多计算机科学初学者的祸根)的使用历史。我们将看到分号有两个用途:作为语句分隔符和语句终止符,我们将看到它们的使用在过去60多年的编程语言历史中发生了怎样的变化。为什么编程语言要使用分号分号在编程语言中有两种作用:语句分隔符和语句终止符。当一种语言使用分号作为语句分隔符时,这允许您在同一行上编写多个语句并使用分号来标记语句的分隔,以便编译器或解释器可以找出一条语句的结束位置和另一条语句的开始位置。在使用分号作为分隔符的语言中,分号被认为是可选的,当一行代码只包含一个语句时通常不写分号。作为语句终止符的分号是可选的,用于明确标记语句的结束,使用分号作为终止符的编程语言会在分号不在预期位置时标记错误。许多编程专家声称以分号结尾的语句会使程序运行得更快,因为编译器可以更有效地执行它们,尽管我在本文末尾对这种说法提出异议。早期的高级语言和分号的使用当Fortran在20世纪50年代中期作为高级编程语言被引入时,编程语言的史前史就结束了。Fortran既没有使用分号作为语句分隔符,也没有使用分号作为语句终止符,并且Fortran中的一条语句每行只能写一次,换行作为语句终止符。现代编程语言中第一个使用分号的是ALGOL58,然而,这个版本没有得到很好的实现,很快就变成了ALGOL60。这个早期版本的ALGOL使用分号作为分隔符,尽管分号经常被冗余地用作语句终止符(尽管这不是必需的)。这种分号的混合使用会导致非常混乱的程序,分号通常放在某些行的末尾而不是其他行,如我从SteveMaurer的网站借用的ALGOL60代码片段所示:COMMENTadvancetothenextun-crossedout数字。;COMMENT这个数字必须是素数;FORi:=iWHILEi<1000ANDcandidates[i]=0DOBEGINi:=i+1;结尾;COMMENT确保不会跑掉数据结构的末尾;IFi<1000THENBEGINCOMMENT划掉所有倍数,从2*p开始。;j:=2;k:=j*i;FORk:=kWHILEk<1000DOBEGINcandidates[k]:=0;j:=j+1;k:=j*i;结尾;COMMENT前进到下一位候选人;我:=我+1;结束结束;Algol60衍生出Algol的其他版本……一直到Algol68。很多语言都是基于Algol,但对当今语言影响最大的版本是BasicCompositionalProgrammingLanguage(BCPL)。BCPL是1967年由剑桥大学的MartinRichards开发的一种编程语言。BCPL的设计融合了许多后来影响了C语言发展的概念,我们将在后面看到。BCPL也使用分号作为语句分隔符,很多写BCPL的程序员也用分号来表示行的结束,虽然像Algol这样的用法是多余的,行尾字符才是BCPL中真正的语句分隔符.影响当前分号使用的另一种语言是IBM的编程语言PL/I。PL/I开发于20世纪60年代中期,是当时C++的语言——因为该语言的设计者试图包含所有其他流行编程语言的所有特性,以便该语言可以替代Fortran进行科学计算,而COBOL用于商业计算。PL/I使用分号作为语句终止符,这个设计决定对其他语言的实现者有影响,例如C语言的开发者KenThompson和DennisRitchie。B、NB、C和分号1968年左右,当贝尔实验室结束Multics项目时,KenThompson开始开发一种基于BCPL的新语言,他称之为B语言。您可以在DennisRitchie关于C语言的历史的文章中阅读更多关于B的发展。Thompson将B设计为一种系统编程语言,用于开发当时刚刚起步的Unix操作系统。Thompson在B编程语言的设计中对BCPL做了很多修改,他所做的修改之一就是强制分号作为语句终止符。正如我之前提到的,分号在BCPL中作为语句终止符是可选的,但这只是因为编译器使用巧妙的规则不允许使用分号。Thompson希望B成为一种更高效的语言,因此需要使用分号作为语句终止符。当Thompson和Rich试图用B构建Unix时,他们意识到即使是Thompson的新语言也不适合作为系统编程语言,因此Rich开发了B的新版本,称为NB,以解决其中的一些问题。NB作为一种语言并没有持续多久,因为有两个人决定只需要废弃B。分号今天的状态正如我们所知,分号已经成为许多语言(C、C++、Java、C#和JavaScript)中首选的语句终止符,这里仅举几个最流行的语言。JavaScript是一个有趣的例子,因为最新版本的JavaScript允许您在大多数以换行符结尾的语句末尾省略分号。并不是所有的编程语言都使用分号作为语句终止符。与VisualBasic和VisualBasic.NET一样,Python使用换行符作为语句终止符。Ruby是另一种不使用分号的流行语言。另一种较新的语言Go也不使用分号作为语句终止符——尽管它确实将分号用作语句分隔符。另一方面,另一种新的系统编程语言Rust使用分号作为语句终止符。要查看哪些语言使用哪些字符或哪些字符作为语句终止符和语句分隔符,请转到此处。;//终结者;显然,对于如何最好地使用分号还没有达成共识,即使我们根本不应该使用它们。我的猜测是,随着编译器和解释器技术的改进,对像分号这样的语句终止符这样的语法糖的需求将会减少——尽管分号可以很好地用作语句分隔符。以上就是本次分享的全部内容。想了解更多python知识,请前往公众号:Python编程学习圈,发“J”免费领取,每日干货分享