È 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.