Файл: Обзор и анализ характеристик языков программирования (подробно).pdf
Добавлен: 06.04.2023
Просмотров: 101
Скачиваний: 1
СОДЕРЖАНИЕ
1. Процедурные (императивные) языки программирования
1.1 Языки программирования низкого уровня
1.2 Языки программирования высокого уровня
2 Непроцедурные языки программирования
2.1 Объектно-ориентированные, логические, функциональные языки программирования
С помощью языков низкого уровня создаются очень эффективные и компактные программы, потому что разработчик получает доступ ко всем возможностям процессора, хотя с другой стороны, для этого требуется хорошо понимать устройство компьютера, затрудняется отладка больших приложений, а окончательная программа не может быть перенесена на компьютер с другим типом процессора.[3] Такие языки чаще всего применяются для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, где основными требованиями становятся быстродействие, компактность, возможность прямого доступа к аппаратным ресурсам. Например, в машинной графике на языке ассемблера пишутся библиотеки, эффективно реализующие алгоритмы обработки изображений, требующие интенсивных вычислений. У каждого типа процессора свой язык ассемблера.
Ассемблер в переводе - сборщик частей в одно целое. Частями служат операторы, а результатом сборки – последовательность машинных команд. Процесс сборки носит название ассемблирование. Ассемблер машинно-зависимый язык низкого уровня, где короткие мнемонические имена соответствуют отдельным машинным командам. Он отражает особенности архитектуры конкретного типа компьютера. Программа, написанная на ассемблере, состоит из одного или нескольких модулей, а каждый модуль – из операторов. Язык Ассемблера избавляет программиста от утомительного труда по распределению памяти компьютера для команд, переменных и констант, обеспечивает возможность применения символических имен в исходной программе [18, С. 250].
Ассемблер позволяет также гибко и полно использовать технические возможности компьютера, как и язык машинных команд. Транслятор исходных программ в Ассемблере проще транслятора, требующегося для языка программирования высокого уровня. На Ассемблере можно написать столь же эффективную по размеру и времени выполнения программу, как и программу на языке машинных команд. Это достоинство отсутствует у языков высокого уровня. Его применяют для обеспечения работы информационно-измерительных комплексов, программирования систем реального времени, технологическими процессами и оборудованием. Кроме того, язык ассемблера дополняется средствами формирования макрокоманд, каждая из которых эквивалентна целой группе машинных команд.
Можно сделать вывод, что программы, написанные на языке ассемблера, требуют меньшего объема памяти и времени выполнения. Знание программистом языка ассемблера и машинного кода дает ему возможность понять архитектуру машины. Большинство специалистов в области программного обеспечения разрабатывают программы на языках высокого уровня, но наиболее мощное и эффективное программное обеспечение чаще всего полностью или частично написано на языке ассемблера [20, С. 199].
1.2 Языки программирования высокого уровня
Языки программирования высокого уровня проще в изучении и применении. Ими написанные программы можно использовать на любой компьютерной платформе, при условии, что для нее существует транслятор данного языка. Языки высокого уровня в большей степени ориентированы на человека. Их команды понятные человеку английские слова. Чем выше уровень языка, тем больше приходится проделать операций для выполнения необходимой команды. С появлением языков высокого уровня программисты имеют возможность больше времени уделять решению конкретной задачи, не отвлекаясь на вопросы организации процесса [8, С. 66]. Появление этих языков стало первым шагом на пути создания программ, которые вышли за пределы научно-исследовательских лабораторий и финансовых отделов. Языки высокого уровня в значительной мере являются машинно-независимыми. Они облегчают работу программиста и повышают надежность создаваемых программ; конструкции операторов задаются в удобном для человека виде; поддерживается широкий набор типов данных.
Бейсик созданный американцами Д. Кемени и Т. Курцав в 1963 году, считается самым простейшим. Однако простота языка программирования оборачивалась трудностями структурирования. Он создавался в качестве учебного языка, средствами которого легко можно представить принципы создания алгоритмов. Основным удобством Бейсика является небольшой размер интерпретатора: существуют реализации, в которых он занимает всего несколько кбайт. В простых 8-разрядных компьютерах это свойство используют для встраивания интерпретатора в микросхему постоянного запоминающего устройства, чтобы компьютер сразу при включении был готов к исполнению команд и программ Бейсика. Этот язык хорошо подходит для алгоритмического программирования. Можно создавать программы длиной до 100-200 операторов [23, С. 54].
Язык Fortran является одним из первых языков, который получил широкое признание и сегодня он применяется в области научных вычислений. За 50 лет существования он претерпел многие изменения, его называли устаревшим, но он продолжает существовать и развиваться. Его создатель фирма IBM (1957 г). Программисты того времени не были уверены в целесообразности использования языков высокого уровня. Главной целью разработки начальной версии языка было обеспечение эффективности выполнения программ. Языковые структуры были достаточно просты. Для написания программы применялся простой текстовый редактор, а компилятор Fortran транслировал программу в исполняемый код. Можно сказать, что Fortran 77 и Fortran 95 это языки разного уровня [12, С. 148].
В Fortran 95 добавлены почти все современные возможности управления и представления данных, которые в классическом языке отсутствуют, поэтому Fortran 2008 является языком уровня Ada и C++. Программа на языке Fortran состоит из главной программы и набора подпрограмм, каждая из которых компилируется отдельно. Окончательное объединение оттранслированных программ в заданную форму происходит при загрузке. Каждая подпрограмма компилируется в статически размещаемый сегмент кода и запись активации. Во время выполнения программы в распределении памяти никаких изменений не происходит, так как распределение памяти выполняется статически до начала работы программы [5, С. 33].
В языке Fortran задано мало типов данных: четыре типа числовых данных (целые, вещественные, комплексные числа, вещественные с двойной точностью), булевы данные, массивы, строки символов и файлы. Данный язык предназначен для научных вычислений, и имеет много встроенных математических операций.
В 1960 году был создан язык программирования Cobol. Он предназначался как язык для создания коммерческих приложений. На нем написаны тысячи прикладных коммерческих систем. Отличительной особенностью языка является возможность эффективной работы с большими массивами данных, что характерно для коммерческих приложений. структуре и не смотря на то, что Кобол во многом напоминает Фортран, его популярность достаточна высока и сейчас. При всех его недостатках появляются новые диалекты и реализации.
Язык C был разработан в 1972 году Дэнисом Ритчи и Кеном Томпсоном. По стилю он похож на Algol и Pascal. Это небольшой, но универсальный язык с ограниченным набором операторов и возможностей. Органичность простого синтаксиса и высокой эффективности вычислений закрепили за ним славу самого популярного языка системного программирования [14, С. 212]. Сегодня огромное число программистов применяют язык C. Вместе с языками C++ и Java, созданными на его основе, он оказывает существенное влияние на стиль программирования. Синтаксис и семантика большинства новых языков (Java, Perl, C#) основаны на понятиях, характерных для языка C.
При практическом программировании на языке C используются: препроцессор C; соглашения интерфейса C; библиотека C. Подключение большой библиотеки позволяет расширять функциональные возможности ядра языка. Модуль на языке C состоит из глобальных объявлений и последовательности вызовов функций. Для формирования одной выполняемой программы одновременно загружается несколько модулей. Каждая функция может вызывать другие функции и имеет доступ к локальным и глобальным переменным [6, С. 55]. В языке применяются указатели, что позволяет программам легко обращаться к элементам массивов. Строки рассматриваются как массивы символов.
Язык C содержит большой набор арифметических операций, чтобы писать очень эффективные и лаконичные программы. Предусмотрен полный набор операторов управления с довольно гибкой семантикой. Но, не смотря на это, C считается языком со слабой системой типизации. И хотя транслятор обнаружит ошибки, связанные с несоответствием типов, но поскольку большинство элементов данных относятся к целочисленному типу, многие ошибки могут остаться незамеченными [3, С. 52].
Язык С++ был разработан в 1980 году. Это компилируемый язык программирования, который позволяет создавать программы более компактные и эффективные, чем, например Бейсик. Из-за сложности, С++ обычно изучают в специализированных учебных заведениях для программистов. Сложность изучения С++ связана с тем, что в самом языке отсутствуют средства для управления вводом и выводом информации. С++ является абстрактным языком не ориентированным на конкретную модель компьютера. Чаще всего этот язык изучают не на конкретных примерах, а на абстрактных теоретических конструкциях. С++ производное от языка С. Очевидно, что многие заимствования обеспечили С++ мощными средствами низкого уровня, которые позволяют решать сложные задачи системного программирования. Различие заключается в разной степени внимания к типам и структурам данных. Это связано с появлением понятий класса, производного класса и виртуальной функции. Это предоставляет С++ более эффективные возможности для контроля типов данных и обеспечивает модульность программы [23, С. 72].
В отличие от традиционных структур Си и Паскаля, в С++ членами класса являются не только данные, но и функции. Функции имеют доступ к данным внутри объектов этого класса и обеспечивают интерфейс между этими объектами и остальной программой. Возможно, что язык С++ является средством объектного программирования новейшей методики проектирования и реализации программ, которая в будущем сможет заменить традиционное процедурное программирование. Значительно упростило изучение языка появление сред быстрого проектирования на С++. Они предоставляют готовые компоненты для ввода и вывода информации и поддерживают концепцию виртуального проектирования приложений Windows [16, С. 171].
Язык Паскаль был создан в 1970 году в Швейцарском Федеральном институте технологии Никласом Виртом. С его распространением появилось понятие о программировании, как о проектировании программ, которое в дальнейшем было развито другими языками и системами программирования. В основу языка Паскаль были положены принципы представленные Алголом, но с упрощенными правилами синтаксиса, что позволило языку после 1984 года получить большую популярность. Язык Паскаль впервые ввел принципиально новые типы данных и подвел программистов к понятию о структурном программировании. Достоинствами языка Паскаль являются:
1) возможность создавать сложные и мобильные программы;
2) простота, что позволяет быстро его осваивать и создавать алгоритмически сложные программы;
3) возможность структурного программирования, что делает программу наглядной и дает возможность для разработки и отладки;
4) наличие специальных методик создания трансляторов с Паскаля, что в результате упростило их разработку и поспособствовало широкому распространению языка;
5) развитые средства представления структур данных обеспечивают удобство работы с числовой, символьной и битовой информацией.
Главная идея какого-либо сложного понятия, в нашем случае, языка программирования называется парадигмой программирования [3, С. 87]. Применительно к языкам программирования различают следующие парадигмы, каждую из которых поддерживает свой вид языков программирования.
1. Императивное программирование. В этом случае задание для компьютера формируется в виде последовательности команд. Вычисления в них представляются как последовательность действий, производимых операторами.
2. Функциональное программирование. Здесь задание формируется посредством указания функций и задают вычисления как вызовы функций [21, С. 124].
3. Логическое программирование. В данном контексте применяются высказывания. Здесь языки программирования описывают вычисления с помощью формальной логики.
4. Объектно-ориентированное программирование использует объекты, а вычисления реализуются их совокупностью.
По итогам исследования первой части курсовой работы можно сделать следующие выводы.
1. Достоинством языков низкого уровня является то, что с их помощью создают самые эффективные программы (краткие и быстрые).
2. Недостаток языков низкого уровня в том, что их трудно изучать из-за необходимости понимать устройство процессора. Кроме того, программа, созданная на таком языке, неприменима для процессоров других типов.
3. Достоинства языков программирования высокого уровня следующие:
1) алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;
2) набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
3) формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных.