Какой был первый язык программирования с Enumerations?

Я читаю о Swift enum в руководстве Swift Programming Language и в тексте сравниваются различия между Swift enum и C enum. Это заставило меня с любопытством узнать, откуда взялись изначально. Я делал поиск в Интернете, прежде чем спрашивать и даже спросил несколько человек, и они предположили, что C. (я полагаю, я пытаюсь подтвердить, были ли перечислены изначально из C.)

Вопрос

В какой первый язык программирования включались перечисления?

Ответ 1

Паскаль имел перечисленные типы, но не использовал ключевое слово enum. AFAIK, ключевое слово enum впервые было использовано C, но концепция старше с большим отрывом.

См. Википедию на Перечислимый тип для примера, например:

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

Я думаю, что Паскаль - самый старый из языков, перечисленных на странице Википедии. LISP называется Common Lisp, который публикует Pascal, даже если оригинальный LISP легко предваряет Pascal.

Язык программирования Pascal из 1970 перечисляет эти типы в разделе 6.1.1 "Скалярные типы", поэтому для всех практических целей эти перечисленные типы всегда был частью Паскаля. См. Страницу documents на веб-сайте Standard Pascal, Пересмотренный отчет также имеется там (1972) и, вероятно, является более широко читаемым документом. Вы также можете отследить Pascal в Википедии, конечно.

(Может быть, еще один более ранний язык с аналогичными особенностями, я его не идентифицировал, но я не выглядел повсюду. Алгол-60 не был таким языком, как и Фортран или Кобол. Алгол-68 и PL/1 являются возможными соперниками.)

Ответ 2

Алгол 68 не имел перечислений. PL/У меня не было перечислений. Исторический Lisp вообще не имел понятия типов времени компиляции. Algol W и Simula 67 не имели перечислений. Довольно странно, COBOL - это не только возможный соперник, но, скорее всего, один. Не то, чтобы у него были определяемые пользователем типы, но искать "88-уровень". Макрообъекты Burroughs Algol, SAIL, CORAL 66 и RTL/2 могут использоваться для присвоения имен номерам, который доставит вас почти до C, а сломанные переходы идут.