É em grande parte uma escolha arbitrária. Alguns idiomas fizeram outras escolhas. COBOL finaliza instruções com o .
caractere. FORTRAN, BASIC e Python geralmente encerram instruções com novas linhas (com sintaxe especial para instruções com várias linhas). E o Lisp coloca suas declarações entre parênteses.
O principal motivo ;
é tão popular como separador / terminador de instruções é que a maioria dos idiomas populares de hoje se baseia no ALGOL , que usou essa convenção.
em vez de um símbolo diferente?
Que outro símbolo você poderia escolher?
Os caracteres ASCII # $ @ [] ^ _ `{|} ~ nem sempre estavam presentes nas primeiras codificações de caracteres como ISO 646 .
Os caracteres ()*+-/<=>
são normalmente usados como operadores matemáticos e criariam ambiguidades de análise se usados como terminadores de instrução.
product = a * b * // If '*' were a statement terminator,
c * d * // Are there two factors, or four?
Problemas semelhantes se aplicam a '
e "
, que são normalmente utilizados como delimitadores de cordas; ,
, que normalmente é usado para separar argumentos de função e .
, que geralmente é usado como um ponto decimal (ou como um delimitador em construções como some_struct.some_field
).
Isso sai !%&:;?
.
Escolher !
ou ?
provavelmente não causaria dificuldades técnicas, mas o significado em inglês daria o humor errado ao programa.
print(x)? # Yes, you should.
# It's an IMPERATIVE language; stop questioning my commands.
print(x)! # OK! You don't have to shout!
A &
seria uma escolha mais sensata como um separador de instrução (não terminator), porque
do_thing_a() &
do_thing_b()
pode ser lido como um comando para fazer a coisa A e depois a coisa B. Mas a maioria das linguagens com um &
operador a usa como AND lógico ou bit a bit .
O %
sinal pode causar confusão em declarações como interest_rate = 2.99%
(que definiria a variável como em 2.99
vez do esperado 0.0299
). Obviamente, o conhecido significado matemático de %
não impediu C de usá-lo como operador restante.
Então isso sai :
e ;
.
:
é uma escolha sensata e, de fato, é usada como o separador de instrução intra-linha na maioria dos dialetos do BASIC.
Mas ;
tem a gramática inglesa do seu lado; pode ser usado para separar cláusulas dentro de uma frase.