Файл: Высокоуровневые языки программирования (Языки программирования).pdf
Добавлен: 22.04.2023
Просмотров: 296
Скачиваний: 2
Языки программирования можно классифицировать по типам задач.
Задачи искусственного интеллекта – Пролог, Лисп, Рефал.
Параллельные вычисления – параллельный Кобол, Fun, Apl. Время появления таких языков отводится на 1980 год. Эти языки обладают высокой функциональностью в системах реального времени, узким спектром применения и высокой себестоимостью разработки небольших программ.
Задачи вычислительной математики – параллельный Кобол, РА, Occam.
Разработка интерфейса – Ассемблер, Макроассемблер, Ява.
Задачи вычислительного характера – Алгол, Фортран, Кобол, Ада.
Разработка программ оболочек – Ассемблер, Макроассемблер, Ява.
Оформление документов, обработка больших текстовых данных – Natural, Perl.
К языкам программирования сверхвысокого уровня можно отнести лишь Алгол-98 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.
Языки программирования можно разделить на поколения:
- языки первого поколения (начало 1950 годов): машинно-ориентированные языки с ручным управлением памяти на компьютерах первого поколения (сложны в управлении, требуют хорошего знания архитектуры и работы персонального компьютера). Основная отличительная особенность языков первых компьютеров – это ориентирование на конкретный компьютер. Языки программирования первого поколения представляют собой набор команд в двоичном или восьмеричном коде, который определялся конкретной архитектурой персонального компьютера. Каждый тип электронно-вычислительной машины имел свой язык программирования, а программы были пригодны только для него, для этого типа. От программиста требовалось знание не только языка программирования, но и знать архитектуры ЭВМ.
- языки второго поколения (конец 1950 – начало 1960 годов): с мнемоническим представлением команд (более удобны в усвоении и использовании). Вместо двоичных и восьмеричных кодов стали использоваться мнемонические символьные обозначения. Это явилось существенным шагом в развитии. Ассемблерные языки по-прежнему остались машинно-зависимыми, а программист так и должен был хорошо знать архитектуру ЭВМ и язык программирования. Программы все также затруднительны в чтении, трудоемки в отладке, требует больших усилий при переносе с одной электронно-вычислительной машины на другую. Основная отличительная особенность – это ориентирование на абстрактный компьютер с той же системой команд.
- языки третьего поколения (1960 год): общего назначения, используемые для создания специальных прикладных программ, для управления базами данных (еще проще в усвоение, нежели языки второго поколения). Основная отличительная особенность – это ориентирование на алгоритм. Третье поколение языков программирования началось в 1956 году с появления первого языка высокого уровня - Фортрана. За сравнительно небольшой отрезок времени этот язык стал основным языком программирования при решении научных, инженерно-технических задач. Первоначально Фортран имел ограниченные средства обеспечения работы с символьной информацией и с системой ввода-вывода. Однако постоянное его развитие сделало его самым распространенным ЯВУ. Вскоре после этого языка появляются такие языки, как Алгол, Бейсик, Паскаль, Ада, Кобол. Всего в мире существует около 200 популярных языков программирования третьего уровня.
- языки четвертного поколения (начало 1970 и по сегодняшний день): усовершенствованные, разработанные для специальных прикладных программ (ориентированы на непрофессионального пользователя). Языки программирования этого поколения носят ярко выраженный непроцедурный характер. В программах теперь формируется скорее соотношение, нежели последовательность шагов выполнения алгоритма. Эти языки более пригодны для применения непрофессионалами в области программирования. Отличительная особенность данных языков – это приближение к человеческой речи. Некоторые языки имеют черты и третьего и четвертого поколения одновременно.
- языки пятого поколения: объектно-ориентированные языки, визуальные (ориентированы на повышение интеллектуального уровня электронно-вычислительных машин и интерфейса с языками).
Языки программирования можно также разделить на компилируемые и интерпретируемые.
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется в набор инструкций для данного типа процессора и далее записывается в исполнимый модуль, который может быть запущен на выполнение и как отдельная программа. Таким образом, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.
Если текст программы написан на интерпретируемом языке, то интерпретатор непосредственно выполняет исходный текст без предварительного перевода. Программа остается на исходном языке и не может быть запущена без интерпретатора. Процессор компьютера – это интерпретатор машинного языка.
Компилятор переводит исходный текст программы на машинный язык целиком, а интерпретатор выполняет исходный текст прямо во время исполнения программы.
Данная классификация является условной. Так как, например, для любого компилируемого языка (паскаль) можно написать интерпретатор. Большинство современных интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в высокоуровневое промежуточное представление.
Для любого интерпретируемого языка можно создать компилятор. Например, язык Лисп, изначально интерпретируемый, может компилироваться без каких – либо ограничений. Созданный во время выполнения программы код может быть также динамически компилироваться во время выполнения.
Скомпилированные программы, как правило, выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены н машинный язык. Но при каждом изменение текста программы требуется ее перекомпиляция, а это создает определенные трудности при работе. Следует отметить, что скомпилированная программа может выполняться только на том компьютера и с той операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для компьютера другого типа, требуется новая компиляция.
Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями. Программы можно запускать сразу же после изменения, что облегчает разработку. Программа на интерпретируемом языке может быть запущена на разных типах компьютеров и операционных систем.
Интерпретированные программы могут выполняться медленнее, чем компилируемые, кроме того они не могут выполняться без дополнительной программы - интерпретатора.
Такие языки программирования, как Java и C#, находятся между компилируемыми и интерпретируемыми. То есть программа компилируется не в машинный язык, а в машинно – независимый код низкого уровня, байт - код. Для выполнения байт – кода используется интерпретация, несмотря на то, что отдельные части этого кода для ускорения работы могут быть транслированы в машинный код непосредственно во время выполнения программы.
Можно просмотреть статистику по использованию языков программирования за последние три года.
2011 год – Паскаль – 104, Си++ - 120, Бейсик – 1, Java – 0.
2012 год – Паскаль – 96, Си++ - 133, Бейсик – 1, Java – 6.
2013 год – Паскаль – 59, Си++ - 165,5, Бейсик – 0, Java - 5.
На основе приведенной статистики, можно сделать вывод, что происходит сокращение использования таких языков как Паскаль, Бейсик, но увеличивается использование Си++, Java.
Мы увидели, что из – за большого количества языков программирования, их различных возможностей, свойств, классификацией достаточно много.
3. Высокоуровневый язык программирования
Реальный скачок в программировании был сделан при появлении языков высокого уровня: Алгола, Фортрана и, позднее, КОБОЛА. Эти языки позволяют писать программы текстом, похожим на английский язык. Компилятор получает каждую команду и преобразует ее в машинный код. Он позволяет использовать имена (переменные) для представления элементов данных так, что одна и та же программа может быть использована с любыми входными данными. Программы, написанные на языках высокого уровня, более компактны, легче для понимания, а вероятность появления в них ошибок меньше.
Недостаток этих программ в том, что компиляция часто приводит к избыточному коду, содержащему лишние сложные подпрограммы, включенные в конечную исполняемую программу. Это также уменьшает скорость работы программы.
Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942-1946г. Однако транслятора для него не существовало до 2000 г. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка.
Ранние языки высокого уровня были довольно специализированными: Фортран (FORmula TRANslation) был предназначен для использования в научных целях, КОБОЛ (Common business Orientated Language) – для использования в мире бизнеса. Появление в 50-х гг. языка BASIC (Beginners All-purpose Symbolic Instruction Code) закрыло существовавший в языках высокого уровня пробел между языками для науки и для бизнеса. BASIC в равной степени годится для любых задач и в то же время достаточно прост для изучения.
Тем временем были изобретены новые методы программирования, которые привели к новой волне языков высокого уровня. Одним из этих языков, выдержавших проверку временем, является основанный на методах структурного программирования Pascal.
Высокоуровневый язык программирования – язык программирования, разработанный для быстроты и удобства использования программистом. Основная черта высокоуровневых языков — это абстракция, то есть введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, описания которых на машинном коде (или другом низкоуровневом языке программирования) очень длинны и сложны для понимания.
Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным.
Такого рода оторванность высокоуровневых языков от аппаратной реализации компьютера помимо множества плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к используемому оборудованию. Программы, написанные на языках высокого уровня, проще для понимания программистом, но менее эффективны, чем их аналоги, создаваемые при помощи низкоуровневых языков. Одним из следствий этого стало добавление поддержки того или иного языка низкого уровня (язык ассемблера) в ряд современных профессиональных высокоуровневых языков программирования.
Примеры: C, C++, Visual Basic, Java, Python, PHP, Ruby, Perl, Delphi (Pascal). Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.
К языкам высокого уровня относят:
- проблемно-ориентированные (имеют средства для организа ции структур данных, описания алгоритмов и ориентированы на решение задач определенного класса): Фортран, Алгол, Кобол, Ада и др.;
- универсальные: Алгол 68, PL/1, Паскаль, QBasic, C, C++, С# и дp.;
- языки проектирования программ (системы программирова ния) – в настоящее время имеют самый высокий уровень аб стракции, они расширяются не как языки описания процесса обработки данных, а как средства описания задач: Visual Basic, Delphi, MS Visual C++, Borland C++ Builder и др.;
- языки гипертекстовой разметки, такие, как HTML – набор кодов, который вводится в документ для обозначения, напри мер, связей между его частями. Команды HTML обеспечива ют соединение сайтов и главных страниц WWW (Всемирной паутины сети Интернет) при помощи гиперссылок и указывают Web-браузеру (программе навигации) способ расположе ния массивов данных;
- языки описания сценариев – макросы, в которых объедине ны отдельные команды, управляющие средой в соответствии с их списком – программой: (например состоящие из имено ванных последовательностей совокупности указанных нажа тий клавиш при работе с пакетом Microsoft Office);
- языки моделирования систем: например, GPSS (General Purpose Simulating System) позволяет автоматизировать при моделировании процесс программирования моделей. Язык построен в предположении, что моделью сложной дискретной системы является описание ее элементов и логических правил их взаимодействия. Для определенного класса моделируемых систем выделяют небольшой набор абстрактных элементов объектов. Набор логических правил ограничен и может быть описан небольшим числом стандартных операций. Комплекс программ, описывающих функционирование объектов и выполняющих логические операции, является основой для создания программной модели систем данного класса.
4. Понятие об алгоритме
Алгоритм - это одно из самых широких понятий математики и информатики.
Более 1000 лет назад в Багдаде, крупном научном центре Востока, жил абд Джафар Мужамед ибн Муса Аль-Хорезми. Ему принадлежит книга по математике, которая в течение нескольких столетий пользовалась широкой популярностью. В ней Аль-Хорезми сформулировал правила выполнения четырёх арифметических действий над многозначными числами.
При переводе на латынь имя автора переделали в Algorithmi (Алгоритми). В книге Аль-Хорезми приводились методы решения разных задач. Ссылаясь на них, европейцы упоминали: "Так говорил Алгоритми..." Со временем методы решения задач стали называться алгоритмами. В дальнейшем алгоритмом стали называть описание любой последовательности действий, которую следует выполнить для решения задачи.
Алгоритм – строго упорядоченная последовательность действий, направленная на выполнение поставленной задачи.
В широком смысле алгоритмизация включает в себя выбор метода решения задачи. Результатом выполнения этапа алгоритмизации является алгоритм решения задачи.
В повседневной жизни нам приходится часто пользоваться всевозможными алгоритмами. Например, алгоритм действий, необходимый для того, чтобы поговорить с кем-либо по телефону:
- узнать необходимый телефонный номер;
- поднять трубку;
- набрать номер;
- дождаться ответа абонента.
Мы пользуемся подобными алгоритмами достаточно часто, поэтому выполняет их автоматически (не задумываясь).
Алгоритмы, предназначены для выполнения компьютерами, обычно называются компьютерными программами, или просто программами. Программа содержит команды на языке, понятном компьютеру. Она сообщает компьютеру, как надо обрабатывать данные для получения желаемого результата. Все функции компьютера, любое его действие задается программой.
Программа - это алгоритм, представленный на языке, понятном компьютеру.
4.1 Разветвляющийся алгоритм
Алгоритмы исполняют в естественном порядке: команда за командой (смотрите повторение). Однако жизнь весьма разнообразна. А цели все же хочется достичь.
Вот и ученик, собираясь в школу, продумывает следующие действия:
- Если чувствует себя хорошо, то собирается в школу
- Иначе - остается дома.