2015-10-07 36 views
10

Przeczytałem o Swift enum w przewodniku Swift Programming Language, a tekst porównuje różnice między wartościami enum firmy Swift i C enum. Ciekawe, skąd wzięły się wyliczenia. I nie szukaj w Internecie przed pytaniem i nawet zapytałem kilku ludzi i oni Zakłada C (przypuszczam, że staram się potwierdzić, czy wyliczenia pierwotnie pochodziła z C).Jaki był pierwszy język programowania z wyliczeniami?

Pytanie

Co było pierwszy język programowania, aby uwzględnić wyliczenia?

+1

Pascal miał wyliczone typy, ale nie użył słowa kluczowego 'enum'. To się liczy? AFAIK, słowo kluczowe "enum" zostało po raz pierwszy użyte przez C, ale pojęcie jest starsze o dość duży margines. –

+0

Jeśli zamierzony cel paskalowy byłby taki sam jak wyliczenie, powiedziałbym: tak? (Nie wiem) –

+2

To było - patrz Wikipedia na [Typ wyliczeniowy] (https://en.wikipedia.org/wiki/Enumerated_type). Myślę, że jest to najstarszy z wymienionych tam języków, w którym LISP, o którym mowa, to Common Lisp, który po datuje Pascala, mimo że oryginalny LISP zręcznie przed datą Pascala. –

Odpowiedz

14

Pascal miał wyliczone typy, ale nie użył słowa kluczowego enum. AFAIK, słowo kluczowe enum zostało po raz pierwszy użyte przez C, ale pojęcie jest starsze o dość duży margines.

Zobacz Wikipedię na Enumerated type na przykład takich jak:

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

myślę Pascal jest najstarszym z języków wymienionych na stronie Wikipedia. LISP, o którym mowa, to Common Lisp, który po datuje Pascala, mimo że oryginalny LISP zręcznie przed datą Pascala.

z 1970 roku wymienia te typy w sekcji 6.1.1 Typy skalarne, więc ze względów praktycznych te wyliczone typy zawsze były częścią Pascala. Zobacz stronę internetową documents na stronie internetowej . Zmieniony raport jest tam również dostępny (1972) i jest prawdopodobnie bardziej szerzej czytanym dokumentem. Oczywiście możesz także śledzić Pascal w Wikipedii.

(Może istnieć inny wcześniejszy język z analogicznymi cechami, nie zidentyfikowałem go, ale nie patrzyłem wszędzie, Algol-60 nie był takim językiem, ani nie był Fortran ani Cobol. 68 i PL/1 są możliwymi kandydatami.)

+7

Zawsze miło jest zobaczyć kod Pascala ... – jmm

2

Algol 68 nie miał wyrażeń. PL/Nie miałem wyrażeń. Historyczne Lisp w ogóle nie miało pojęcia typów kompilacji. Algol W i Simula 67 nie mieli kontuzji. Co dziwne, COBOL jest nie tylko możliwym kandydatem, ale najbardziej prawdopodobnym spośród nich: . Nie oznacza to, że miał typy definiowane przez użytkownika, ale sprawdzają "88-poziomowy" numer . Makroelementy Burroughs Algol, SAIL, CORAL 66 i RTL/2 mogą być używane do nadawania nazw liczbom, , co prowadzi do prawie tak daleko, jak to się dzieje w przypadku C-a.

+0

Algol68 ma "oznaczone związki", gdzie istnieje podobne generowanie czasu kompilacji ** typowane ** 'wyliczenia ', na przykład następujące "przypadek" oświadczenie odpytywania "tag" ... 'sprawa f IN (jabłko): "Apple" (BANANA): "Banan", (Cherry): "Cherry" OUT "?" # uninitalised # ESAC; '... Ten przykład kodu pochodzi z [RosettaCode] (https://rosettacode.org/wiki/Enumerations#ALGOL_68) – NevilleDNZ