История языков программирования простирается от документации ранних механических компьютеров до современных инструментов для разработки программного обеспечения. Ранние языки программирования были узкоспециализированными, полагались на математические обозначения и столь же неясный синтаксис. На протяжении 20-го века исследования теории компилятора привели к созданию языков программирования высокого уровня, которые используют более доступный синтаксис для передачи инструкций.
Первым языком программирования высокого уровня был Планкалкюль, созданный Конрадом Цузе между 1942 и 1945 годами. Первый язык высокого уровня, имеющий связанный Компилятор был создан Коррадо Бём в 1951 году для его докторской диссертации. Первым коммерчески доступным языком был FORTRAN (FORmula TRANslation), разработанный в 1956 году (первое руководство появилось в 1956 году, но впервые было разработано в 1954 году) командой под руководством Джона Бэкуса на IBM.
В течение 1842–1849 гг., Ада Лавлейс перевела мемуары итальянского математика Луиджи Менабреа о новейшей машине, предложенной Чарльзом Бэббиджем : аналитической машине ; она дополнила мемуары примечаниями, в которых подробно описан метод вычисления чисел Бернулли с помощью двигателя, признанный большинством историков первой опубликованной компьютерной программой в мире.
Первые компьютерные коды были специализированы для своих приложений: например, Алонзо Черч смог выразить лямбда-исчисление формульным способом, а машина Тьюринга была абстракцией операции ленточно-маркировочная машина.
Jacquard Looms и Difference Engine Чарльза Бэббиджа имели простые языки для описания действий, которые эти машины должны выполнять, поэтому они были создателями первого языка программирования.
В 1940-х годах были созданы первые узнаваемые современные компьютеры с электрическим приводом. Ограниченная скорость и объем памяти вынуждали программистов писать вручную настроенные программы на языке ассемблера. В конце концов стало понятно, что программирование на ассемблере требует больших интеллектуальных усилий.
Первым предложением языка программирования высокого уровня был Планкалкюль, разработанный Конрадом Цузе для его компьютера Z1 между 1943 и 1945 годами, но в то время не были реализованы.
Первые работающие языки программирования, предназначенные для передачи команд компьютеру, были написаны в начале 1950-х годов. Сокращенный код Джона Мочли, предложенный в 1949 году, был одним из первых языков высокого уровня, когда-либо разработанных для электронного компьютера. В отличие от машинного кода , операторы Short Code представляют математические выражения в понятной форме. Однако программу приходилось транслировать в машинный код каждый раз при запуске, что делало процесс намного медленнее, чем выполнение эквивалентного машинного кода.
В начале 1950-х годов Алик Гленни разработал Autocode, возможно, первый скомпилированный язык программирования, в Манчестерском университете. В 1954 году R. для Mark 1 разработал вторую версию языка, известную как «Автокод Mark 1». А. Брукер. Брукер также разработал автокод для Ferranti Mercury в 1950-х годах совместно с Манчестерским университетом. Версия для EDSAC 2 была разработана Дугласом Хартри из математической лаборатории Кембриджского университета в 1961 году. Известная как EDSAC 2 Autocode, она была непосредственной разработкой компании Mercury Autocode адаптирован к местным условиям и отличался оптимизацией объектного кода и диагностикой на исходном языке, которые были усовершенствованы для того времени. Atlas Autocode, современный, но отдельный поток развития, был разработан для машины Atlas 1 Манчестерского университета .
В 1954 году FORTRAN был изобретен в IBM группой под руководством Джона Бэкуса ; это был первый широко используемый язык программирования общего назначения высокого уровня, который имел функциональную реализацию, а не просто проект на бумаге. Когда впервые был представлен FORTRAN, к нему относились скептически из-за ошибок, задержек в разработке и сравнительной эффективности программ, написанных вручную на ассемблере. Однако на рынке оборудования, который быстро развивался; со временем язык стал известен своей эффективностью. Он по-прежнему остается популярным языком для высокопроизводительных вычислений и используется для программ, которые оценивают и оценивают самые быстрые суперкомпьютеры в мире.
Другой ранний язык программирования был разработан Грейс Хоппер в США называется FLOW-MATIC. Он был разработан для UNIVAC I в Remington Rand в период с 1955 по 1959 год. Хоппер обнаружил, что клиентам, занимающимся обработкой бизнес-данных, не нравятся математические обозначения, и в начале 1955 года она и ее команда написала спецификацию для английского языка программирования и реализовала прототип. Компилятор FLOW-MATIC стал общедоступным в начале 1958 года и был практически завершен в 1959 году. Flow-Matic оказал большое влияние на разработку COBOL, поскольку только он и его прямой потомок AIMACO фактически использовались в то время.
Другие языки, которые все еще используются сегодня, включают LISP (1958), изобретенный Джоном Маккарти и COBOL (1959), созданный Комитетом ближнего радиуса действия. Еще одной важной вехой в конце 1950-х годов стала публикация комитетом американских и европейских компьютерных ученых «нового языка алгоритмов»; отчет АЛГОЛ 60 («АЛГОЛ ритмический L язык»). Этот отчет объединил многие идеи, циркулировавшие в то время, и включил три ключевых языковых нововведения:
Еще одно нововведение, связанное с этим, было в как описывался язык:
Алгол 60 оказал особое влияние на разработку более поздних языков, некоторые из которых вскоре стали более популярными.. Большие системы Берроуза были разработаны для программирования на расширенном подмножестве Алгола.
Ключевые идеи Алгола были продолжены, производство АЛГОЛА 68 :
В Алголе 68 много маленьких - используемые особенности языка (например, параллельные и параллельные блоки) и его сложная система синтаксических сокращений и автоматического приведения типов сделали его непопулярным среди разработчиков и снискали ему репутацию сложного. Никлаус Вирт фактически покинул проектный комитет, чтобы создать более простой язык Pascal.
FortranНекоторые известные языки, которые были разработаны в этот период, включают:
|
Период с конца 1960-х до конца 1970-х годов принес большой расцвет языков программирования. Большинство основных языковых парадигм, используемых в настоящее время, были изобретены в этот период:
Каждый из этих языков породил целую семью потомков, и большинство современных языков посчитайте хотя бы одного из них по своей родословной.
В 1960-х и 1970-х годах также велись серьезные споры по поводу достоинств «структурного программирования », что по сути означало программирование без использования «goto ». Значительная часть программистов считала, что даже в языках, которые предоставляют «goto», использовать его в стиле программирования - это плохо, за исключением редких случаев. Эти дебаты были тесно связаны с языковым дизайном: некоторые языки вообще не включали «goto», что заставляло программиста использовать структурированное программирование.
Чтобы обеспечить еще более быстрое время компиляции, некоторые языки были структурированы для «однопроходных компиляторов », которые ожидают, что первыми будут определены подчиненные подпрограммы, как в Pascal, где основная процедура или функция драйвера - это последний раздел списка программ.
Некоторые известные языки, которые были разработаны в этот период, включают:
1980-е были годами относительной консолидации в императивных языках. Вместо того, чтобы изобретать новые парадигмы, все эти движения развили идеи, изобретенные в предыдущем десятилетии. C ++ объединил объектно-ориентированное и системное программирование. Правительство США стандартизировало Ada, язык системного программирования, предназначенный для использования оборонными подрядчиками. В Японии и других странах были потрачены огромные суммы на исследование так называемых языков программирования пятого поколения, которые включали конструкции логического программирования. Сообщество функциональных языков перешло к стандартизации ML и Lisp. В этом десятилетии начались исследования Miranda, функционального языка с ленивым вычислением.
Одной из важных новых тенденций в дизайне языков было повышенное внимание к программированию для крупномасштабных систем с использованием модулей или крупномасштабных организационных единиц кода. Modula, Ada и ML разработали известные модульные системы в 1980-х годах. Модульные системы часто объединялись с конструкциями универсального программирования, которые, по сути, являлись параметризованными модулями (см. Также полиморфизм в объектно-ориентированном программировании ).
Хотя основные новые парадигмы для императивных языков программирования не появились, многие исследователи расширили идеи предшествующих языков и адаптировали их к новым контекстам. Например, языки Argus и системы адаптировали объектно-ориентированное программирование для распределенных систем.
. 1980-е годы также принесли успехи в реализации языков программирования. Движение RISC в компьютерной архитектуре постулировало, что оборудование должно быть разработано для компиляторов, а не для программистов на сборке. Благодаря усовершенствованию скорости процессора , которое сделало возможным все более агрессивные методы компиляции, движение RISC вызвало больший интерес к технологии компиляции для языков высокого уровня.
Языковые технологии продолжались в этом направлении вплоть до 1990-х годов.
Некоторые известные языки, которые были разработаны в этот период, включают:
|
|
Быстрый рост Интернета в середине 1990-х годов стал следующим крупным историческим событием в языках программирования. Открывая радикально новую платформу для компьютерных систем, Интернет создал возможности для новых языков. быть принятым. В частности, Язык программирования JavaScript приобрел популярность благодаря своей ранней интеграции с веб-браузером Netscape Navigator. Различные другие языки сценариев получили широкое распространение при разработке специализированных приложений для веб-серверов, таких как PHP. В 1990-е годы в императивных языках не было принципиальных новшеств, а было много рекомбинации и созревания старых идей. В эту эпоху началось распространение функциональных языков. Большой движущей философией была продуктивность программиста. Появилось множество языков «быстрой разработки приложений» (RAD), которые обычно поставлялись с IDE, сборкой мусора и были потомками более старых языков. Все такие языки были объектно-ориентированными. К ним относятся Object Pascal, Visual Basic и Java. Особое внимание уделялось Java.
Более радикальными и новаторскими, чем языки RAD, были новые языки сценариев. Они не произошли напрямую от других языков и отличались новым синтаксисом и более либеральным включением функций. Многие считают эти языки сценариев более производительными, чем даже языки RAD, но часто из-за того, что их выбор упрощает небольшие программы, а большие - сложнее писать и поддерживать. Тем не менее, языки сценариев стали самыми популярными из них, используемыми в сети.
Некоторые известные языки, которые были разработаны в этот период, включают:
|
|
Развитие языков программирования продолжается как в промышленности, так и в исследованиях. Некоторые из последних тенденций включают:
Язык программирования D Groovy PowerShell Rust Scratch SwiftНекоторые известные языки, разработанные в этот период, включают:
|
Другие новые языки программирования включают Red, Crystal, Elm, Взломать, Хаксе, Зиг, Разум и Балерина.
Некоторые ключевые люди, которые помогали в разработке языков программирования:
Эдинбургский LCF, включая интерпретатор ML, был реализован на Лиспе.