Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по Информатике.doc
Скачиваний:
49
Добавлен:
15.04.2015
Размер:
257.54 Кб
Скачать

2. История развития

Развитие языков программирования определялось в первую очередь изменениями потребностей пользователей (что выражалось в распределении затрат на разные этапы решения задачи с помощью ЭВМ).

Первые ЭВМ позволяли программировать задачи только на машинном языке, что было связано с невозможностью использовать какие-либо программы- трансляторы. Так как основные затраты при работе на этих ЭВМ были связаны с записью программ в машинных (двоичных) кодах, основные усилия системных программистов направлялись на создание средств автоматизации кодирования, которые получили название автокодов (позднее получивших название ассемблеров). Это позволило на порядок сократить время разработки и отладки программ. Конечно использование таких языков стало возможным после достаточного увеличения ОП и появления устройств ввода и вывода символьной информации. Эти языки получили название языков программирования 1-го поколения.

С конца 50-х годов возрастание размеров программ, написанных на машинно-зависимых языках приводит к большим затратам на отладку программ. Для сокращения текстов программ и повышения их наглядности постепенно происходит переход на языки 2-го поколения, больше подходящие для описания решения задачи, а не ориентированные на возможности ЭВМ. Такие языки получают название "алгоритмических". В качестве примеров можно назвать ФОРТРАН (название произошло от "Формульного Транслятора"), АЛГОЛ-60, ЛИСП и др. Первую версию языка ФОРТРАН разработал Дж.Бэкус и фирма IBM в 1956, а первый транслятор с ФОРТРАНа начал работать в 1958 году. В 1962 году сформировался вариант языка с обозначением ФОРТРАН-IV, долгое время являвшимся самым распространенным языком в мире.

Общее количество языков, разработанных к середине 60-х годов, составляло порядка трех тысяч, хотя большинство из них использовалось только разработчиками и их ближайшими знакомыми.

С середины 60-х годов происходит интеграция накопленного "языкового" опыта в универсальных языках высокого уровня (относящихся к 3-му поколению) , таких как ПЛ/1, АЛГОЛ-68, СИМУЛА. В них сделана попытка объединить возможности всех ранее разработанных языков с целью перехода к единому языку программирования. На этих языках, казалось, можно было написать любую программу. Например, в язык ПЛ/1 были включены практически все используемые в прикладных задачах простые типы данных и возможности построения любых составных конструкций.

Хотя этот язык сильно критиковали за сложность, вседозволенность, следует отметить, что за 25 лет с момента его создания он практически не изменялся (в отличие от, например, ФОРТРАНА). Системные программисты, а также прикладные программисты, работающие в новых областях науки активно использовали этот язык, но ему не удалось вытеснить старые языки ФОРТРАН или КОБОЛ из-за огромного объема ранее разработанных программных продуктов, библиотек подпрограмм и из-за консерватизма непрофессиональных программистов.

Важнейшей особенностью этого периода являлось появление очень больших по объему программ, создаваемых коллективами авторов. Написание программ становилось менее сложным делом, чем их отладка и документальное сопровождение. Всякая модификация программ приводила к появлению все новых ошибок. Поэтому, несмотря на интенсивное развитие инструментальных средств, производительность труда программистов с начала 70-х годов перестала расти. Срывались сроки разработки, программы становились дороже и ненадежнее. Увеличение ресурсов (денег, людей) не приводило к ускорению работы. Эта ситуация получила название "кризиса программирования".

Преодоление кризиса началось с работы Боэма "Программная инженерия", вышедшая в 1976 году, в которой было показано, что основные затраты на программный продукт приходятся на сопровождение, а не на разработку. Поэтому важнейшими аспектами становятся технология программирования и "прозрачность" ПО. На смену "хитроумным" программам написанным на громоздких языках приходят простые понятные библиотеки подпрограмм, часто в виде исходных текстов на таких языках как Паскаль, Си, Бейсик. Этому способствует переход на ПЭВМ, на которых просто невозможно реализовать трансляторы с мощных универсальных языков ПЛ или АЛГОЛ-68.

Языками программирования 80-х годов стали языки, реализованные на персональных ЭВМ. К ним в первую очередь относятся Си, Паскаль, Форт, Бейсик, ФОРТРАН-77. Все они относятся к классическим алгоритмическим проблемно-ориентированным операторным языкам, хотя и сильно отличаются друг от друга. Эти языки программирования относят к 4 поколению.

Язык Си был разработан Д.Ритчи в 1972 году и предназначался в первую очередь для переноса программ с одной ЭВМ на другую. Он стал активно применяться после того, как очередная версия операционной системы UNIX была написана на Си. В этом языке сочетаются возможности языка высокого уровня с доступностью адресации аппаратных средств ЭВМ и отсутствием многих ограничений, присущих другим языкам, поэтому он является в настоящее время основным языком системного программирования.

Процедурно ориентированный язык Паскаль был разработан Н.Виртом в 1971 году. Первоначально он использовался для обучения студентов принципам программирования, но в силу ясности, выразительности и высокой эффективности разработанных трансляторов, стал широко применяться для решения вычислительных и информационно-логических задач, а иногда и для вопросов системного программирования. Оказался очень удобен для реализации графики на ПЭВМ.

Язык ФОРТ разрабатывался исключительно для микро-ЭВМ и ориентирован на создание очень эффективных программ в условиях малых аппаратных ресурсов. Система ФОРТ очень компактна, например интерпретатор и словарь системных слов занимают всего 8 Кбайт. Особенностью языка является хранение операндов в стеке, а сама программа имеет вид строк в обратной польской записи. Программист может любую программную строку обозначить заданным символом, который затем может использовать наравне с системными операторами. Это позволяет на основе языка ФОРТ строить специализированные языки для конкретных приложений, поэтому его называют гибким расширяемым языком. Недостатком является непривычная форма записи программ и сложность использования в больших программных комплексах.

ФОРТРАН-77 представляет версию расширенного языка ФОРТРАН, широко используемый в научных расчетах. До языка ФОРТРАН-77 наиболее распространенным языком был ФОРТРАН-66, чаще называемый ФОРТРАН-IV. Следующим годом пересмотра стандарта ФОРТРАНа стал 1986 год, хотя внесенные изменения оказались уже не столь существенными и ФОРТРАН-86 не сумел вытеснить предыдущую версию.

Язык БЕЙСИК был первоначально разработан группой студентов Дартмутского колледжа в 1963 году для обучения программированию. Широкое распространение получил с появлением ПЭВМ, так как на первых машинах являлся единственным алгоритмическим языком программирования. До последнего времени являлся очень простым языком с ограниченными возможностями. Реализовывался в форме интерпретатора, работающего в интерактивном режиме. К сожалению, не имел и практически не имеет стандарта, поэтому на разных ЭВМ имеет различные диалекты, часто несовместимые (и, соответственно, не переносимые с машины на машину). В настоящее время на IBM-совместимых ПЭВМ есть версии БЕЙСИКа с мощными оболочками, включающими интерпретаторы, компилятор, отладчики и прочие составляющие системы программирования.

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

Современные языки программирования, хотя и выросли в недрах языков четвертого поколения (и часто имеют то же название, но более старшую версию), опираются на совершенно иной подход к программированию. В их основе лежит подход к обрабатываемым данным как основе программы. В центр ставятся понятия объектов, объединенных в классы данных, а программа представляет собой описания связей между объектами. Такой подход называется "объектным программированием". В качестве примеров языков этого поколения можно назвать Турбо Паскаль 7-ой версии, С++, Ада, Модула 2, Турбо Пролог.