Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0911136_3EEB9_volkov_m_a_informatika_kurs_lekci...doc
Скачиваний:
7
Добавлен:
13.11.2019
Размер:
618.5 Кб
Скачать

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

Языки программирования по своим возможностям и времени создания принято делить на несколько поколений (Generation Language, GL). К сегодняшнему дню насчитывается пять поколений языков. Каждое из последующих поколений языков по своей функциональной мощности качественно отличается от предыдущего.

В первое поколение входят языки, созданные в 40-50-х годах, когда компьютеры только появились на свет. В то время программы писались в машинных кодах, т. е. каждая компьютерная команда вместе с ее операндами вводилась в ЭВМ в двоичном виде. Это требовало огромных усилий по набору цифровых текстов и приводило к множеству трудноуловимых ошибок. В начале 50-х годов был написан первый ассемблер. Он позволял задавать названия команд в символическом виде и указывать числа не только в двоичном, но и в десятичном или шестнадцатеричном формате, что существенно облегчало работу программистов.  Языки первого поколения продолжают использоваться и сегодня, хотя в значительно меньшем объеме. Чаще всего приходится писать программы в машинных кодах для новых микропроцессоров, для которых еще не разработаны компиляторы, поддерживающие требуемый набор команд.

Расцвет второго поколения языков программирования (2 GL) пришёлся на конец 50-х – начало 60-х гг. Был создан символический ассемблер, позволявший писать программы без привязки к конкретным адресам памяти. В него было введено понятие переменной, и он, по сути, стал первым настоящим языком программирования со своим компилятором. Скорость разработки и эффективность функционирования программ резко возросли. Ассемблеры активно применяются в настоящее время, как правило, для создания программ, максимально использующих возможности аппаратуры  -  различных драйверов, модулей состыковки с нестандартным оборудованием и т. д. В некоторых областях, например в машинной графике, на ассемблере пишутся библиотеки, эффективно реализующие стандартные алгоритмы обработки изображений. Кроме того, среди программистов просто есть немало людей, предпочитающих использовать ассемблер в своей работе.

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

Подавляющее большинство языков 3 GL успешно применяется и сегодня. Современные компиляторы с интегрированными средами разработки предоставляют очень удобные средства поддержки процесса создания программ, легко осваиваемые студентами первых курсов, благодаря чему простые в освоении языки третьего поколения используются для разработки программ абсолютным большинством людей, зарабатывающих на жизнь программированием. Практически все современные коммерческие продукты, рассчитанные на массовый рынок, написаны на языках третьего поколения.

С начала 70-х годов по настоящее время продолжается период языков четвертого поколения. Происходит активное развитие систем программ-мирования с ориентацией на реализацию крупных проектов, повышение надежности и скорости создания программных продуктов. Они обычно ориентированы на специализированные области применения, где хороших результатов добиваются, используя проблемно-ориентированные языки. Целью создания языков 4 GL было стремление увеличить скорость разработки проектов, уменьшить число ошибок и повысить общую надежность работы больших программных комплексов, получить возможность быстро и легко вносить изменения в готовые проекты, активно внедрять технологии визуальной разработки и т.д. Все языки четвертого поколения интегрированы в мощные пользовательские оболочки и обладают простым и удобным интерфейсом. Они чаще всего используются для проектирования баз данных и работы с ними (встроенные языки СУБД), что объясняется возможностью формализации всех понятий, используемых при построении баз данных. Языки 4 GL активно применяются в различных специализированных областях, где высоких результатов можно добиться, используя проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области. Как правило, в эти языки встраиваются мощные примитивы, позволяющие в одном операторе описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи строк кода.

Однако тем, кто использует языки 4 GL для создания законченных приложений, по-прежнему необходимо кодировать программу вручную с последовательным вводом команд. При этом сохраняется главный недостаток языков предыдущих поколений: ориентированы на чуждую человеческому мышлению чисто компьютерную идеологию (работа с памятью, переменными, базами данных, последовательностями абстрактных операторов и т. п.), что требует от людей хорошего понимания принципов функционирования компьютера и ОС.

  Рождение языков пятого поколения относится к середине 90-х годов. Сюда относят не только новые мощные языки, но и системы создания программ, ориентированные на непрограммиста. Подобные системы отличаются стремлением предоставить конечному пользователю-неспециалисту богатые возможности создания прикладных программ с помощью визуальных средств разработки без знания программирования. Главная идея, которая закладывается в эти системы, – возможность компьютерного интерактивного или полностью автоматического преобразования инструкций, вводимых в компьютер, наиболее удобными человеку методами в максимально наглядном виде, в текст на универсальных языках программирования, описывающий готовую программу. Автоматизация процесса получения результирующего кода программы имеет следствиями невысокую эффективность (это связано с внутренней сложностью таких систем и стремлением разрабатывать независимые от платформы продукты), но повышенную надежность и отсутствие ошибок.

Системы пятого поколения имеют открытую архитектуру и поддерживают большое количество продуктов третьих фирм, предоставляя пользователю возможность интеграции с готовыми решениями для различных областей. Это могут быть всевозможные визуальные редакторы, генераторы отчетов, стандартные библиотеки, удобные мастера быстрого создания типовых приложений, CASE-системы, средства интеграции с базами данных и т. п. Чем больше приложений удастся объединить в одном пакете, тем большими возможностями он будет обладать.

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

Существует, однако, и другое мнение на этот счет. Заключается оно в том, что языки пятого поколения являются именно языками программирования, требующими от разработчика соответствующей квалификации и умения составлять программы вручную. Сторонники этого мнения под языками 5GL понимают специализированные языки, оперирующие не абстрактными переменными, а понятиями своей предметной области. Это, как правило, узкоспециализированные языки, предоставляющие программисту мощные высокоуровневые возможности обработки информации из конкретной области знаний.

Программные комплексы с собственными языками программирования, интегрированные с базами знаний и экспертными системами, также относят к языкам пятого поколения.

  К перспективным направлениям развития систем 5 GL следует отнести логическое программирование, объектно-ориентированное программирование, исследовательское программирование, технологии управления базами знаний, методы обработки и анализа текстовой информации (энциклопедии, Web-страницы, документы) с возможностью смыслового поиска и т.д. Для создания достаточно сложных приложений планируется использовать различные экспертные системы и базы знаний со встроенными языками логического программирования, позволяющие автоматизировать многие рутинные процессы и помочь пользователю найти правильный путь решения тех или иных задач.