Es en gran medida una elección arbitraria. Algunos idiomas han hecho otras elecciones. COBOL termina las declaraciones con el .carácter. FORTRAN, BASIC y Python generalmente terminan las declaraciones con líneas nuevas (con sintaxis especial para declaraciones de líneas múltiples). Y Lisp pone entre paréntesis sus declaraciones entre paréntesis.
La razón principal ;es tan popular como separador / terminador de enunciados es que la mayoría de los lenguajes populares actuales se basan en ALGOL , que utilizó esa convención.
en lugar de un símbolo diferente?
¿Qué otro símbolo podrías elegir?
Los caracteres ASCII # $ @ [] ^ _ `{|} ~ no siempre estuvieron presentes en las codificaciones de caracteres anteriores como ISO 646 .
Los caracteres ()*+-/<=>se usan típicamente como operadores matemáticos y crearían ambigüedades de análisis si se usan como terminadores de enunciados.
product = a * b * // If '*' were a statement terminator,
c * d * // Are there two factors, or four?
Se aplicarían problemas similares a 'y ", que generalmente se usan como delimitadores de cadena; ,, que generalmente se usa para separar argumentos de funciones, y ., que generalmente se usa como un punto decimal (o como un delimitador en construcciones como some_struct.some_field).
Eso se va !%&:;?.
Elegir !o ?probablemente no causaría dificultades técnicas, pero su significado en inglés daría un mal humor al programa.
print(x)? # Yes, you should.
# It's an IMPERATIVE language; stop questioning my commands.
print(x)! # OK! You don't have to shout!
El &sería una elección más sensata como un separador de instrucciones (no terminador), porque
do_thing_a() &
do_thing_b()
puede leerse como un comando para hacer la cosa A y luego hacer la cosa B. Pero la mayoría de los lenguajes con un &operador lo usan como un AND lógico o bit a bit .
El %signo puede causar confusión en declaraciones como interest_rate = 2.99%(que establecería la variable en 2.99lugar de la esperada 0.0299). Por supuesto, el conocido significado matemático de %no impidió que C lo usara como el operador restante.
Entonces eso se va :y ;.
: es una elección sensata, y de hecho se usa como el separador de enunciados intralínea en la mayoría de los dialectos de BASIC.
Pero ;tiene la gramática inglesa de su lado; se puede usar para separar cláusulas dentro de una oración.