Perché i linguaggi di programmazione iniziano a usare = per l'assegnazione?

11

Nella maggior parte dei primi libri sugli algoritmi, <- si riferiva all'assegnazione e = riferita al confronto. Ma al giorno d'oggi le uniche lingue che non usano = per l'assegnazione sono Pascal ( := ) e linguaggi giocattolo come FREDDO . Cosa ha spinto i moderni linguaggi di programmazione a modificare = in assegnazione di significato invece del suo significato matematico di uguaglianza?

    
posta Siqi Lin 17.03.2015 - 01:16
fonte

2 risposte

12

Secondo Wikipedia , l'uso di uguali per l'assegnazione risale al linguaggio Superplan di Heinz Rutishauser, progettato da 1949-1951, ed è stato particolarmente popolare da Fortran:

A notorious example for a bad idea was the choice of the equal sign to denote assignment. It goes back to Fortran in 1957, and has blindly been copied by armies of language designers. Why is it a bad idea? Because it overthrows a century old tradition to let “=” denote a comparison for equality, a predicate which is either true or false. But Fortran made it to mean assignment, the enforcing of equality. In this case, the operands are on unequal footing: The left operand (a variable) is to be made equal to the right operand (an expression). x = y does not mean the same thing as y = x.

—Niklaus Wirth, Good Ideas, Through the Looking Glass

Rutishauser ha anche usato il segno di uguale per Plankalkul , il predecessore di Superplan, anche se un compilatore non è mai stato concepito per questo. Perché ha scelto il segno di uguale? Immagino che dovresti chiederglielo.

    
risposta data 17.03.2015 - 02:17
fonte
5

Ma quando facevo matematica a scuola   "lascia x = 123"

era un fraseggio comune. Le prime versioni di Basic insistevano sulla parola chiave "let" prima dell'uguale. Quindi il suo punto di ebollizione è fatto per "let" è capito.

Un driver chiave di solito non è considerato ma molto importante al momento in cui è stato effettivamente digitato.

C'erano due dispositivi di input fattibili,

  • Il "teletype" per cui è possibile utilizzare una macchina teletype standard per perforare piccoli fori in un nastro di carta che potrebbe quindi essere letto dal computer. Questo non era così male in quanto supportava l'aplphabet standard in maiuscolo e minuscolo più la maggior parte dei caratteri nella riga superiore della tastiera.
  • Carte perforate - c'erano tantissime macchine per schede perforate che si aggiravano mentre l'uso di smistatori, tabulatori e stampanti era comune nelle grandi aziende. Questi hanno supportato un set di caratteri limitato limitato. Solo lettere maiuscole e un numero limitato di caratteri "speciali".

I teletipi tendevano ad essere utilizzati nei negozi accademici e militari, punzoni di carte in più negozi commerciali. Quindi linguaggi accademici come Pascal supportavano gli identificatori minuscoli e le notazioni "sensibili" come ":=" per l'assegnazione. Le lingue rivolte a un pubblico più commerciale supponevano che le schede perforate sarebbero state la principale forma di input, quindi il maiuscolo solo lingue come FORTRAN e COBOL con il supporto limitato per ":; > <" caratteri che non erano disponibili su un keypunch standard.

Tra l'altro non vi era alcuna ambiguità riguardo al fatto che "=" fosse usato per l'assegnazione in FORTRAN all'inizio poiché il confronto veniva eseguito usando ".LT.", ".LE.", ".EQ.", ".GE." e ".GT". sintassi.

    
risposta data 17.03.2015 - 03:17
fonte

Leggi altre domande sui tag