История языков программирования - History of programming languages

История языков программирования пролетов из документации ранних механических компьютеров для современных инструментов для разработки программного обеспечения. Ранние языки программирования были узкоспециализированными, полагались на математическую нотацию и столь же непонятный синтаксис. На протяжении 20-го века исследования теории компиляторов привели к созданию языков программирования высокого уровня, которые используют более доступный синтаксис для передачи инструкций.

Первым языком программирования высокого уровня был Plankalkül , созданный Конрадом Цузе между 1942 и 1945 годами. Первый язык высокого уровня, имеющий связанный компилятор, был создан Коррадо Бемом в 1951 году для его докторской диссертации. Первым коммерчески доступным языком был FORTRAN (FORmula TRANslation), разработанный в 1956 году (первое руководство появилось в 1956 году, но впервые было разработано в 1954 году) группой под руководством Джона Бэкуса из IBM .

История ранних веков

В 1842–1849 годах Ада Лавлейс перевела мемуары итальянского математика Луиджи Менабреа о новейшей машине, предложенной Чарльзом Бэббиджа : Аналитической машине ; она дополнила мемуары примечаниями, в которых подробно описан метод вычисления чисел Бернулли с помощью двигателя, признанного большинством историков первой в мире опубликованной компьютерной программой.

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

Жаккардовые и Чарльз Бэббиджа Difference Engine оба были простые языки для описания действий , которые эти машины должны выполнять , следовательно , они были создателями первого языка программирования.

Первые языки программирования

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

Первым предложением языка программирования высокого уровня был Plankalkül , разработанный Конрадом Цузе для своего компьютера Z1 между 1963 и 1975 годами, но не реализованный в то время.

Первые функционирующие языки программирования, предназначенные для передачи инструкций компьютеру, были написаны в начале 1950-х годов. Джон Мочли «s Сокращенный код , предложенный в 1949 году, был одним из первых языков высокого уровня , когда - либо для электронной вычислительной машины . В отличие от машинного кода , операторы Short Code представляют математические выражения в понятной форме. Однако программу приходилось транслировать в машинный код каждый раз при запуске, что делало процесс намного медленнее, чем выполнение эквивалентного машинного кода.

В начале 1950-х Алик Гленни разработал Autocode , возможно, первый скомпилированный язык программирования в Манчестерском университете . В 1954 году Р.А. Брукером была разработана вторая версия языка, известная как «Автокод Mark 1» для Mark 1 . Брукер также разработал автокод для Ferranti Mercury в 1950-х годах совместно с Манчестерским университетом. Версия для EDSAC 2 был разработан Дуглас Хартри из Кембриджского университета математической лаборатории в 1961 г. Известный как EDSAC 2 AutoCode, это была прямая разработка от Mercury AutoCode адаптирована для местных условий и было отмечено , для ее оптимизации объектного кода и исходного языка- диагностика, продвинутая по тем временам. Atlas Autocode - это современный, но отдельный поток разработки, который был разработан для машины Atlas 1 Манчестерского университета .

В 1954 году в IBM был изобретен FORTRAN командой под руководством Джона Бэкуса ; это был первый широко используемый язык программирования общего назначения высокого уровня, имевший функциональную реализацию, а не просто проект на бумаге. Когда впервые был представлен FORTRAN, к нему относились скептически из-за ошибок, задержек в разработке и сравнительной эффективности программ, написанных вручную на ассемблере. Однако на рынке оборудования, который быстро развивался; со временем язык стал известен своей эффективностью. Это по-прежнему популярный язык для высокопроизводительных вычислений и используется для программ, которые оценивают и оценивают самые быстрые суперкомпьютеры в мире .

Еще один ранний язык программирования, разработанный Грейс Хоппер в США, называется FLOW-MATIC . Он был разработан для UNIVAC I в Remington Rand в период с 1955 по 1959 год. Хоппер обнаружила, что клиентам, занимающимся обработкой бизнес-данных, не нравится математическая нотация, и в начале 1955 года она и ее команда написали спецификацию для английского языка программирования и реализовали ее. прототип. Компилятор FLOW-MATIC стал общедоступным в начале 1958 года и был практически завершен в 1959 году. Flow-Matic оказал большое влияние на разработку COBOL , поскольку в то время фактически использовались только он и его прямой потомок AIMACO .

Другие языки, которые все еще используются сегодня, включают LISP (1958), изобретенный Джоном Маккарти, и COBOL (1959), созданный Комитетом ближнего действия. Другой важной вехой в конце 1950-х годов стала публикация комитетом американских и европейских компьютерных ученых «нового языка алгоритмов»; Алгол 60 Report (далее " ALGO rithmic L anguage"). В этом отчете собраны многие идеи, которые циркулировали в то время, и представлены три ключевых языковых нововведения:

  • вложенная блочная структура: кодовые последовательности и связанные объявления могут быть сгруппированы в блоки без необходимости превращения в отдельные процедуры с явно указанными именами;
  • лексическая область видимости : блок может иметь свои собственные частные переменные, процедуры и функции, невидимые для кода вне этого блока, то есть скрывающие информацию .

