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

Обновлено: 04.07.2024

Свидетельство и скидка на обучение каждому участнику

Зарегистрироваться 15–17 марта 2022 г.

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

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

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

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

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

Третье поколение языков программирования (3 GL ) принято относить к 60-м годам. В это время родились языки, которые называют универ­сальными языками высокого уровня — с их помощью можно решать задачи из любых областей. Это общеизвестные Фортран, Кобол, Алгол и другие. Такие качества новых языков, как относительная простота, независимость от конкретного компьютера и возможность использования мощных синтаксических конструкций позволили резко повысить производительность труда программистов. Кроме того, понятная большинству пользователей процедурная идеология этих языков позволила привлечь к написанию небольших программ (как правило, расчетного или учетного характера) большое количество специалистов из некомпьютерных областей.

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

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

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

Рождение языков пятого поколения относится к началу этого века. Главная идея, которая закладывается в системы 5 GL , — возможность компьютерного интерактивного или полностью автоматического преобразования инструкций, вводимых в систему наиболее удобными человеку методами в максимально наглядном виде, в текст на универсальных языках программирования, описывающий готовую программу. Наличие промежуточного этапа (получение не готового исполняемого модуля, а только исходных текстов, требующих дальнейшей обработки) объясняется низкой эффективностью автоматически генерируемого кода приложений, созданных с использованием подобных систем пятого поколения. Это связано с внутренней сложностью последних и жела­нием создавать независимые от платформы продукты.

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

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

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

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

­ логическое программирование (Пролог-подобные языки и машины вывода);

­ исследовательское программирование (проект сложен и неясен, но средства разработки позволяют быстро создать шаблон программы и включать в него работающие фрагменты, постепенно приближаясь к конечному результату);

­ использование естественных языков для создания программ;

­ технологии управления базами знаний;

­ методы обработки и анализа текстовой информации (энциклопедии, Web -страницы, документы) с возможностью смыслового поиска и т.д.

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

Языки 5 GL , ориентированные на конкретные области применения, могут уже в ближайшее время завоевать самую широкую популярность. Наиболее перспективны продукты, позволяющие создавать при­ложения для работы с базами данных. Базы данных — это область информатики, наиболее успешно поддающаяся формализации. Наглядное подтверждение этому — тенденции развития практически всех известных СУБД корпоративного уровня. Вслед за встроенными языками СУБД появляются и другие проблемные языки программирования.

Пятница — самое время расслабиться и вспомнить, с чего все началось. Представляем вам краткий экскурс в историю разработки от GeekBrains.

Доисторическая эра

С точки зрения определения даты рождения языка программирования существует некоторая двойственность.

С одной стороны, в первой половине 19 века Ада Лавлейс описала вычислительную машину и ввела основополагающие понятия цикла и рабочей ячейки, за что получила гордое звание первой женщины-программиста.

С другой, первый язык программирования в современном представлении зародился лишь во время Второй мировой войны на релейной машине Z4 немецкого изобретателя Конрада Цузе. Его название Планкалкюль (нем. Plankalkül — исчисление планов), и это был полноценный язык высокого уровня, поддерживающий условные операторы, арифметические операции, массивы, циклы, исключения и утверждения. Доподлинно известно, что в конце 40-х годов Планкалкюль позволял ЭВМ решать шахматные задачи.
Изобретение Цузе могло бы изменить ход истории, однако итоги войны и усилия американцев по популяризации собственного машинного языка отложили полноценное явление миру Планкалкюля вплоть до 1972 года.



Z4 в Немецком музее, Мюнхен

Языки для компьютеров

Вместо этого эволюция пошла по пути машинного языка. Он был удобен для компьютеров, но не очень удобен для программистов. Это была буквально работа с железом вручную: были лишь те команды, которые были зашиты в процессор, все остальные операции приходилось реализовывать вручную.

Прямым развитием машинного языка стал язык ассемблера. Это был первый размен скорости на удобство: ассемблер был чуть менее нативным, но гораздо более дружелюбным к программисту. До языков высокого уровня, комфортных для программиста, было еще далеко.

