IT届流传着一个广为人知的陈年笑话:
我是个程序猿,一天我坐在路边一边喝水一边苦苦检查bug。这时一个乞丐在我边上坐下了,开始要饭,我觉得可怜,就给了他1块钱,然后接着调试程序。他可能生意不好,就无聊看看我在干什么,然后过了一会,他幽幽的说,这里少了个分号。
分号。
![4479c967d0f6a8d59907a5af039eef85.png](https://i-blog.csdnimg.cn/blog_migrate/16811d07822080956c009ea13f96fedf.jpeg)
对,我们今天就来聊聊编程语言中的分号!
编程语言的数量,那可多了去了。但是,分号的作用无外乎两种:语句分隔符和语句终止符。
当然,还有很多编程语言不涉及分号的使用,此处先放下不管。
![7672d328a13fc21dd9e68e1ef9c77c17.png](https://i-blog.csdnimg.cn/blog_migrate/0ab6827098b813a6353ebf95ab1ebcd5.jpeg)
我们先看一下分号,是怎么出现到编程语言中的。
FORTRAN语言是世界上第一个被正式推广使用的高级编程语言。想了解编程语言的可以看一下汇智妹之前写的《编程语言发展史》。
在FORTRAN语言中,分号毫无存在感,既不作为语句分隔符使用,也不作为语句终止符。FORTRAN中的语句每行只能写一个,所以新行就自然而然成为了语句终止符。
![21299bd1922ced9b0f497542674b80b9.png](https://i-blog.csdnimg.cn/blog_migrate/47d7c1aaedd3f36c7cc2169b36019075.jpeg)
1958年12月,首次使用分号的ALGOL 58诞生了。在这个版本中,分号是作为语句分隔符使用的,虽然经常被多余地用作语句结束符。
然而在1959年,IBM与SHARE因应700系列上运作更替的成本效益,终止了ALGOL 58的使用。
![f2bafda17dfa4ccc68667baff4fb36cd.png](https://i-blog.csdnimg.cn/blog_migrate/694d079db946ca74831d793e0265e7a0.jpeg)
随着ALGOL的发展,也启发了Simula、Pascal、Ada、C语言的发展。
C语言或者说类C语言则开始把分号作为语句结束符来使用,而JavaScript在此同时允许在大多数以换行符结尾的语句末尾省略分号。
将分号作为语句结束符这件事,开启了一扇新的大门。
![bfd9e538bac9207bde36dc01d620fc24.png](https://i-blog.csdnimg.cn/blog_migrate/1d572ab4d2a9a407d9372c41bd1c2123.jpeg)
写分号,不是为了配合人类习惯,只是为了配合编译器。尤其是在那个编译器还不太聪明的年代。
渐渐地,关于分号的段子越来越少,不需要分号的语言也越来越多。
比如Python,比如Swift,比如Ruby……当然还有Go,不过,Go只是不将分号作为语句终止符,但会把它作为语句分隔符。
![b7048514cf36b3275a17decf438af063.png](https://i-blog.csdnimg.cn/blog_migrate/58d1411fbecf3a17f1e35427bcd66bb0.jpeg)
我们有理由相信,随着编程语言的不断发展,分号这个磨人的小妖精,将彻底消失。
当然,分号作为语句分隔符还是很好用的,这个可以有。