Программирование Создает Историю

давайте исследуем и проследим происхождение языковых конструкций.

например:

конструкции, введенные из LISP

  • Блок If-Else

  • Тип Функции: функции граждан первого класса.

  • Вывоз Мусора

2 ответов


вот полная история основных конструкций языка программирования, которые я смог идентифицировать до сих пор. Я, несомненно, что-то пропустил, но я уверен, что сообщество SO поможет выявить эти упущения.

Планкалкюль (1943-45) - разработанный Конрадом Зузе, это был первый язык программирования высокого уровня, не фон Неймана, согласно Википедия и сообщения ACM paper "Планкалкюль" Конрада Зузе: A Предтеча современных языков программирования" Ф. Л. Бауэр и Х. Wossner. Язык был первоначально разработан для механического Zuse Z1 компьютер, но a реализация компилятора командой в Свободном университете Берлина не был разработан до 2000 года. Язык ввел следующее:

  • "операторы присваивания, подпрограммы, условные операторы, итерация, арифметика с плавающей запятой, массивы, иерархическая запись структуры, утверждения и обработка исключений" (Википедия: Plankalkül).

Фортран:

IPL (язык обработки информации) - рекурсия (позже включена в LISP) -- (Ньюэлл и Саймон)

Лисп - вывоз мусора, лямбда-выражения, и динамическая типизация -- (Маккарти, 1960), (Маккарти, 1978), (Википедия: вывоз мусора) и (Википедия: Шепелявить!--6-->)

Алгол 58 - введены блоки кода (но только для потока управления, а не переменной области) (Backus, 1959)

Алгол 60 - добавлена лексическая область в блоки кода, вложенные определения функций с лексической областью (Backus et al 1963)

Алгол 68 - перегрузка операторов (А. ван Wijngaarden и соавт)

Симула - объекты, классы, подклассы, виртуальные методы, coroutines (Dahl et al)

ML - параметрический полиморфизм (Cardelli и Вегнер)

ISBL (базовый язык информационных систем) - реляционная алгебра (была введена здесь раньше, чем в SQL) -- ( Hall et al), (Википедия: реляционная алгебра)

схемы - первое полностью поддерживаемое закрытие (Сассман и Стил, 1975), (Сассман и Стил, 1998)

Как ни странно, для четырех из наиболее часто используемых современных языков программирования, C, C++, Java и c#, я не смог идентифицировать какие-либо проверяемые, принципиально новые конструкции языка программирования. Шаблоны в C++ являются adhoc-версией полиморфизма, введенного в ML. Ближе всего к новой языковой функции в Java было включение поддержки потоков. В основном, все четыре языка представляют собой комбинацию желательных функций и понятия, изобретенные в других местах.

другие Примечания: хотя Prolog был одним из первых языков логического программирования, я не мог определить какие-либо существенные функции, не введенные ранее в других языках.

хотя есть некоторые ссылки в Википедии, большинство функций, перечисленных выше, были отнесены к твердым источникам, на которые ссылаются ниже. Где я углубился, чтобы найти авторитетные ссылки, детали на основе Википедии задержались что ж.

документ ACM, на который я ссылался для Plankalkül, подтверждает большинство его функций. Конрад Зузе был дальновидным гением.

ссылки

Ф. Л. Бауэр и Х. Wössner (1972). "Планкалкюль" Конрада Зузе: A Предшественник современных языков программирования. Система связи ACM, 15 (7): 678-685.

Рауль Рохас и соавт. (2000). "Plankalkül: первый язык программирования высокого уровня и его Реализация". Institut für Informatik, Freie Universität Berlin, Technical Report B-3/2000.

Дж. Бэкус (1956). автоматическая система кодирования Fortran для IBM 704 EDPM. International Business Machines Corporation.

Аллен Ньюэлл и Герберт А. Саймон (1956). машина теории логики: сложная система обработки информации. Ire сделок по теории информации IT-2, нет. 3: 61-79.

Джон Маккарти (1960). рекурсивные функции символьных выражений и их вычисление машиной, Часть I, коммуникаций АКМ, В. 3 н.4, стр. 184-195, апрель.

Джон Маккарти (1978). история LISP. В Ричард Л. Wexelblat, редактор, история языков программирования: материалы конференции SIGPLAN АСМ, стр. 173-197. Академическая Пресса, 1-3 Июня.

J. W. Backus (1959). "синтаксис и семантика предлагаемого Международного Алгебраический язык Цюрихской конференции ACM-GAMM". Материалы Международной конференции по обработке информации. ЮНЕСКО. С. 125-132.

У. Дж. Бэкус, Ф. Л. Бауэр, Д. Грин, С. Кэтц, Д. Маккарти, П. Наур, А .Джей Перлис, Х. Rutishauser, К. Самельсон, Б. Ваукуа, И. Н. Wegstein, А. ван Wijngaarden, М. Вуджер; под ред. Питер Наур (1963). пересмотренный Отчет по алгоритмическому языку ALGOL 60. Сообщения АСМ, том 6, Номер 1 (январь), стр. 1-17.

А. ван Wijngaarden, А. (редактор), Мэллу, Ж. Б., Пэк, Ж. Е. Л. костер, Х. А. (1969). "Отчет по алгоритмическому языку Алгол 68" в разделе 10.2.2. Нумер. Математика. 14, 79--218.

Ole-Johan Dahl, Bjørm Myhrhaug, and Kristen Nygaard (1970). SIMULA, общий базовый язык. (2-й. Издание) Осло, Норвежский Вычислительный Центр.

от Luca Cardelli и Питер Вегнер (1985). Типы Данных Абстракция и полиморфизм!--6-->. Computing Surveys, Vol 17 n. 4, pp 471-522, December.

Patrick A. V. Hall, Peter Hitchcock, Stephen Todd (1975). "алгебра отношений для машинного вычисления". Отчет о конференции второго симпозиума ACM по принципам языков программирования, Пало-Альто, Калифорния: ACM, стр. 225-232, январь.

Джеральд Джей Сассман и Гай л. Стил, младший (1975). Scheme: интерпретатор для расширенной лямбды Исчисление!--6-->. AI Memo 349, декабрь.

Джеральд Джей Сассман и Гай л. Стил, младший (1998). схема": Интерпретатор расширенного лямбда-исчисления". Высшие порядковые и символические вычисления 11 (4): 399-404, декабрь, Kluwer Academic Publishers, Boston.


оператор переключения-1965 -АЛГОЛ W

согласно:http://ojs.pythonpapers.org/index.php/tpp/article/viewFile/49/45

Алгол, отец всех процедурных языков, не имел изложения дела, поскольку концепция дела еще не была изобретена на языках высокого уровня. Затем в 1965 году был выпущен редко используемый язык ALGOL W, который содержал переключатель...заявление по делу, изобретенное C. A. R. Hoare, которое разрешено для неупорядоченных неперекрывающихся значений и диапазонов.

C и Pascal оба произошли от этого родительского языка, и оба имели форму case : c знакомый случай переключателя (переменной)... и Паскаль, используя переменную case, начинает value1: .... Синтаксис C++, PHP, C# и Java является производным от версии C.