Качественный скачок произошёл после изобретения транзистора и первых доступных компьютеров. Это побудило в период с 1954-1957 году компанию IBM активно работать над разработкой популярного коммерчески языка Fortran (от англ. Formula и Translation).

Fortran — язык для научных и инженерных вычислений. Считается, что именно он стал первым реализованным языком высокого уровня. Благодаря большому количеству математических библиотек Fortran был и остается важным языком для разного рода научных изысканий.

Далее началось бурное развитие программирования: практически одновременно появились Algol, алгоритмический высокоуровневый язык, активно использовавшийся в СССР и Европе, LISP и COBOL.

Языки для народа

Но по-настоящему массовым программирование стало с появлением языка BASIC в 1964 году. Преподаватели Дартмутского Колледжа Джон Кемени и Томас Курц разработали его для обучения студентов основам программирования ЭВМ.

BASIC был алгоритмическим языком, для его создателей было важно не быстродействие и эффективность, а легкое понимание. Тем не менее BASIC быстро обрёл популярность в реализациях от Microsoft и Apple. Но не все были им довольны. По мнению противников языка простота и бесструктурность ранних версий BASIC поощряли применение порочных и опасных методик разработки.

Кайнозой

В 1960-х годах компания Bell Labs всерьёз взялась за разработку операционной системы Unix для своих миникомпьютеров. Первые ОС были написаны на ассемблере, но эксперимент оказался неудачным.
Потом в алфавитном порядке Кеном Томпсоном и Деннисом Ритчи был специально разработан интерпретируемый язык B (Би), но и в этот раз результат оставлял желать лучшего.

В другом полушарии на останках языка Algol-68 Никлаус Вирт разработал Pascal. Цель он преследовал ту же самую, что и BASIC — простота в обучении и наглядность выполняемых операций.

Несмотря на внешнюю незамысловатость, Pascal оказался крайне эффективным языком не только в деле обучения, но и в серьезной разработке. Он остаётся крайне востребованным как в школах, так и в мире больших приложений: Total Commander, WinRAR, ранние версии Skype и Nero Burning ROM были написаны на Pascal.

Сегодня Perl по-прежнему активно используется в качестве удобного средства обработки текста в командной строке, но не меньше востребован и в системном администрировании, веб-разработке и даже играх.

Современность

Впрочем, теми же самыми характеристиками можно описать и Ruby, увидевший свет в 1995 году, с поправкой на то, что у Юкихиро Мацумото было 2 года, чтобы подумать, чем его язык может стать лучше современников.

Развитие интернета в конце XX века требовало более качественных языков обработки текста и данных. Так на свет появились HTML, PHP, CSS и JavaScript, без которых сегодня очень трудно представить веб-разработку.

Вместе с этим появился и Java — объектно-ориентированный язык, использующий виртуальную машину JVM. Это обеспечивает языку практически полную независимость от машины, на которой производится запуск. Совокупность этих факторов и популярность смартфонов c ОС Android позволяет Java возглавлять список самых популярных языков по версии Tiobe, а нам — рекомендовать его начинающим разработчикам в качестве первого или основного.

Если взглянуть на этот же самый рейтинг, в конце второго десятка можно отыскать современные языки программирования. Например, Swift — продукт компании Apple, популярный не только за счет своих качеств, но и благодаря громкому имени производителя.

Будущее

Уже сейчас появляются языки программирования, которые можно назвать языками сверхвысокого уровня. Они предназначены не для написания прикладных программ, а для обработки больших массивов данных и статистики. В их числе R, MATLAB и Julia.
Можно предполагать, что в будущем появятся человекоориентированные языки, на которых написать программу будет не сложнее, чем пост в ЖЖ. С другой стороны, квантовые компьютеры потребуют свой особый, квантовый ассемблер.

Как думаете, что будет дальше, и на какой из существующих языков поставите вы?

Для языков программирования, сгруппированных по предкам, см. Список поколений языков программирования.

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

Содержание

Поколения

Первое поколение (1GL)

Язык программирования первого поколения (1GL) - это машинный уровень язык программирования. [1]

