Es en gran parte 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 nuevas líneas (con una sintaxis especial para las declaraciones de varias líneas). Y Lisp pone entre paréntesis sus declaraciones entre paréntesis.
La razón principal por la que ;
es tan popular como separador / terminador de declaraciones es que la mayoría de los idiomas populares de hoy en día 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 primeras codificaciones de caracteres como ISO 646 .
Los caracteres ()*+-/<=>
se usan normalmente como operadores matemáticos y crearían ambigüedades de análisis si se usan como terminadores de sentencias.
product = a * b * // If '*' were a statement terminator,
c * d * // Are there two factors, or four?
Problemas similares se aplicarían a '
y "
, que normalmente se usan como delimitadores de cadena; ,
, que normalmente se usa para separar argumentos de función, y .
, que generalmente se usa como un punto decimal (o como un delimitador en construcciones como some_struct.some_field
).
Eso deja a !%&:;?
.
Elegir !
o ?
probablemente no causaría problemas técnicos, pero su significado en inglés daría un estado de ánimo incorrecto 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 opción más sensata como separador de declaración (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 idiomas con un operador &
lo usan como lógico o bitwise AND en su lugar.
El signo %
puede causar confusión en declaraciones como interest_rate = 2.99%
(lo que establecería la variable en 2.99
en lugar del 0.0299
esperado). Por supuesto, el conocido significado matemático de %
no impidió que C lo utilizara como operador restante.
Eso deja a :
y ;
.
:
es una opción sensata, y de hecho se usa como el separador de instrucciones dentro de la línea en la mayoría de los dialectos de BASIC.
Pero ;
tiene la gramática inglesa en su lado; se puede utilizar para separar cláusulas dentro de una oración.