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.99
lugar 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.