Фортран (Fortran)
Ассемблер
Машинные команды
Эволюция языков программирования
Недостатки:
Необходимость знания архитектуры машины.
Простые программы из-за ограниченных возможностей машин и сложности разработки и отладки программ.
Имеется возможность встраивания данных в код программы как команд.
Обеспечивает переход к символическому кодированию машинных команд .
Имеется возможность использования макросов и меток.
Программа может быть представлена в исходном тексте и в откомпилированном виде.
Имеются специальные программы-дизассемблеры.
Сравнение:
Машинные языки | Асcемблер |
“-” сложность написания программ | “+” наглядность |
“-” Нет переносимости программ на др. платформы |
1954 , IBM , Джон Бэкус (John Backus)
Первый язык программирования высокого уровня.
Достоинства:
Абстрагирование от особенностей машинной архитектуры.
Концепция подпрограмм.
Недостатки:
Пробелы не являлись разделителями.
Цикл for до метки 10 при изменении индекса от 1 до 100
DO 10 I=1,100
Оператор присваивания
DO10I = 1.100
Cobol - 1960 г., для коммерческих приложений.
PL/1 – 1964 г., IBM, пришел на смену Cobol и Fortran .
Появилась обработка исключительных ситуаций и поддержка параллелизма.
Пробелы стали использоваться как синтаксические разделители, но ключевые слова не были зарезервированы.
IF ELSE=THEN THEN THEN; ELSE ELSE
BASIC (Beginners' All-Purpose Symbolic Instruction Code - многоцелевой язык символических инструкций для начинающих) - 1963 г.
Язык задумывался в первую очередь как средство обучения и как первый изучаемый язык программирования.
Algol– 1964 г., разработан Петером Науром (Peter Naur) .
Этот язык дал начало целому семейству Алгол-подобных языков (важнейший представитель - Pascal).
Pascal-подобные языки
PASCAL - 1970 г., Никлаус Вирт.
Достоинства:
Впервые оператор безусловного перехода перестал играть основополагающую роль при управлении порядком выполнения операторов.
Внедрена строгая проверка типов, что позволило выявлять многие ошибки на этапе компиляции.
Недостатки:
Отсутствие средств для разбиения программы на модули.
Modula-2 - 1978 г., Никлаус Вирт.
Модуль стал одной из ключевых концепций языка .
Modula-3 - 1988 г., Никлаус Вирт.
Появились объектно-ориентированные черты.
С-подобные языки
С - 1972 г., Керниган и Ритчи, язык для разработки операционной системы UNIX.
Недостатки:
Компилятор C очень слабо контролирует типы.
С++ - 1986 г., Бьярн Страуструп.
Появились объектно-ориентированные черты.
Java- 1995 г., корпорация Sun Microsystems. Разработчики Кен Арнольд и Джеймс Гослинг.
Особенности:
Компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор (Java Virtual Machine) для реальных систем.
Нет указателей и множественного наследования.
С# - 1999-2000 гг., Microsoft.
Ориентирован, в основном, на разработку многокомпонентных Интернет-приложений.
Языки Ada и Ada 95
Ada - 1983 г. для Министерства Обороны США.
Имеет достоинсва:
Выявление множества ошибок на этапе компиляции.
Параллелизм, обработка исключений.
В 1995 году был принят стандарт языка Ada 95 .
Добавлена объекно-ориентированность.
Имеет недостатки:
Сложность освоения языка и громоздкий синтаксис.
Процедурно-ориентированные языки (Fortran, BASIC, Pascal, С)
Имеют достоинства:
Простота написания программ.
Наглядность представление программы.
Наличие встроенных базовых функций, процедур.
Переносимость программ на др. платформы
Иметя недостатки:
Большое количество строк в коде программы.
Не отражается модель реального мира
Объектно-ориентированные языки (Object Pascal, С++) устраняют перечисленные недостатки процедурных языков.
Языки обработки данных
APL (Application Programming Language) – 1957 г., язык описания математической обработки данных.
Допускает использование математических символов.
Snobol – 1962 г., а в 1974 его преемник Icon.
Синтаксис Icon напоминает С и Pascal одновременно.
Имеет встроенные функции работы со строками.
Современным аналогом Icon и Snobol является Perl - язык обработки строк и текстов.
SETL– 1969 г., язык для описания операций над множествами.
Lisp – 1958 г., язык для обработки списков.Потомки: Planner (1967), Scheme (1975), Common Lisp (1984).
Скриптовые языки
Характеризуются свойствми:
Интерпретируемость.
Простота синтаксиса.
Легкая расширяемость.
JavaScript ( LiveScript ) - Netscape Communications .
Интерпретируется браузером во время отображения веб-страницы.
По синтаксису схож с Java и (отдаленно) с C/C++.
VBScript – Microsoft .
Синтаксически похож на Visual Basic.
Perl – создан для обработки различного рода текстов и выделения нужной информации.
Является интерпретируемым языком.
Python–1990 - 91 гг.Гвидо ван Россум (Guido van Rossum)
Интерпретируемый объектно-ориентированный язык программирования.
Объектно-ориентированные языки
Simula – 1967 г., язык для моделирования различных объектов и процессов .
Smalltalk – 1972 г., я зык для проектирования сложных графических интерфейсов .
Eiffel - 1986 г., чистый язык объектно-ориентированного программирования.
Языки параллельного программирования
Оccam – 1982 г.,
предназначен для программирования транспьютеров - многопроцессорных систем распределенной обработки данных.
Модель параллельных вычислений Linda – 1985 г.
организует взаимодействие между параллельно выполняющимися процессами.
Языки программирования разделяются на следующие классы:
Императивные языки. Программы на них представляют собой пошаговое описание решения задачи.
Неимперативные языки. Программа описывает только постановку проблемы. Решение задачи выполняет компилятор.
Существуют 2 подхода: функциональное и логическое программирование.
Функциональные языки
Поддерживают представление программы в виде математических функций.
Имеются 2 типа языков: с ленивой и с энергичной семантикой.
Язык с энергичной семантикой – ML и два его диалекта Standard ML (SML) и CaML.
Языки с ленивой семантикой – Haskell и Clean.
Языки логического программирования
Программы на них выражены как формулы математической логики .
Prolog – 1971 г.
Потомки:
Parlog – 1983 г. , ориентирован на параллельные вычисления .
Delta Prolog.