È in gran parte una scelta arbitraria. Alcune lingue hanno fatto altre scelte. COBOL termina le istruzioni con il carattere .
. FORTRAN, BASIC e Python generalmente terminano le istruzioni con newline (con sintassi speciale per istruzioni multilinea). E Lisp mette tra parentesi le sue affermazioni con parentesi.
Il motivo principale per cui ;
è così popolare come separatore / terminatore di istruzioni è che la maggior parte delle lingue popolari di oggi si basa su ALGOL , che utilizzava quella convenzione.
instead of a different symbol?
Quale altro simbolo potresti scegliere?
I caratteri ASCII # $ @ [] ^ _ '{|} ~ non erano sempre presenti nelle prime codifiche dei caratteri come ISO 646 .
I caratteri ()*+-/<=>
vengono in genere utilizzati come operatori matematici e creerebbero ambiguità di analisi se usati 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 tipicamente usati come delimitatori di stringhe; ,
, che viene in genere utilizzato per separare gli argomenti della funzione e .
, che viene in genere utilizzato come punto decimale (o come delimitatore in costrutti come some_struct.some_field
).
Questo lascia !%&:;?
.
Scegliere !
o ?
probabilmente non causerebbe difficoltà tecniche, ma i loro significati inglesi darebbero l'umore 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!
Il &
sarebbe una scelta più sensata come separatore di istruzioni (non terminatore), perché
do_thing_a() &
do_thing_b()
può essere letto come un comando per fare cosa A e quindi fare la cosa B. Ma la maggior parte delle lingue con un operatore &
la usano come logica o bit a bit AND invece.
Il segno %
potrebbe causare confusione in istruzioni come interest_rate = 2.99%
(che imposterà la variabile su 2.99
invece del previsto 0.0299
). Ovviamente, il noto significato matematico di %
non ha impedito a C di utilizzarlo come operatore rimanente.
Quindi lascia :
e ;
.
:
è una scelta sensata, e infatti è usato come separatore di istruzioni intra-line nella maggior parte dei dialetti di BASIC.
Ma ;
ha la grammatica inglese su un lato; può essere usato per separare le clausole all'interno di una frase.