Jump to content

История языков программирования

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

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

Ранняя история [ править ]

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

«Жаккардовые ткацкие станки» Чарльза Бэббиджа» и «Разностная машина были разработаны для использования перфокарт . [5] [6] которые описывали бы последовательность операций, которые должны выполнять их программируемые машины.

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

Первые языки программирования [ править ]

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

Ранним предложением языка программирования высокого уровня был Plankalkül , разработанный Конрадом Цузе для его компьютера Z1 между 1942 и 1945 годами, но в то время не реализованный. [7]

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

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

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

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

Другие языки, используемые до сих пор, включают LISP (1958 г.), изобретенный Джоном Маккарти , и COBOL (1959 г.), созданный Комитетом ближнего действия. Еще одной вехой в конце 1950-х годов стала публикация комитетом американских и европейских ученых-компьютерщиков «нового языка алгоритмов»; Отчет ALGOL 60 ALGO Ритмический язык »). Этот отчет объединил многие идеи, циркулировавшие в то время, и представил три ключевые языковые инновации:

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

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

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

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

Ключевые идеи АЛГОЛА были продолжены в АЛГОЛЕ 68 :

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

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

Логотипы
Фортран
Лисп
начало

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

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

Логотипы
Схема
С
Смолток

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

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

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

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

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

Логотипы
МАТЛАБ
Эрланг
Ткл
С++

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

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

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

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

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

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

Интернета 1990 век -е :

Логотипы
Хаскелл
Два
PHP
Ребол
Питон
Руби

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

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

Некоторые языки программирования включали в свой дистрибутив другие языки, чтобы сэкономить время разработки. например, и Python , и Ruby включали Tcl для поддержки программирования графического интерфейса через такие библиотеки, как Tkinter .

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

тенденции Текущие

Логотипы
Д
классный
PowerShell
Ржавчина
Царапать
Идти
Дарт
Быстрый
Котлин
Машинопись
С#
Кольцо
Юлия
Зиг

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

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

Некоторые известные языки, разработанные в этот период и внесенные в индекс TIOBE (100 лучших языков программирования) по состоянию на февраль 2024 года, включают: [20] [21]

Другие новые языки программирования включают Elm , Балерина , Рэд , Кристалл , Хаксе , Ви (Вланг) , Разум и Моджо .

Ключевые цифры

Некоторые новаторы
Деннис Ричи
Никлаус Вирт
Грейс М. Хоппер
Бьерн Страуструп
Андерс Хейлсберг
Гвидо ван Россум
Юкихиро Мацумото
Джеймс Гослинг
Ларри Уолл

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

См. также [ править ]

Ссылки [ править ]

  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. ^ Бэйлз, Ребекка (24 июля 2023 г.). «Объяснение аналитической машины Чарльза Бэббиджа» . история-компьютер.com .
  6. ^ Суэйд, Дорон. «Двигатели» . www.computerhistory.org . Проверено 23 февраля 2024 г.
  7. ^ В 1998 и 2000 годах для этого языка были созданы компиляторы в качестве исторического упражнения. Рохас, Рауль и др. (2000). «Plankalkül: первый язык программирования высокого уровня и его реализация». Институт информатики, Свободный университет Берлина, Технический отчет B-3/2000. (полный текст)
  8. ^ Себеста, WS (2006). Понятия языков программирования . п. 44. ИСБН  978-0-321-33025-3 .
  9. ^ «Умер создатель Фортрана Джон Бэкус – Технологии и гаджеты» . Новости Эн-Би-Си. 20 марта 2007 г. Проверено 25 апреля 2010 г.
  10. ^ «CSC-302 99S: Класс 02: Краткая история языков программирования» . Math.grin.edu. Архивировано из оригинала 15 июля 2010 г. Проверено 25 апреля 2010 г.
  11. ^ Падуя, Дэвид (февраль 2000 г.). «Компилятор FORTRAN I» (PDF) . Вычисления в науке и технике . 2 (1): 70–75. Бибкод : 2000CSE.....2a..70P . дои : 10.1109/5992.814661 . Проверено 7 ноября 2019 г.
  12. ^ Юджин Ло (18 июня 2010 г.). «Идеальный язык программирования для HPC» . Очередь . 8 (6). Ассоциация вычислительных машин.
  13. ^ «HPL — портативная реализация высокопроизводительного теста Linpack для компьютеров с распределенной памятью» . Проверено 21 февраля 2015 г.
  14. ^ Хоппер (1978) с. 16.
  15. ^ Бархат (1969) стр. 316.
  16. ^ Бархат (1978) стр. 204.
  17. ^ Гордон, Майкл Дж. К. (1996). «От LCF до HOL: краткая история» (PDF) . п. 3 . Проверено 4 мая 2015 г. Edinburgh LCF, включая интерпретатор ML, был реализован на Lisp.
  18. ^ Манджу, Фархад (29 июля 2020 г.). «Откуда вы знаете, что это написал человек?» . Нью-Йорк Таймс . ISSN   0362-4331 . Проверено 4 августа 2020 г.
  19. ^ Милмо, Дэн (06 декабря 2023 г.). «Google заявляет, что новая модель искусственного интеллекта Gemini превосходит ChatGPT в большинстве тестов» . Хранитель . ISSN   0261-3077 . Проверено 26 февраля 2024 г.
  20. ^ «Индекс TIOBE, Топ-100 языков программирования по версии TIOBE Index» . www.tiobe.com . Индекс ТИОБЕ . 22 февраля 2024 г.
  21. ^ «Октоверс GitHub 2018» . Архивировано из оригинала 22 марта 2019 г.
  22. ^ Рохас, Рауль; Хашаген, Ульф (2002). Первые компьютеры: история и архитектура . МТИ Пресс. п. 292. ИСБН  978-0262681377 . Проверено 25 октября 2013 г.

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 554a29ce15c551e4fe49c96a87c0dcd5__1716298620
URL1:https://arc.ask3.ru/arc/aa/55/d5/554a29ce15c551e4fe49c96a87c0dcd5.html
Заголовок, (Title) документа по адресу, URL1:
History of programming languages - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)