Вот исчерпывающая история основных конструкций языка программирования, которые я смог идентифицировать до сих пор. Я, несомненно, что-то упустил, но я уверен, что SO-сообщество поможет выявить эти упущения.
Plankalkül (1943-45) - Разработанный Конрадом Цузе, это был первый высокоуровневый язык программирования не фон Неймана, согласно Wikipedia и сообщениям ACM бумага "Планкалкюль" Конрада Цузе: предшественник современных языков программирования " от FL Бауэр и Х. Восснер. Язык изначально разрабатывался для механического компьютера Zuse Z1 , но реализация компилятора командой из Свободного университета Берлина не была разработана до 2000 года. Язык ввел следующее:
- «Операторы присваивания, подпрограммы, условные операторы, итерация, арифметика с плавающей запятой, массивы, иерархические структуры записей, утверждения и обработка исключений» ( Wikipedia: Plankalkül ).
Fortran
IPL (язык обработки информации) - рекурсия (позже включена в LISP) - (Ньюэлл и Саймон)
LISP - сборка мусора, лямбда-выражения и динамическая типизация - (* McCarthy, 1960 ), ( McCarthy, 1978 ), () Википедия: Сборка мусора ) и ( Википедия: LISP )
ALGOL 58 - введенные кодовые блоки (но только для потока управления, а не переменной области действия) ( Backus, 1959 )
ALGOL 60 - добавлена лексическая область видимости для блоков кода, определения вложенных функций с лексической областью действия ( Backus et al. 1963 )
ALGOL 68 - перегрузка оператора ( A. Van Wijngaarden et al )
Simula - объекты, классы, подклассы, виртуальные методы, сопрограммы ( Dahl et al )
ML - параметрический полиморфизм ( Карделли и Вегнер )
ISBL (базовый язык информационных систем) - реляционная алгебра (была введена здесь раньше, чем в SQL) - ( Hall et al ), ( Wikipedia: Реляционная алгебра )
Схема - первые полностью поддерживаемые затворы ( Sussman and Steele, 1975 ), ( Sussman and Steele, 1998 )
Как ни странно, для четырех из наиболее часто используемых современных языков программирования, C, C ++, Java и C #, я не смог идентифицировать какие-либо поддающиеся проверке, принципиально новые конструкции языка программирования. Шаблоны в C ++ представляют собой временную версию полиморфизма, введенную в ML. Наиболее близкой вещью к новой языковой функции в Java было включение поддержки потоков. В основном все четыре языка представляют собой комбинацию желательных функций и концепций, изобретенных в других местах.
Другие примечания: хотя Prolog был одним из первых языков логического программирования, я не смог выявить каких-либо существенных особенностей, ранее не представленных в других языках.
Хотя есть некоторые ссылки на Википедию, большинство функций, перечисленных выше, были приписаны надежным источникам, ссылки на которые приведены ниже. Там, где я углубился в поисках авторитетных ссылок, подробности из Википедии хорошо сохранились.
Документ ACM, на который я ссылался для Plankalkül, подтверждает большинство его возможностей. Конрад Цузе был дальновидным гением.
СПИСОК ЛИТЕРАТУРЫ
F.L. Бауэр и Х. Весснер (1972). «Планкалкюль» Конрада Цузе: A
предвестниксовременных языков программирования . связи
ACM, 15 (7): 678–685.
Рауль Рохас и соавт. (2000). "Plankalkül: первый язык программирования высокого уровня и его реализация" . Institut für Informatik, Freie Universität Berlin, Технический отчет B-3/2000.
J. В. Бэкус (1956). Система автоматического кодирования Fortran для IBM 704 EDPM . Международная корпорация бизнес-машин.
Аллен Ньюэлл и Герберт А. Саймон (1956). Машина теории логики: сложная система обработки информации . IRE Труды по теории информации IT-2, № 1, с. 3: 61-79.
Джон Маккарти (1960). Рекурсивные функции символьных выражений и их вычисление на машине, часть I , Сообщения ACM, т.3 № 4, с.184-195, апрель.
Джон Маккарти (1978). История ЛИСП . Ричард Л. Вексельблат, редактор журнала «История языков программирования: материалы конференции ACM SIGPLAN», стр. 173-197. Академическая пресса, 1-3 июня.
J.W. Бэкус (1959). «Синтаксис и семантика предлагаемого международного алгебраического языка Цюрихской конференции ACM-GAMM» . Материалы международной конференции по обработке информации. ЮНЕСКО. С. 125–132.
J.W. Бэкус, Ф. Л. Бауэр, Дж. Грин, К. Кац, Дж. Маккарти, П. Наур, А.Дж. Perlis, H. Rutishauser, K. Samelson, B. Vauquois, J. H. Wegstein, A. van Wijngaarden, M. Woodger; под редакцией Питера Наура (1963). Пересмотренный отчет по алгоритмическому языку АЛГОЛ 60 . Сообщения ACM, том 6, номер 1 (январь), страницы 1-17.
A. van Wijngaarden, A. (редактор), Mailloux, B.J., Peck, J.E.L., Koster, C.H.A. (1969). «Отчет по алгоритмическому языку АЛГОЛ 68» , раздел 10.2.2. Numer. Математика 14, 79-218.
Оле-Йохан Даль, Бьёрм Мирхауг и Кристен Нюгаард (1970). SIMULA, общий базовый язык . (2-е издание) Осло, Норвежский вычислительный центр.
Лука Карделли и Питер Вегнер (1985). О типах, абстракции данных и полиморфизме . Компьютерные обзоры, том 17 н. 4, стр. 471-522, декабрь.
Патрик А.В. Холл, Питер Хичкок, Стивен Тодд (1975). "Алгебра отношений для машинного вычисления" . Протокол конференции второго симпозиума ACM по принципам языков программирования, Пало-Альто, Калифорния: ACM, с. 225–232, январь.
Джеральд Джей Суссман и Гай Л. Стил, младший (1975). Схема: интерпретатор расширенного лямбда-исчисления . AI Memo 349, декабрь.
Джеральд Джей Суссман и Гай Л. Стил, младший (1998). "Схема:
Интерпретатор расширенного лямбда-исчисления ". Высший порядок и символические вычисления 11 (4): 399–404, декабрь, Kluwer Academic Publishers, Бостон.