Объектно-ориентированное программирование, анализ и дизайн. Методическое пособие [В. В. Мухортов] (pdf) читать постранично, страница - 2

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

§2].

1.1

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

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

1.1. ПОКОЛЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

7

право на существование. Анализируя языки программирования и обстоятельства, сопутствующие их появлению, можно обнаружить множество общих черт. Это позволяет сгруппировать языки по основным
используемым принципам и выделить поколения в их развитии. Буч[1,
§2] приводит следующую классификацию Вегнера:
• Первое поколение (1954 – 1958)
FORTRAN I

Математические формулы

ALGOL-58

Математические формулы

Flowmatic

Математические формулы

IPL V

Математические формулы

• Второе поколение (1959 – 1961)
FORTRAN II
ALGOL-60
COBOL
Lisp

Подпрограммы, раздельная компиляция
Блочные структуры, типы данных
Описание данных, работа с файлами
Обработка списков, указатели, сборка мусора

• Третье поколение (1962 – 1970)
PL/1

FORTRAN+ALGOL+COBOL

ALGOL-68

Более строгий преемник ALGOL-60

Pascal

Более простой преемник ALGOL-60

Simula

Классы, абстрактные данные

Как можно видеть, многие идеи, лежащие в основе современных языков программирования, появились в том или ином виде уже к 1970 году.
Все последующие языки, за редким исключением, являются потомками или результатом обобщения и развития вышеперечисленных. Этому во многом способствовало как широкое распространение мини- и

8ГЛАВА 1. ЭВОЛЮЦИЯ МЕТОДОЛОГИЙ ПРОГРАММИРОВАНИЯ
микро-ЭВМ и связанный с ним рост числа разработчиков программного обеспечения, так и многообразие операционных систем и различных сфер применения информационных технологий.

1.1.1

Начало начал, или первое поколение языков программирования

Мы начнем свое рассмотрение языков программирования со времен
появления первых Цифровых ЭВМ. Еще очень несовершенные и громоздкие, электронные вычислительные машины использовались тогда исключительно для математических и статистических расчетов. Их
область применения была ограничена следующими особенностями:
• Малым объем оперативной памяти.
• Несовершенством системы ввода-вывода.
Ввиду данных ограничений, а также малого количества и дороговизны этих машин, на них работали исключительно высококвалифицированные специалисты, способные управлять ими непосредственно на
уровне двоичных кодов. Для облегчения процесса программирования
вскоре были созданы языки первого поколения. Это были первые языки, которые приближали программирование к предметной области и
отдаляли его от конкретной машины. Их словарь практически полностью был математическим. Обратите внимание на топологию1 языков
первого и начала второго поколения, приведенную на Рис 1.1.
Программы, реализованные на языках первого и начала второго поколения, имели относительно простую структуру, состоящую из подпрограмм и данных, лежащих в глобальной области видимости. Механизмы языков не поддерживали разделения разнотипных данных, что
сильно осложняло написание больших программ. Основная сложность
при этом заключалась в том, что ошибка или любые изменения в одной
Под термином «топология» в данном контексте, мы будем понимать основные
элементы языка программирования и их взаимодействие.
1

1.1. ПОКОЛЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

9

Data (global scope)

Subroutines
Program
Рис. 1.1: Топология первого и начала второго поколения языков программирования
подпрограмме могли иметь губительные последствия для программной системы в целом.

1.1.2

Развитие алгоритмических абстракций. Второе поколение языков программирования

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

10ГЛАВА 1. ЭВОЛЮЦИЯ МЕТОДОЛОГИЙ ПРОГРАММИРОВАНИЯ
• Были разработаны различные механизмы передачи параметров.
• Были заложены основания для структурного программирования,
что выражалось в появлении языковой поддержки механизмов
вложенности подпрограмм и научной разработке структур управления и областей видимости.
• Возникли методы структурного проектирования, основой которых служило использование процедур или подпрограмм в качестве отдельных строительных блоков.

Data (global scope)

Subroutines

Inner subroutines and data

Program
Рис. 1.2: Топология языков программирования конца второго и начала
третьего поколения

1.1. ПОКОЛЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

1.1.3

11

Модульность, как единица построения программных
систем, или третье поколение языков