История и эволюция языков программирования
Денис Суро
Этот документ является © 2001/2014 Дени Суро. Его можно распечатать и воспроизвести в образовательных целях. Вы не должны помещать этот документ на другой сайт, а должны размещать ссылку на этой странице.
Критерии выбора: Язык программирования входит в историю, если он широко используется или вдохновлен другими языками программирования. В списке также есть новые и новаторские языки.
Общие языки программирования проходят трудоемкую и странную эволюцию с 1946 года. Чтобы показать эволюцию синтаксиса, функций, они классифицируются по срокам реализации. Когда появился Паскаль, C++, Python, кто их представлял, почему у языков такие различия?
Избранные даты соответствуют моменту, когда первая программа могла быть написана и скомпилирована на языке. Там, где это возможно, предоставляется сайт компилятора или интерпретатора для языка или подробное описание для основных из них. История в основном касается универсальных языков приложений или сценариев, но я упоминаю некоторые важные специализированные языки и все те, которые оказали большое влияние на последующее проектирование других языков программирования.
Если ты находишь ошибки или упущения, можешь сказать так: отправляй комментарий в: webmaster@iqlevsha.ru.
Основными категориями языков (на сегодняшний день) являются функциональные и процедурные (так называемые императивные) языки, и логические.
Язык называется функциональным, в математическом смысле слова функция, если каждая операция не зависит от контекста, и результат функции зависит исключительно от его аргументов.
Хаскелл, Лисп - функциональные языки разных жанров. Скорее, они предназначены для искусственного интеллекта. Лисп использует принцип уменьшения проблем, Пролог - принцип решения предикатами первого порядка, это логический язык.
Также императивный стиль противопоставляется заявительному. По сути дела, считается декларативной система, которая закрепляет знания, констатирует проблему и обеспечивает механизм решения. Пролог называет себя декларативным.
Практически все языки, функциональные или императивные, теперь ориентированы на объекты и используют классы, описывающие реальные или чисто компьютерные объекты.
Различают 4 поколения языков программирования плюс как минимум два новых тренда.
- Машинные языки.
- Символические языки и автомоды.
- Независимые от материала языки, такие как Basic, C, Cobol, Algol...
- Языки, предназначенные для описания проблемы, такие как Симула и другие языки объектов.
- Языки с логическим программированием утверждают, что представляют пятое поколение, но их использование маргинально. Пятым поколением могут стать языки интернета, поэтому они работают на любой машине и компилируются в промежуточный (так называемый виртуальный) код.
- Языки «Markup», вдохновленные XML, являются последним трендом, они интегрируют код и данные в расширяемую форму, и работают в сети.
Независимо от этих теоретических поколений, великими датами являются:
- 50-е годы: Создание языков высокого уровня (ближе к человеческому).
- 60-е годы: Изобилие специализированных языков. Форт. Симула И. Лисп, Кобол.
Безуспешно пытаются навязать общие языки: Алгол, PL/1. - 70-е годы: Дуэль между структурированным программированием с Паскалем и эффективностью языка C (это продолжается до сих пор в 2000 году). Обобщение интерпретированного Basic на микрокомпьютерах, появившихся в 1977 году, ушло в конце 80-х годов.
- 80-е годы: Экспериментирование с другими путями, включая предметы. МЛ. Смолталк . На микрокомпьютерах сейчас используются компилируемые C, Pascal, Basic.
- 90-е годы: Обобщение предметного программирования благодаря производительности десмикро-компьютеров. Java, Perl, Python добавляются к языкам микрофонов.
- 2000-е: Интернет-программирование (и грядущие нововведения, см. в конце текста).
- 2010-е годы: Конкуренция и асинхронизм. Языки JavaScript, Go, Julia, среди прочего, помогают создавать плавные онлайн-приложения .
Первый язык
Ада Лавлейс, а также Бэббидж и его племянник писали программы для проекта разностной машины, а затем аналитической машины Бэббиджа.
Сообщается, что в 1945 году немец К Цузе, изобретатель компьютера Z3, определил для этой машины эволюционирующий язык (с массивами и рекордами). У нас мало документов по этому языку .
Сборщик
Ассемблеры существуют с самого начала работы компьютеров. Они связывают символическое имя с кодом машинного языка, например:
add bx, 4 cmp [adr], 3 // comparaison jmp address // branchementПрограммирование в ассемблере больше не практикуется на нынешних компьютерах даже для быстрых процедур выполнения... Несколько современных языков генерируют переносимый байтекод, который близок ассемблеру, но невидим программисту.
Автокод - 1952
Алик Э. Гленни
Реализованный сначала на Mark 1, а затем на других машинах, это символический код, который переводится на машинный язык.
FLOW-MATIC - 1955
Грейс Хоппер
Признавая, что программирование на символическом языке недоступно для исследователей, Грейс Хоппер хотела использовать слова в качестве инструкций для UNIVAC I. Язык отделяет инструкции от структур данных, что также было новым. Компилятор был закончен в 1958 году.
IPL - 1956 - Информационный язык обработки
А. Ньюэлл, Х. Саймон, Джей Си Шоу
Язык обработки списков, низкий уровень. Реализует рекурсивность.
Фортран - 1954-1958 - FORmula TRANslator system
Джон Бэкус и другие исследователи IBM
Язык, посвященный математическим расчетам.
Фортран II в 1958 году ввел в действие подпрограммы функции, петли, примитивную управляющую структуру FOR.
Идентификаторы имели не более шести символов.
UNCOL - 1958 - Универсальный компьютерный язык
Мелвин Э. Конвей
Это первый байтекод, первый промежуточный язык, отвечающий на необходимость писать программы, работающие на всех аппаратах. Он не был реализован, но вдохновил на последующие проекты, такие как UCSD p-System.
Лисп - 1958-1960 - ЛИСт Переработка
Мак Карти
Функциональный язык обработки списка.
Он рекурсивен, а не итеративен. Данные и программы не различаются и могут обрабатываться одинаково.
IAL - 1958 - Международная алгебраическая логика
Первое имя Алгол 58, не реализовано.
АЛГОЛ - 1960/Алгол W - 1966/Алгол 68 - АЛЬГОритмик
Язык, определенный международной комиссией инфоматиков, координируемой МФИП
Это первый универсальный независимый язык машины.
Вводит грамматику BNF (Backus Naur Form) для выполнения синтаксического парсера.
Ввод структуры блока инструкций и локальных переменных в блоки.
Вводит рекурсивность (несмотря на нежелание считать это лишним!).
Он использует динамические массивы, поэтому следующие языки, такие как Pascal и C, регрессировали с помощью статических массивов по соображениям производительности.
Здесь можно найти IF THEN ELSE, довольно общий FOR, символ назначения: =, SWITCH с гото, делимитаторы BEGIN END, WHILE..
Algol W от Niklaus Wirth в 1966 году вводит ЗАПИСИ, объявления динамических структур данных, CASE, прохождение параметров по значению, предшествующие операторы.
В том же году Никлаус Вирт создает Эйлер, промежуточный язык между Алголом и Паскалем.
Алгол 60 оставался языком, ориентированным на математический расчет. Чтобы вернуться к общей языковой цели, в 1964 году была решена новая версия - Алгол X, ставшая впоследствии Алгол 68.
Алгол 68 использовал = + для объединения назначения и сложения . Приносил объединяющую структуру и касту типа. Он добавляет IF THEN ELIF FI, CASE, GOTO, определяемые пользователем операторы.
Он не разрешал раздельную компиляцию файлов (так называемую инкрементальную).
COBOL - 1960 - COmmon Business Oriented Langue
Определено комитетом CODASYL, COnference on DAta SYsystems L anguages
Работа конференции под эгидой Министерства обороны совместно с производителями, университетами и пользователями продолжалась с мая 1959 по апрель 1960 года.
Грейс Мюррей Хоппер, определившая Flow-Matic, язык, составленный в 50-х годах, была частью комитета.
Классический процедурный язык для управления бизнесом, в котором программа состоит из 4 отделов: идентификации, среды, данных, процедуры, которые могут включать разделы. Он основан на данных и точно определяет аппаратные средства и форматы ввода и вывода данных.
Он вводит структуру данных RECORDS. Программы сами задокументированы синтаксисом, что не делает их легче!
АПЛ - 1964 - Язык программирования
К. Айверсон
Язык, использующий математическую нотацию, состоящий из операторов. Один парень, картина.
Определен в 1957 - 1960 годах, реализован в 1964 году.
BASIC - 1964 - Beginner's All-purpose Symbolic Instruction Code
Джон Кемени, Томас Курц
Он был разработан в 1963 году, чтобы его было легко выучить, и реализован в 1964 году. Первая версия была скомпилирована, а затем стала интерактивной и интерпретированной. Каждая строка была пронумерована для включения подключения через GOTO!
Билл Гейт и Пол Аллен выиграли международный конкурс, спроектировав реализацию исполнительского Basic, сначала для Altair (в 4 к. памяти), а затем на других микрокомпьютерах.
Микрокомпьютеры будут поставляться с языком Basic в мертвой памяти (ROM) до конца 80-х годов.
В 1977 году Apple II поставляются с целым базисом. Позже у них появится basic Applesoft от Microsoft с плавающей запятой. У Applesoft есть идентификаторы не более двух символов!, подключение осуществляется к номерам строк. Подпрограммы вызываются ГОСУБ по номеру линии.
Первый ПК IBM, выпущенный в 1981 году, использует Microsoft MS-DOS и его интерпретированную Basic (Basica). В 82 Microsoft предоставляет компилируемый basic (Quick Basic).
Pascal и язык C заменят Basic в том же десятилетии, Microsoft по-прежнему предоставляет компиляционный Basic Visual Basic. ASP для веб-языков и языков расширения приложений (макросов) является базовым.
True Basic, оригинальными авторами компилируется и больше не использует номера строк.
ISVIM - 1966 - If You See What I Mean. (Если вы видите, что я имею в виду).
П. Ландин
Первый функциональный язык, в математическом смысле этого слова. Первая также использует ленивую оценку (lazy evaluation).
Грамматики присвоены - 1965
Дональд Кнут
Дополняя метод BNF, назначенные грамматики (атрибут grammar) описывают семантику языков в виде исполняемых функций. Этот тип грамматики облегчит выполнение компиляторов.
Симула 67 - 1962-67
Оле-Йохан Даль, Кристан Нигаард
Проект «Симула» стартовал в 1962 году. Цель заключалась в том, чтобы сделать его инструментом описания системы отдельных событий или сети, а также языком имитации программирования.
Он задумывался как расширение языка Алгол.
В 1964 году «Симула 1» была внедрена на Univac 1107. Тогда он использовался для контроля администраций, аэропортов, планирования, транспорта или социальной системы.
Тогда это был специализированный инструмент. В 1966 году было принято решение сделать его универсальным языком. Было запущено несколько проектов с различными конструкторами компьютеров (Ibm, Univac, Digital), результатом которых стала Симула 67.
Этот универсальный язык вводит понятие классов, подклассов и объектов экземпляров классов. Классы позволяют связать функции (методы) с объектами.
Логотип - 1966
В. Фуэрцейг, Сеймур Паперт и другие
Предназначенная для обучения детей программированию, она близка Лиспу, и основана на перемещении «черепахи» на экран.
SNOBOL 4 - 1967 - StroNg Oriented symBOlic Language
Д.И. Фарбер, Р.Е. Грисвольд, Ф.П. Поленский в Bells Labs
Сноболь появился в 1962 году.
«Snobol 4» - первая стабильная и распространённая версия «Snobol», в 1967 году.
Это язык обработки текста или манипуляции строками символов, основанный на принципе паттерна, конкатенации и чередования.
В основном он использует таблицы и таблицы. Это первый язык, на котором реализуются ассоциативные массивы (словари), индексированные ключами всех типов.
Он также первым реализует паттерн-совпадение, своего рода сложный коммутатор.
Можно выполнить код, содержащийся в строках.
Типы: string, integer, real, array, table, pattern и определяемые пользователем типы.
CPL - комбинированный язык программирования
Кембриджский и Лондонский университеты
Это смесь Алгола 60 и функционального языка, предназначенная для вычисления доказательств теорем. Он использовал полиморфные тестовые структуры. Типичный язык с парнем-джокером «any». Структурированные типы списка и таблицы.
Сложный, он не был реализован. Я цитирую его только потому, что он был шагом к языку С.
BCPL - 1965? - Базовый CPL
Мартин Ричардс
Речь шла об упрощенной версии CPL.
Он использует конструкции FOR, LOOP, IF THEN, WHILE, UNTIL, REPEAT WHILE, SWITCH CASE и т. Д.
Он обладает процедурами и функциями в отличие от С.
Разделители блоков - это символы $ (..... $), которые, вероятно, вдохновили разделителей комментариев C :/*... */
PL/1 - 1965? - Номер языка программирования Один - Изначально NPL (Новый язык программирования)
IBM
Язык был разработан так, чтобы быть общим и модульным.
Ключевые слова зарезервированы только в контексте, в котором они используются в качестве таковых.
Он более независим от материала, чем его предшественники. Эти типы признаются: фиксированный, настоящий, комплекс, символ, бит, бин, указатель, картинка, очередь и т. Д. Переменные имеют атрибуты по умолчанию (например, точность parr), зависящие от контекста.
Эти составные типы интегрированы: и массив, и структуры, и союзы, и сочетания их. IF THEN и SELECT. КОГДА.. OTHERWISE - условные структуры, а изменения структуры DO позволяют условные петли.
Вводятся классы хранения: автоматизированные, статические (на жизнь программы), управляемые, основанные. Исключения реализованы.
Паскаль - 1970 - по имени Блез Паскаль, французский математик
Никлаус Вирт
Язык, созданный для облегчения выполнения компиляторов и который управляет преподаванием программирования, требуя структурированного программирования.
UCSD Pascal - первая версия на микрокомпьютере, снятая группой программистов под руководством Кеннета Боулза. Он компилирует программы в P-код, который интерпретируется и переносится (как позже Java). Он имеет полную среду разработки, идею, успешно перенятую Turbo Pascal.
В 1981 году на Apple II большой успех получила ролевая игра, написанная на языке Паскаля, Wizardry.
С появлением Turbo Pascal в 1983 году (Anders hejlsberg), быстро и с полной IDE, язык распространился.
Конструкции близки к С. Способ объявления переменных тяжелее, но не обязательно логичнее.
Forth - 1971 - Fourth уменьшен до Forth за 5-буквенное ограничение IBM 1130
Чарльз Х. Мур
Определён в 60-х годах, по-видимому, реализован в 71 году.
Язык астрономии, который использует стек вместо переменных.
Он хотел язык 4-го поколения, отсюда и название.
Смолталк - 1972
Alan Kay и Software Concept Group
Это полностью предметно-ориентированный язык, который работает внутри графической среды, с окном, мышкой. Вводится понятие растрового изображения (1 пикселей = 1 ячейка памяти).
C - 1973 - C является преемником B, которая является преемником BCPL
Деннис Ричи
Это язык, изначально предназначенный для программирования операционной системы UNIX, и который быстро стал универсальным благодаря своей переносимости и производительности.
Он позволяет собирать файлы отдельно.
В 1965 году программисты ATT использовали язык Bcpl для работы над r ealisation Unix. Недовольные языком, они развили его в новую версию под названием B, а затем в новый язык под названием C, который добьется известного успеха.
Именно эволюция материала побудила создать C. Языки Bcpl и B использовали целые числа в качестве указателей, но на машинах, спроектированных по-другому, этого уже не могло быть.
У Bcpl не было парня. Заявления рода int i, char b были созданы вместе с C. Потом появились другие типы.
Оператор + = родом из Algol 68, но это было написано скорее = +
Bcpl помещал блок инструкций между (* и *) в качестве комментария между/* и */и вложенным выражением между (и). Полагаю, этот символизм хочет обозначить тот факт, что все - выражение в языке, при этом ускоряя парсинг. Язык C упрощается символами {и}, что избавляет от первоначального значения.
Понятия союза и касты исходят от Алгол 68.
Оператор++ существовал в языке B.
Директива «include» исходит от PL/1.
Препроцессор был реализован в 1973 году, и началось фактическое использование, поэтому именно в эту дату я помещаю создание языка C, даже если созревание началось с 1969 года. Язык продолжал развиваться до 1980 года . Начиная с 73 года C использовался для программирования ядра Unix.
Пролог - 1970 +
А. Кольмерауэр, Д. Руссель
Язык был разработан совместно во Франции в Экс-ан-Провансе и Эдинбурге.
Он вводит логическое программирование. Программа состоит из положений Хорна.
Пролог называет себя декларативным, потому что его система логических выводов представляет собой механизм решения.
SQL - 1970 + - стандартный язык запросов
IBM
Язык запроса реляционных баз данных. Он стал преемником языка «Площадь».
Awk - 1974 - По инициалам авторов
Ахо, Кернинган, Вайнбергер
Язык обработки текста на основе регулярных выражений, работающий по принципу pattern-action.
Схема - 1975 - Де «схеммер»
MIT - Джеральд Джей Сассман и Гай Л. Стил
Язык, производный от Лиспа и очищенный.
Типами являются логические, целые числа неопределенного размера, рациональные или сложные, символы или символы, векторы, ориентированные пары, списки, ассоциативные списки, хэш-таблицы. Общий тип S-выражения позволяет расширить язык.
Он часто используется в качестве языка сценариев в программном обеспечении Gimp.
Язык и инструмент разработки Hop in Inria позволяет использовать функциональный HTML-язык для создания веб-приложений 2.0.
CLU - 75 - CLUster
Барбара Лискова и МТИ.
После Симулы он привносит понятие конструктора абстрактных типов с кодом для его создания. Объекты называются кластерами (группами). Он приносит концепцию итератора, эффективную систему управления исключениями, множественное назначение. Эти идеи подхватил Питон.
Плазма - 75
Карл Хьюитт
Актёрский язык. Реализован в Лиспе.
Сасл - 1976 - Язык Сент-Эндрюс Статик
Д. Тернер
Предназначен для обучения функциональному программированию.
Потомок Исвима, структуры данных в неограниченном количестве.
Икона - 1970 +
Грисвольд
Процедурный язык, с функциями обработки текста как Snobol4, и мощные конструкции. Несомненно, первый язык, ориентированный на цели: Инструкция выполняется, если выполняется выражение с успешным или неудачным состоянием.
Имеет структурированные типы: список, набор, таблица (словарь).
Пишется список: имя: = [«слово», «слово», число и т. д.]
Список обращается с индексом, например, [i] или через управление стеком.
Набор содержит непревзойденные элементы, элементы объединения, пересечения, удаления.
Конструктивный диапазон пишется : a to b
где «to» - ключевое слово, а «a» и «b» - переменные..
Можно поместить диапазон в выражение или в качестве аргумента функции. Выражение и функция будут вызываться для каждого значения интервала.
Ex: write (1 до 5) покажет 1, 2, 3, 4, 5.
Выражения не возвращают истинное или ложное значение, а оцениваются или отклоняются. Связанные операции выполняются при вычислении выражения. Это первый язык для оценки выражений, ориентированных на цель.
Инструкция языка C : si (x = выражение)... который означает: назначить x результат выражения, и если a отличается от нуля, то..., эта конструкция обобщается в Icon, если выражение оценивается, x принимает свое значение и условие выполняется, иначе x не меняется и условие проходит.
Конструктор любой... do, связанное с выражением, работает как итератор. Так же, как и обстановка.
Чередование - еще одна мощная оригинальная конструкция. Он позволяет использовать последовательность параметров, возможно, до получения результата. Его символ - «|».
Например, инструкция: если в | b | c = 0 | 1, то....
читается: если a или b или это стоит 0 или 1, то...
ML - 1973? - язык мета
Р. Милнер
Функциональный язык, вдохновленный Исвимом.
Его целью было доказательство теоремы в Эдинбургском университете.
Элементы заменяются шаблонными шаблонами.
Реализован в Лиспе.
Модула 2 - 1979 - MODUlar LAnguage
Никлаус Вирт
Сообщается, что Модула 1 была определена в 1977 году. Изначально реализован на рабочей станции Lilith.
Идея языка заключается в том, чтобы снизить риск ошибок с помощью принудительных правил программирования. Однако он приближается к языку С, пытаясь заполнить пробелы Паскаля. Таким образом, вызов функции без параметра пишется f (), как в C, а не f, как в Pascal.
Он разбивает программу на модули, содержащие процедуры и структуры данных, с локальной видимостью и с интерфейсами между модулями. Используй корутины. Он предоставляет функции доступа к аппаратным средствам, чтобы конкурировать с C.
Он будет мало использоваться вне университетских рамок, поскольку эти усовершенствования (модули, аппаратный доступ) были добавлены в дистрибутивы Паскаля (в частности, с агрегатами Turbo Pascal).
Ада - 1980 + - от имени Ада Байрон де Лавлейс, первой женщины, которая запрограммировала
Создана рабочей группой, возглавляемой Жаном Ихбиой, по техническому заданию министерства обороны США (DED)
Вдохновлены Паскалем и Алголом У.
Вводит генеричность алгоритмов и некую примитивную ориентацию объекта, она впоследствии станет ориентированной на объект после C++.
Представляет пакеты, независимые модули.
C++ - 1981-1986
Бьарне Струструп
Язык, ориентированный на объекты, по принципу Симулы.
Вводит перегрузку операторов. Методы могут быть inline.
Рядом с символом/* и */он использует символ//для однострочного комментария. Можно отметить возрождение символизма, уже существовавшего в языке Bcpl, который стал преемником языка C!
Objective C, изобретенная Брэдом Коксом в 1984 году - ещё одна версия С, ориентированная на объект, вдохновленная smalltalk. Нет перегрузки операторов.
Использованный на покойном компьютере Next и для реализации операционной системы NextStep, он стал языком программирования Apple с возвращением Стива Джобса и, следовательно, iPhone.
Стандарт ML - 1984
Р. Милнер, Эдимбургский и Кембриджский университеты, Инрия.
Поиск «Standard ML Moscow» в поисковой системе. Реализация ML.
Эйфель - 1985 - имя Густава Эйфеля
Бертран Мейер
Полностью предметно-ориентированный процедурный язык, реализует стойкость, разработанную для безопасности программного обеспечения.
Компилируется в C. Может взаимодействовать с другими языками. Он включает элементы функционального языка, имеет родовые классы, коллекторский гарбаг.
Существует производная версия с открытым исходным кодом, Sather, (название башни Беркли).
GAP - 1986 - Группы, алгоритмы и программирование
Йоханнес Майер, Вернер Никель, Элис Нимейер, Мартин Шёнерт и другие.
Язык был определен для программирования математических алгоритмов.
Он интерпретирован, интерактивен и не типичен. Список и рекорды базовых структур.
Синтаксис вдохновляется Паскалем с различиями. Комментарии вставляются с #.
Конец блока отмечается путем инверсии ключевых слов: if fi, do od.
Цикл для фигуры для списка или для от до.
Язык отличает процедуры и функции.
Характерно то, что переменные указывают на значение, а не адрес памяти, и определение функции, которая имеет форму вызова: x: = функция (аргументы) блока.
Можно вложить функцию в другую функцию.
Миранда - 1989 - по имени героини Шекспира (Миранда, замечательная на латыни)
Д.Турнер
Вдохновлен Саслем и ML. Аргументы функции оцениваются только тогда, когда они используются (логическая оценка). Вложенный шаблон, модули.
Caml - 1987 - Язык абстрактной машинной категории
Суарес, Вайсс, Мори
Caml и Objective caml в 1996 году, реализуют ML.
Perl - 1987 - Практический язык извлечения и отчета
Ларри Уолл
Предназначенная для замены языков командной строки Unix, Sh и Sed, а также Awk, она повторяет тот же (ужасный) синтаксис. В основном используется для системного администрирования и CGI-скриптов.
Использует ассоциативные списки и таблицы (словари ). Конструкция FOREACH позволяет просматривать содержимое списка.
Оберон - 1988
Никлаус Вирт
После «Модулы 2» автор определяет язык Лилит в 1980 году (на машине Лилит), затем Оберон.
Несколько конструкций общего пользования удаляются, чтобы еще больше снизить риск ошибок ! Добавляется собирающий гараж.
Haskell - 1990 - Имя программного обеспечения Haskell Curry
Язык, разработанный комитетом по функциональным языкам
Чисто функциональный язык. Вдохновлен Мирандой, так что Сасл.
Функциональные таблицы, совпадение шаблонов .
ABC - 1980-90 - ABC по выражению
CWI - Меертенс, Пембертон (и Гвидо ван Россум)
Скриптовый язык, разработанный CWI в Нидерландах и желавший для себя преемника Quick Basic или скриптовых языков под Unix.
Наверное, первый использовал только отступы, чтобы обозначить переплетение процедур: нет делимитаторов, таких как бегин/энд или эквивалент.
Еще одним нововведением является отсутствие управления файлами, но сохранение глобальных переменных: они сохраняют свой контент от сеанса к сеансу!
Основных типов пять: число, строка, список, состав (структура без имен полей), таблица.
Python - 1991 - Название происходит от английского сериала «Летающий цирк Монти Питона»
Гвидо ван Россум
Скриптовый язык с динамическим типированием. Это альтернатива Перлу.
Основана на ABC, но может быть расширена с помощью модулей на языке C и ориентирована на объект.
В качестве ABC он использует развитые типы: кортеж, список, словарь.
Оператор slice [a: b] позволяет извлечь подмножество из списка.
Есть версия, которая компилирует в байт-коде Java, jython и версии для .NET.
Pov-Ray - 1991 - Настойчивость видения (название научно-фантастической книги)
Д. и А. Коллинз и вкладчики
Pov-Ray - язык описания изображений.
DisCo - 1992 - Распределенная совместная операция
Рейно Курки-Суонио
Диско - язык спецификации для реактивных систем, с синтаксисом Паскаля. Конструкции языка - это объекты, управляемые событиями функции (называемые здесь действиями) и отношения. Функция включается при возникновении состояния системы и, возможно, перегружена. Дискотека сосредоточена на коллективных взаимодействиях. Слои (слои, рамки) - это модули языка. Это системно-ориентированный язык с объектами и реакциями (а не ориентированный на действие, как сказано в презентации).
Ruby - 1994 - Как драгоценный камень, по аналогии с Perl
Юкихиро Мацумото
Ruby был задуман как преемник Perl и альтернатива Python, чтобы быть яснее первого и более ориентированной на объект, чем второй. Синтаксис черпает вдохновение из этих двух языков, он хочет быть интуитивным и естественным, но может быть сложным.
Есть не новые структуры управления, как в Script, а количество незначительных нововведений, снижающих размер кода.
Это толкованный, легко расширяемый язык. Инструкции заканчиваются концами строк. Блоки инструкций и петли заканчиваются на «end». Мы находим большинство особенностей Python: ассоциативные таблицы, итераторы...
Его оригинальность - в динамических объектах (добавление методов к экземплярам) и в области переменных, обозначенной приставкой.
Java - 1994 - Java переводится как caua, кофе
Джеймс Гослинг и другие программисты в Sun
Изначально задуманный, в 1991 году, как интерактивный язык, и названный Oak, он не имел успеха. Но в 1994 году он был переписан для интернета и переименован в Java (кафе, кауа). В 1995 году браузеры могут запускать апплеты. В январе 1996 года JavaSoft выпускает JDK 1.0, Java Development Kit.
Java - язык, ориентированный на объекты, вдохновленный C++. Он компилируется в байткод, интерпретируемый на любом компьютере. (Visual Cafe и GCJ производят машинный код).
Упрощает C++: один класс на файл, автоматическое управление памятью, без указателей. Он ограничивает его: нет множественного наследства и перегрузки операторов, но добавляет встроенную многозадачность, переносимость.
Java имеет только динамические таблицы, в отличие от C и C++.
PHP - 1995 - Personal Home Pays Hypertext Processor
Расмус Лердорф
Мультиплатформенный скриптовый язык, интегрирующийся в HTML .
Подобно языку C, не типизированному, переменные обозначаются символом $, как под оболочкой Unix или Perl. Он обрабатывает html-страницы, включая php-код, и выдает страницу в чистом html.
Расширенная библиотека функций позволяет веб-мастеру создавать динамические и интерактивные страницы.
Microsoft использует в Windows эквивалентный язык - ASP, близкий к basic.
JavaScript - 1995 (Сначала называется LiveScript )
Брендан Эйх в Нетскапе
Язык сценариев для вставки процедурного кода и веб-страниц.
Для использования в других приложениях, например, языках на основе XML.
Общий синтаксис C или Java, но с нетипичными переменными. Доступ к элементам веб-страницы (окну, таблице и т.д.) осуществляется через модель объекта документа.
UML - 1996 - унифицированный язык моделирования
Стандарт OMG (Object Management Group) - Грэйди Буч, Джим Румбо и Ивар Джейкобсон
UML - объединение трех языков моделирования, разработанных тремя авторами выше. Язык использует графическую нотацию для описания программных проектов. Источник - это диаграмма, представляющая объекты и их взаимодействие. Модель состоит из видов и их сочетание описывает полную систему. Модель абстрактная и независимая от области.
ECMAScript - 1997 - Сценарий ECMA
Стандарт Европейского центра стандартизации E.C.M.A.
Стандарт для языка JavaScript, придуманного Netscape, чтобы сделать веб-страницы со стороны клиента динамическими.
Ребол - 1997 (Определение более старое) - Относительный язык выражения на основе объекта
Карл СассенРат
Интерпретированный язык сценариев с использованием компактного кода. Он предназначен для общения в интернете и распределенных системах. Он расширяется.
Включает 45 типов, использующих одни и те же операторы (ext: date, money...). Блоки инструкций находятся между [].
C # - 2000 - (C-sharp), музыкальная нота, преемник C++ (синоним мелодии?)
Андерс Хейлсберг/Microsoft.
Этот язык сулят большой успех с 2002 года. Он является основным языком платформы .NET, для программирования программного обеспечения, которое может использоваться удаленно в Интернете. Как и Java, он повторяет синтаксис языка C (которому все равно 30 лет!) с такими же упрощениями: garbage collector, отсутствие указателя, отсутствие множественного наследия, интерфейсов, многозадачность ...
C # компилируется на промежуточном языке, MSIL (MicroSoft Intermediate Language), и работает с многоязычной библиотекой CLR (Common Language Runtime). Главная оригинальность в том, что в MSIL можно компилировать разные языки и делиться своими классами.
В язык были включены и другие нововведения:
- конструкции здесь являются специальными объектами, переданными по значению.
- литералы являются объектами, с методами..
- Атрибуты являются описательными объектами, прикрепленными к элементам программы и используемыми во время выполнения.
- Свойства: метод, определенный как свойство, используется как переменная: prop = 5 эквивалентен prop (5).
- конструктор foreach () для поиска таблиц (новый только по сравнению с Java и C++).
- делегат, заменяющий указатель функций языка С.
По сравнению с Java, кроме перечисленных выше отличий:
- Управление событиями лучше интегрировано.
- Сохраняет перегруженность операторов C++
- Более простой доступ к родной системе.
АспектJ - 2001 - Аспект для Java
Пало Альто Исследовательский Центр
Аспект J - расширение Java, реализующее внешне-ориентированное программирование. Метод, который модулирует поперечные «возможности». Здесь единство - это не класс, а концерн, который делится между несколькими классами. Концернами могут быть свойства, сферы интересов, система, и POA описывает их отношения, объединяет их в программе. Аспекты инкапсулируют многоклассное поведение.
Скриптол - По Денису Суро, 2001
Скриптол (ScriptWriter Oriented Language), возможно, скомпилирован в PHP, C++, а затем в исполняемый бинарный файл, что дает ему высокую переносимость. Это и язык приложений, и скриптов, и веб-страниц.
Блоки инструкций и управляющие структуры закрываются не на «end» или «}», а, как и XML, с формой: «/if », «/for», «/while »и т. Д.
В языке появились новые структуры управления: «for in», «while let», «scan by» и т. д... «If composite» облегчает реализацию правил.
Переменные и литералы являются объектами. Создается первичный объект (число, текст и т.д.) или развивается путем прямого назначения значения или списка аргументов имени.
Скриптол предназначен для развития, чтобы предоставить, наряду с классами, другие высокоуровневые структуры и приблизить программирование к мышлению.
С октября 2003 года скриптол позволяет использовать XML в качестве внутренней структуры данных.
Скала. Февраль 2004 года
Федеральная политехническая школа в Лозанне
Scala - чисто предметно-ориентированный язык, реализующий некоторые особенности Python в Java-синтаксисе. Он статически типичен и как процедурный, так и функциональный. Сейчас он снимает на JVM и .NET.
Go - От Google, 2009
Созданный Google для собственных разработок, но размещенный в открытом доступе под свободной лицензией, он разработан специально для скорости компиляции.
Это современная версия C++ без заголовочных файлов, с упрощенным синтаксисом. Классы заменяются простыми интерфейсами и наследство исчезло.
Это приносит конкуренцию и включает в себя коллекторский гараж, но без субстантивного вклада в разработку языков программирования.
Джулия - 2010
Джефф Безансон, Стефан Карпинский, Вирал Б. Шах, Алан Эдельман. Спонсируется DARPA.
Авторы хотели реализовать лучшие возможности всех остальных языков программирования: объектов, конкуренции, однообразия, распределенной работы, макросов, генеричности. Это с максимально лаконичным и четким синтаксисом. Джулия значительно продвигает программирование.
Код Julia компилируется с JIT LLVM и работает как интерпретатор.
Его основными направлениями применения являются научные программы благодаря расширенной библиотеке, облако с распределенной и конкурирующей переработкой, а также благодаря способности программы модифицироваться сама, робототехника.
Dart - От Google, 2011
Призванный заменить JavaScript, который Google считает непоправимым (это мнение не всех игроков в Сети), он подходит к статическим языкам, таким как Java, с классами с простым наследием, типовыми или динамическими переменными по выбору. Он обеспечивает прогресс в функциях (конкуренты, микшеры, стримы), но скорее представляет собой регресс в дизайне по сравнению с JavaScript, динамические возможности которого представляют собой реальную эволюцию. Версия 5 JavaScript предусматривает добавление классов и наследство, что снижает интерес Dart к браузеру.
Руст - Mozilla, 2006-2011
Этот системный язык, изначально созданный Graydon Hoare в 2006 году и взятый Mozilla (ее работодателем) в 2009 году, имеет компилятор с 2011 года. Его синтаксис производен от C с добавками для управления конкуренцией и синтаксическими добавками. Он ориентирован на объект и родовой с полиморфными классами, как в Хаскелле.
Он более безопасен для Интернета и лучше использует современные процессоры.
Asm.js - 2013 - Mozilla
Это подмножество JavaScript позволяет в сочетании с другими инструментами конвертировать написанные приложения и библиотеки на другие языки и использовать их в браузере. Это делает его универсальным интерфейсом для онлайн или офлайн ПО, работающего на всех операционных системах и типах оборудования - от настольного компьютера до смартфона.
Свифт - 2014 - По Apple
Предназначенная для замены Objective-C на устройствах Apple, в частности iPhone и iTab, снимает часть недостатков этого древнего языка. Он имеет классический дизайн и особенно отличается тем, что меняет название элементов языка, интерфейс становится протоколами, например.
От настоящего к будущему
Видно, что после множества диалектов 70-х годов изобретение языков застопорилось, когда к синтаксису. Распространённые языки, даже такие как Java, C #, PHP, не вносят никаких изменений в инструкции по обработке, Go и Dart - это даже регрессия. Только Джулия является реальным прорывом и использует текущие возможности компьютеров.
Использование JavaScript становится все более широким по сравнению с автономными веб-приложениями .
Некоторые тенденции :
- Языки объектов
С 1992 по 2000 годы дизайнеры, похоже, посвятили себя реализации предметной ориентации на всех существующих языках... Никаких новых языков приложений, но появление таких интернет-языков, как JavaScript, ASP, PHP, которые склонны смешивать данные и функции обработки.
Классы, как правило, заменяются динамическими объектами, а наследование - комбинациями. - Простые языки
В 2000-е годы наметилась тенденция к модернизации скриптовыми языками. Python наиболее используется в настоящее время, но имеет тенденцию заменяться Go. Ruby в основном используется для библиотеки Rail, но имеет тенденцию заменяться Node и JavaScript. - Языки тегов
XML был тенденцией в 2000-2010-х годах, но с тех пор ограничен пользовательскими интерфейсами. Что касается документов, то его, как правило, заменяет JSON.
Microsoft широко использует XAML для определения графических интерфейсов. В Сети с Silverlight, многопользователями и локально с .NET.
SVG - XML-формат для вставки векторной графики в веб-страницу, поддерживаемую всеми современными браузерами. Он может позволить описать пользовательский интерфейс. - Ложная дорога
Программирование по аспектам, или по схемам, таким как UML, никуда не приводило.
- Переносимость.
Языки становятся более переносимыми благодаря LLVM и Emscribtem. Первый для своей виртуальной машины, которая работает на любой системе, второй - путем преобразования LLVM-кода в JavaScript.
- SQL Веб-приложения делают SQL все более незаменимым в современном программировании.
Заключение
Развитие мобильных устройств с их многочисленными операционными системами способствует использованию HTML как платформы для разработки и связанных с ними технологий: SVG, Canvas, CSS. JavaScript становится доминирующим клиентским языком для онлайн-приложений.
Еще одна тенденция: распределенная обработка в облаке...
Ресурсы и информация
- Полный список Все языки программирования в алфавитном порядке.
- Привет, Мир! Пример минимальной программы на каждом языке.
- История компьютера.
- Эволюция составителей. Как совершенствовалась техника парсеров.
- Будущее языков программирования. Новые идеи.
Оригинальная версия в январе 2001 года Дени Суро. Последнее обновление 14 мая 2015 года.