2015-10-07 20 views
10

Sto leggendo su Swift enum nella guida Swift Programming Language e il testo stava confrontando le differenze tra Swift enum e C enum. Questo mi ha reso curioso di sapere da dove originariamente provenivano le enumerazioni. Ho fatto ricerca online prima di chiedere e anche chiesto alcune persone e hanno assunto C. (suppongo che sto cercando di confermare se enumerazioni provenivano da C in origine.)Qual è stato il primo linguaggio di programmazione con Enumerazioni?

Domanda

Qual è stato il primo linguaggio di programmazione per includere le enumerazioni?

+1

Pascal aveva tipi enumerati, ma non ha utilizzato la parola chiave 'enum'. Conta? AFAIK, la parola chiave 'enum' è stata usata per la prima volta da C, ma il concetto è più vecchio di un margine. –

+0

Se lo scopo alla base della caratteristica enum di Pascal fosse di servire allo stesso scopo di un enum, direi sì? (Non lo so) –

+2

Era - vedi Wikipedia su [Tipo enumerato] (https://en.wikipedia.org/wiki/Enumerated_type). Penso che sia la più antica delle lingue elencate qui, dove il LISP si riferisce a Common Lisp, che posticipa Pascal anche se il LISP originale pre-risale a Pascal. –

risposta

14

Pascal aveva tipi enumerati, ma non ha utilizzato la parola chiave enum. AFAIK, la parola chiave enum è stata utilizzata per la prima volta da C, ma il concetto è più vecchio di un margine.

Vedi Wikipedia su Enumerated type per un esempio, come:

type 
    cardsuit = (clubs, diamonds, hearts, spades); 
    card = record 
      suit: cardsuit; 
      value: 1 .. 13; 
     end; 
var 
    hand: array [ 1 .. 13 ] of card; 
    trump: cardsuit; 

Credo che Pascal è la più antica delle lingue elencate nella pagina di Wikipedia. Il LISP a cui si fa riferimento è Common Lisp, che posticipa Pascal anche se il LISP originale pre-risale al Pascal.

The Programming Language Pascal dal 1970 elenca questi tipi nella sezione 6.1.1 Tipi scalari, quindi per tutti gli scopi pratici, questi tipi enumerati sono sempre stati una parte di Pascal. Vedere la pagina documents nel sito Web Standard Pascal. Il rapporto revisionato è disponibile anche lì (1972), ed è probabilmente il documento più letto. Puoi anche tenere traccia di Pascal su Wikipedia, ovviamente.

(Potrebbe esserci un altro linguaggio precedente con caratteristiche analoghe, non l'ho identificato, ma non ho cercato ovunque.Algol-60 non era un linguaggio del genere, però, né era Fortran o Cobol. 68 e PL/1 sono possibili concorrenti.)

+7

È sempre così bello vedere un po 'di codice Pascal ... – jmm

2

Algol 68 non ha enumerati. PL/I non ho avuto enumerazioni. Il Lisp storico non aveva alcuna nozione di tipi in fase di compilazione. Algol W e Simula 67 non avevano enumerazioni. Stranamente, COBOL non è solo un possibile concorrente ma il più probabile è lo . Non che abbia tipi definibili dall'utente, ma cerca "88-level". Le macro strutture di Burroughs Algol, SAIL, CORAL 66 e RTL/2 potrebbero essere usate per dare nomi ai numeri, che ti porta quasi fino al punto in cui le enumerazioni di C sono piuttosto infrante.

+0

Algol68 ha "tagged-unions" dove c'è una generazione di tempo compilazione simile di ** typed ** 'enums', ad esempio il seguente "case" sta interrogando il "tag" ... 'CASE IN f (Apple): "Apple", (BANANA): "Banana", (Cherry): "Cherry" OUT "?" # uninitalised # ESAC; '... Questo esempio di codice proviene da [RosettaCode] (https://rosettacode.org/wiki/Enumerations#ALGOL_68) – NevilleDNZ

Problemi correlati