Еще одно нововведение, связанное с этим, заключалось в способе описания языка:

  • математически точная запись, форма Бэкуса – Наура (BNF), использовалась для описания синтаксиса языка. Почти все последующие языки программирования использовали вариант BNF для описания контекстно-свободной части своего синтаксиса.

Алгол 60 оказал особое влияние на разработку более поздних языков, некоторые из которых вскоре стали более популярными. Эти крупные системы Burroughs были разработаны , чтобы быть запрограммированы в расширенном подмножество Алголя.

Ключевые идеи Алгола были продолжены, и появился Алгол 68 :

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

Множество малоиспользуемых языковых функций Algol 68 (например, параллельные и параллельные блоки) и его сложная система синтаксических сокращений и автоматического приведения типов сделали его непопулярным среди разработчиков и снискали ему репутацию сложного языка . Никлаус Вирт фактически покинул проектный комитет, чтобы создать более простой язык Паскаль .

Фортран

Некоторые известные языки, которые были разработаны в этот период, включают:

Установление фундаментальных парадигм

Схема

Период с конца 1960-х до конца 1970-х годов принес большой расцвет языков программирования. Большинство основных языковых парадигм, используемых в настоящее время, были изобретены именно в этот период:

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

1960-е и 1970-е годы также стали периодом серьезных дискуссий по поводу достоинств « структурированного программирования », что, по сути, означало программирование без использования « goto ». Значительная часть программистов считала, что даже в языках, которые предоставляют «goto», использовать его - плохой стиль программирования, за исключением редких случаев. Эти дебаты были тесно связаны с языковым дизайном: некоторые языки вообще не включали «goto», что заставляло программиста или преподавателя использовать структурированное программирование.

Чтобы обеспечить еще более быстрое время компиляции, некоторые языки были структурированы для « однопроходных компиляторов », которые ожидают, что первыми будут определены подчиненные подпрограммы, как в случае с Паскалем , где основная процедура или функция драйвера является последним разделом листинга программы.

Некоторые известные языки, которые были разработаны в этот период, включают:

  • 1967 - BCPL (предшественник B)
  • 1968 - Логотип
  • 1969 - Б (предшественник С)
  • 1970 - Паскаль
  • 1970 - Четверть
  • 1972 - С                                                   

1980-е: консолидация, модули, производительность

MATLAB
Erlang
Tcl

1980-е были годами относительной консолидации императивных языков . Вместо того, чтобы изобретать новые парадигмы, все эти движения развивали идеи, изобретенные в предыдущем десятилетии. C ++ сочетает объектно-ориентированное и системное программирование. Правительство Соединенных Штатов стандартизировало Ада , язык системного программирования, предназначенный для использования оборонными подрядчиками. В Японии и других странах были потрачены огромные суммы на исследование так называемых языков программирования пятого поколения, которые включали в себя конструкции логического программирования. Сообщество функциональных языков перешло к стандартизации ML и Lisp. В этом десятилетии начались исследования Miranda , функционального языка с отложенным вычислением .

Одной из важных новых тенденций в языковом дизайне было повышенное внимание к программированию для крупномасштабных систем за счет использования модулей или крупномасштабных организационных единиц кода. Modula , Ada и ML разработали известные модульные системы в 1980-х годах. Модульные системы часто объединялись с универсальными конструкциями программирования, которые, по сути, являлись параметризованными модулями (см. Также полиморфизм в объектно-ориентированном программировании ).

Хотя основные новые парадигмы для императивных языков программирования не появились, многие исследователи расширили идеи предшествующих языков и адаптировали их к новым контекстам. Например, языки систем Argus и Emerald адаптировали объектно-ориентированное программирование к распределенным системам .

1980-е годы также принесли успехи в реализации языков программирования. Движение RISC в компьютерной архитектуре постулировало, что оборудование должно быть разработано для компиляторов, а не для программистов на сборке. Благодаря повышению скорости процессора, что сделало возможным использование все более агрессивных методов компиляции, движение RISC вызвало больший интерес к технологии компиляции для языков высокого уровня.

Языковые технологии продолжались в этом направлении вплоть до 1990-х годов.

Некоторые известные языки, которые были разработаны в этот период, включают:

  • 1986 - LabVIEW (язык визуального программирования)
  • 1986 - Эрланг
  • 1987 - Perl
  • 1988 - Tcl
  • 1988 - Wolfram Language (как часть Mathematica , отдельное название получил только в июне 2013 года)
  • 1989 - ФЛ (Backus)   

1990-е годы: эпоха Интернета

Haskell
Lua
PHP
Ребол