Язык программирования первого поколения (1GL) - это группа языков программирования, которые являются языками машинного уровня, используемыми для программирования. компьютеры первого поколения. Изначально нет переводчик привык к компилировать или же собрать язык первого поколения. Инструкции по программированию первого поколения вводились через Передняя панель переключатели компьютерной системы.

Инструкции в 1GL составлены из двоичные числа, представленные единицами и нулями. Это делает язык подходящим для понимания машины, но гораздо более трудным для интерпретации и изучения человеком-программистом.

Второе поколение (2GL)

Язык программирования второго поколения (2GL) - это способ определения категорий языки ассемблера. [1] [2] [3]

Третье поколение (3GL)

3GL гораздо более независимы от машины и более удобны для программистов. Это включает в себя такие функции, как улучшенная поддержка агрегированных типов данных и выражение концепций таким образом, чтобы это было удобно для программиста, а не для компьютера. Язык третьего поколения лучше, чем язык второго поколения, поскольку компьютер заботится о несущественных деталях. 3GL более абстрактны, чем языки предыдущих поколений, и поэтому могут считаться языками более высокого уровня, чем их аналоги первого и второго поколений. Впервые представленный в конце 1950-х годов, Фортран, АЛГОЛ, и КОБОЛ являются примерами ранних 3GL.

Четвертое поколение (4GL)

Пятое поколение (5GL)

Язык программирования пятого поколения (5GL) - это любой язык программирования основан на решении проблем с использованием ограничений, заданных программе, а не на использовании алгоритм написано программистом. [6] Наиболее на основе ограничений и логическое программирование языки и некоторые другие декларативные языки являются языками пятого поколения.

Пока языки программирования четвертого поколения предназначены для создания конкретных программ, языки пятого поколения предназначены для того, чтобы компьютер мог решить данную проблему без участия программиста. Таким образом, пользователю нужно беспокоиться только о том, какие проблемы необходимо решить и какие условия должны быть выполнены, не беспокоясь о том, как реализовать процедуру или алгоритм для их решения. Языки пятого поколения используются в основном в искусственный интеллект исследование. OPS5 и Меркурий являются примерами языков пятого поколения, [7] как есть ICAD, который был построен на Лисп. KL-ONE является примером связанной идеи, язык фреймов.

История

Изначально все языки программирования более высокого уровня, чем ассемблер, назывались "третье поколение", но позже термин"четвертое поколение"был введен, чтобы попытаться дифференцировать (тогда) новые декларативные языки (Такие как Пролог и предметно-ориентированные языки), которые утверждали, что работают на еще более высоком уровне и в предметной области, даже более близкой к пользователю (например, на уровне естественного языка), чем исходные, императивные языки высокого уровня, такие как Паскаль, C, АЛГОЛ, Фортран, БАЗОВЫЙ, так далее.

Язык программирования - это искусственный язык. Он отличиться от естественного ограниченным, достаточно малым количеством числом слов, значение которых понятно компьютеру (транслятору), и очень строгими правилами записи команд (операторов).

Программа – это логически упорядоченная последовательность команд необходимая для управления компьютером.

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

До сих пор п редставление набора команд, в виде последовательности двоичных кодов называется программой.

В итоге языки первого поколения это и были двоичные коды, на которых создавались первые программы для ЭВМ, пусть это было топорно примитивно но это работало.

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

Принято считать команды в двоичных кодах языком первого поколения. Они обладали определенными особенностями:

2) Каждое устройство обладало своим уникальным набором команд, которые не повторялись во всей спроектированной ЭВМ.



Вывод результата мог происходить как на перфоленту так и в виде световой индикации на пульте управления ЭВМ.




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

Благодаря появлению контроллеров оборудования, программист мог больше не заботиться о знании всех команд этого устройства а достаточно было знать набор команд отдельного контролера, а дальше управление устройством была забота платы которая знала что с ним делать.

Д ля упрощения создания программ в 1950 году было принято решение создать язык assembly это и послужило появлению языков второго поколения. Языки второго поколения позволили представить машинный код в более удобной для человека форме для обозначения команд и объектов, над которыми эти команды выполняются, вместо двоичных кодов использовались буквы или сокращенные слова, которые отражали суть команды.

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

Читайте также: