Программирование истории конструкций

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

Например:

Конструкции, представленные от LISP

  • Если еще Блок: "Повсеместная if-then-else структура, теперь считаемая само собой разумеющимся как существенный элемент любого языка программирования, была изобретена McCarthy для использования в Lisp, где это видело свое первое выступление в более общей форме (конусовидная структура). Это было наследовано Алголом, который популяризировал его". - Википедия

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

  • Сборка "мусора"

15
задан 6 revs, 3 users 67% 11 June 2010 в 04:21
поделиться

2 ответа

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

Планкалкюль (1943-45). Согласно Википедии и сообщениям статьи ACM , разработанный Конрадом Цузе, это был первый высокоуровневый язык программирования, не связанный с фон Нейманом. ] «Планкалкюль» Конрада Цузе: предшественник современных языков программирования » от FL Бауэр и Х. Восснер. Изначально язык был разработан для механического компьютера Zuse Z1 , но реализация компилятора группой из Свободного университета Берлина не была разработана до 2000 года. В языке было представлено следующее:

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

Fortran :

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

LISP - сборка мусора, лямбда-выражения и динамическая типизация - ( Маккарти, 1960 ), ( Маккарти, 1978 ), ( Википедия: Сборка мусора ) и ( Википедия: LISP )

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

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

ALGOL 68 - перегрузка оператора ( A.van Wijngaarden et al )

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

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

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

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

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

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

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

Документ ACM, на который я ссылался в отношении Планкалкюля, подтверждает большинство его особенностей. Конрад Цузе был дальновидным гением.

ССЫЛКИ

F.L.Бауэр и Х. Вёсснер (1972). «Планкалкюль» Конрада Цузе: A Предшественник современных языков программирования . Связь АКМ, 15 (7): 678–685.

Рауль Рохас и др. (2000). «Планкалкюль: первый язык программирования высокого уровня и его реализация» . Институт информатики, Свободный университет Берлина, Технический отчет B-3/2000.

Дж. В. Бакус (1956). Система автоматического кодирования Fortran для IBM 704 EDPM . Международная корпорация бизнес-машин.

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

Джон Маккарти (1960). Рекурсивные функции символьных выражений и их вычисление машиной, Часть I , Сообщения ACM, v.3 n.4, p.184-195, апрель.

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

Дж. У. Бакус (1959). «Синтаксис и семантика предлагаемого международного алгебраического языка Цюрихской конференции ACM-GAMM» . Материалы Международной конференции по обработке информации. ЮНЕСКО. С. 125–132.

Дж. У. Backus, F. L. Bauer, J. Green, C. Katz, J. McCarthy, P. Naur, A .J. Перлис, Х. Рутисхаузер, К. Самельсон, Б. Вокуа, Дж. Х. Вегштейн, А. ван Вейнгаарден, М. Вудгер; под редакцией Питера Наура (1963). Пересмотренный отчет по алгоритмическому языку ALGOL 60 . Сообщения ACM, том 6, номер 1 (январь), страницы 1-17.

А. ван Вейнгаарден, А. (редактор), Майлу, Б. Дж., Пек, Дж. Э. Л., Костер, К. Х. А. (1969). «Отчет по алгоритмическому языку АЛГОЛ 68» , раздел 10.2.2. Нумер. Математика. 14, 79-218.

Оле-Йохан Даль, Бьёрм Мирхауг и Кристен Найгаард (1970). SIMULA, Общий базовый язык . (2-е издание) Осло, Норвежский вычислительный центр.

Лука Карделли и Питер Вегнер (1985). О типах, абстракции данных и полиморфизме . Вычислительные исследования, Том 17, н. 4, стр. 471-522, декабрь.

Патрик А.В. Холл, Питер Хичкок, Стивен Тодд (1975). «Алгебра соотношений для машинных вычислений» . Отчет о конференции второго симпозиума ACM по принципам языков программирования, Пало-Альто, Калифорния: ACM, стр. 225–232, январь.

Джеральд Джей Сассман и Гай Л. Стил младший (1975). Схема: интерпретатор для расширенного лямбда-исчисления . Записка AI 349, декабрь.

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

21
ответ дан 1 December 2019 в 03:04
поделиться

Заявление SWITCH - 1965 - АЛГОЛ W

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

АЛГОЛ, отец всех процедурных языков, не имел описания падежа, поскольку концепция падежа еще не была изобретена в языках высокого уровня. Затем в 1965 году был выпущен редко используемый язык ALGOL W, который содержал оператор switch ... case, изобретенный К.А.Р. Хоаром, который допускал неупорядоченные неперекрывающиеся значения и диапазоны.

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

3
ответ дан 1 December 2019 в 03:04
поделиться