Быстрый рост Интернета в середине 1990-х годов стал следующим крупным историческим событием в языках программирования. Открыв радикально новую платформу для компьютерных систем, Интернет создал возможность для принятия новых языков. В частности, популярность языка программирования JavaScript возросла благодаря его ранней интеграции с веб-браузером Netscape Navigator. Различные другие языки сценариев получили широкое распространение при разработке специализированных приложений для веб-серверов, таких как PHP. В 1990-е годы в императивных языках не было принципиальных новшеств , а было много рекомбинации и созревания старых идей. В эту эпоху началось распространение функциональных языков . Большой движущей философией была продуктивность программиста. Появилось много языков «быстрой разработки приложений» (RAD), которые обычно поставлялись с IDE , сборкой мусора и были потомками более старых языков. Все такие языки были объектно-ориентированными . К ним относятся Object Pascal , Visual Basic и Java . Особое внимание уделялось Java.

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

Некоторые известные языки, которые были разработаны в этот период, включают:

Текущие тренды

Эволюция языков программирования продолжается как в промышленности, так и в исследованиях. Некоторые из последних тенденций включают:

D Язык программирования
Groovy
PowerShell
Ржавчина
Царапать

Некоторые известные языки, разработанные в этот период, включают:

Другие новые языки программирования включают Red , Crystal , Elm , Hack , Haxe , Zig , Reason и Ballerina .

Выдающиеся люди

Андерс Хейлсберг
Юкихиро Мацумото
Грейс М. Хоппер
Бьярне Страуструп
Никлаус Вирт

Некоторые ключевые люди, которые помогли разрабатывать языки программирования:

Смотрите также

использованная литература

  1. ^ Хоппер (1978) стр. 16.
  2. ^ Кнут, Дональд Э .; Пардо, Луис Трабб. «Раннее развитие языков программирования». Энциклопедия компьютерных наук и технологий . Марсель Деккер. 7 : 419–493.
  3. ^ Кандидатская диссертация Коррадо Бема
  4. ^ Дж. Фуэги и Дж. Фрэнсис (октябрь – декабрь 2003 г.), «Лавлейс и Бэббидж и создание« заметок » 1843 г. », Annals of the History of Computing , 25 (4): 16–26, doi : 10.1109 / MAHC.2003.1253887
  5. ^ В 1998 и 2000 годах были созданы компиляторы для языка как историческое упражнение. Рохас, Рауль и др. (2000). «Планкалкюль: первый язык программирования высокого уровня и его реализация». Institut frame Informatik, Свободный университет Берлина, Технический отчет B-3/2000. (полный текст)
  6. ^ Себеста, WS (2006). Понятия языков программирования . п. 44. ISBN 978-0-321-33025-3.
  7. ^ "Создатель Fortran Джон Бэкус умирает - Технологии и гаджеты - Новости NBC" . NBC News. 2007-03-20 . Проверено 25 апреля 2010 .
  8. ^ "CSC-302 99S: Класс 02: Краткая история языков программирования" . Math.grin.edu. Архивировано из оригинала на 2010-07-15 . Проверено 25 апреля 2010 .
  9. Падуя, Дэвид (февраль 2000 г.). "Компилятор FORTRAN I" (PDF) . Вычислительная техника в науке и технике . 2 (1): 70–75. DOI : 10.1109 / 5992.814661 . Проверено 7 ноября 2019 .
  10. Юджин Ло (18 июня 2010 г.). «Идеальный язык программирования для высокопроизводительных вычислений» . Очередь . Ассоциация вычислительных машин. 8 (6).
  11. ^ «HPL - портативная реализация высокопроизводительного эталонного теста Linpack для компьютеров с распределенной памятью» . Проверено 21 февраля 2015 .
  12. ^ Хоппер (1978) стр. 16.
  13. ^ Саммет (1969) стр. 316
  14. ^ Саммет (1978) стр. 204.
  15. ^ Гордон, Майкл JC (1996). «От LCF к HOL: краткая история» (PDF) . п. 3 . Проверено 4 мая 2015 . Эдинбургский LCF, включая интерпретатор ML, был реализован на Lisp.
  16. ^ Манджа, Фархад (29 июля 2020). «Откуда вы знаете, что это написал человек?» . Нью-Йорк Таймс . ISSN  0362-4331 . Проверено 4 августа 2020 года .
  17. ^ TIOBE (25 мая 2018). «Индекс TIOBE, 100 лучших языков программирования согласно индексу TIOBE» . www.tiobe.com . TIOBE_index .
  18. ^ "GitHub's Octoverse 2018" . Архивировано из оригинала на 2019-03-22.
  19. ^ Рохас, Рауль; Хашаген, Ульф (2002). Первые компьютеры: история и архитектура . MIT Press. п. 292. ISBN. 978-0262681377. Проверено 25 октября 2013 года .

дальнейшее чтение

  • Розен, Сол (редактор), Системы программирования и языки , McGraw-Hill, 1967.
  • Саммет, Жан Э. , Языки программирования: история и основы , Прентис-Холл, 1969.
  • Саммет, Жан Э. (июль 1972 г.). «Языки программирования: история и будущее». Коммуникации ACM . 15 (7): 601–610. DOI : 10.1145 / 361454.361485 . S2CID  2003242 .
  • Ричард Л. Вексельблат (редактор): История языков программирования , Academic Press, 1981.
  • Томас Дж. Бергин и Ричард Г. Гибсон (редакторы): История языков программирования , Addison Wesley, 1996.

внешние ссылки