L'operatore !=
è più comunemente usato al giorno d'oggi a causa della travolgente influenza in C. Ma come è arrivato C?
L'operatore matematico per la disuguaglianza è ≠
. Alcune lingue usano questo operatore direttamente come parte della loro sintassi, ad es. APL o ALGOL. Poiché la negazione matematica è ¬
, il dialetto ALGOL W utilizza ¬=
. Il fatto che tali simboli siano supportati dipende dal set di caratteri e dalla tastiera del sistema informatico. Poiché molte lingue sono state definite in una notazione più matematica che non corrispondeva esattamente alla rappresentazione reale del codice sorgente, questo pezzettino di archeologia informatica è un po 'difficile.
Per scrivere programmi su sistemi senza questi simboli sono stati usati altri grafici. Si noti che ASCII a 7 bit non era in alcun modo universale per un lungo periodo di tempo, quindi il set di caratteri ASCII non era di per sé un vincolo o un serbatoio di possibili caratteri per i progettisti di linguaggi.
Negazione supportata ALGOL come /=
che è visivamente molto vicino all'operatore matematico. (Per inciso, il carattere backslash \
è stato implementato in modo che ALGOL potesse scrivere operatori logici come /\
e \/
.) Molte lingue supportano le parole chiave che potrebbero essere utilizzate al posto degli operatori, come .NE.
(Fortran ), .NE
(ALGOL a 6 bit) o NE
o NEQ
.
Gli antenati di C sono B e BCPL. Questi sono linguaggi senza nome: tutto è una parola macchina. Non distinguono tra operazioni logiche e bit a bit. Nella negazione bit a bit BCPL era ~
e il puntatore-dereferenza era !foo
. Non c'era un simbolo simile ad ASCII per i non-uguali. In B, il pointer-dereference era diventato *foo
e la negazione e non-equals erano !
e !=
rispettivamente. Questa convenzione fu in seguito conservata in C. Non sono sicuro del motivo per cui B lo cambiò, ma B era piuttosto a corto di esperienza e soggetto a molta sperimentazione sintattica prima che C si sviluppasse fuori da esso (all'incirca nel 1971-1973).
Da allora C si è rivelato incredibilmente popolare ed è una grande influenza su altre lingue. La maggior parte delle lingue più recenti non vede alcun motivo per utilizzare operatori inattesi e prende in prestito !=
da C.
Sembra che <>
sia stato usato principalmente da Pascal, SQL e BASIC poiché indica "minore o maggiore di", cioè "non uguale". Tuttavia, non riesco a trovare riferimenti validi. I report per Pascal 73 e SEQUEL 74 sembrano solo menzionare ≠
. Lo standard Pascal ISO 7185: 1990 utilizza <>
ma, naturalmente, non spiega alcuna storia. Non so cosa sia stato usato nella versione del 1983 dello standard.
I documenti interessanti letti durante la ricerca di questa risposta, ordinati cronologicamente: