È in gran parte una scelta arbitraria. Alcune lingue hanno fatto altre scelte. COBOL termina le dichiarazioni con il .
carattere. FORTRAN, BASIC e Python generalmente terminano le istruzioni con newline (con sintassi speciale per le istruzioni multilinea). E Lisp racchiude le sue dichiarazioni tra parentesi.
Il motivo principale ;
è così popolare come separatore / terminatore di istruzioni è che la maggior parte delle lingue popolari di oggi si basano su ALGOL , che ha utilizzato tale convenzione.
invece di un simbolo diverso?
Quale altro simbolo potresti scegliere?
I caratteri ASCII # $ @ [] ^ _ `{|} ~ non erano sempre presenti nelle prime codifiche di caratteri come ISO 646 .
I caratteri ()*+-/<=>
vengono generalmente utilizzati come operatori matematici e creerebbero ambiguità di analisi se utilizzati come terminatori di istruzioni.
product = a * b * // If '*' were a statement terminator,
c * d * // Are there two factors, or four?
Problemi simili si applicherebbero a '
e "
, che sono generalmente usati come delimitatori di stringa; ,
, che viene in genere utilizzato per separare gli argomenti delle funzioni e .
, che viene in genere utilizzato come punto decimale (o come delimitatore in costrutti come some_struct.some_field
).
Che lascia !%&:;?
.
Scegliere !
o ?
probabilmente non causerebbe difficoltà tecniche, ma i loro significati inglesi darebbero lo stato d'animo sbagliato al programma.
print(x)? # Yes, you should.
# It's an IMPERATIVE language; stop questioning my commands.
print(x)! # OK! You don't have to shout!
La &
sarebbe una scelta più sensata come separatore di dichiarazione (non terminatore), perché
do_thing_a() &
do_thing_b()
può essere letto come un comando per fare la cosa A e poi fare la cosa B. Ma la maggior parte delle lingue con un &
operatore la usa come AND logico o bit a bit .
Il %
segno potrebbe causare confusione in istruzioni come interest_rate = 2.99%
(che imposterebbe la variabile 2.99
invece del previsto 0.0299
). Naturalmente, il noto significato matematico di %
non ha impedito a C di utilizzarlo come operatore residuo.
In modo che lascia :
e ;
.
:
è una scelta sensata, e in effetti viene usato come separatore di istruzioni all'interno della linea nella maggior parte dei dialetti di BASIC.
Ma ;
ha la grammatica inglese dalla sua parte; può essere usato per separare le clausole all'interno di una frase.