Файл: Классификация языков программирования высокого уровня.pdf
Добавлен: 31.03.2023
Просмотров: 106
Скачиваний: 1
СОДЕРЖАНИЕ
1. Теоретические основы изучения языков программирования высокого уровня
1.1. Классификация языков программирования
1.2. Понятие о языках программирования высокого уровня и их классификация
1.3. Классификация языков программирования высокого уровня
2. Практические аспекты изучения языков программирования высокого уровня
2.1. Языки программирования высокого уровня Lisp, Prolog, C++
2.2. Язык программирования высокого уровня Pascal
2.3. Язык программирования высокого уровня Basic
2.4. Язык программирования Java
Идея структурированного программирования оказалась актуальной и очень плодотворной, так как далеко не для всех задач можно написать программу, задав последовательность простых команд, не разделяя их на отдельные блоки. Фактически, об эффективной последовательности решения задачи можно судить лишь при наличии конкретной структуры программы.
Это стало особенно очевидным после того, когда примерно в 1970 году профессор Хоар опубликовал две статьи: «Аксиоматические основы компьютерного программирования» и «О структурной организации данных», в которых пытается осмыслить правильность создания программных алгоритмов с математической точки зрения.
Язык программирования Pascal является первым из языков, который имеет все инструменты, необходимые для проверки эффективности написанных программ [15, 71].
Ещё одна особенность Pascal - это его строгая типизация данных, среди которых образовался новый ранее не применявшийся тип - перечислимый. Фактор строгой типизации сделал Pascal дисциплинирующим языком, который приучил программиста к логическому мышлению [18, 47].
Pascal допускает несвязанный программный код (в отличие от языков COBOL и FORTRAN), что позволяет использовать произвольно большую численность пустых строк, подходящую в процессе форматирования при написании комментариев. Программа на Pascal даже написанная в одну строчку все равно будет работать при условии, что она написана в соответствии с правилами.
Но с распространением данного языка программирования было обнаружено, что в нем недостает множества элементов, которые мы привыкли видеть - возведения в степень, концепции локальной переменной, динамические массивы, способность использовать машинный язык. Наиболее известное выражение этого недостатка того времени - это статья Кернигана «Почему Pascal не является моим любимым языком программирования» [14, 76].
Одной из причин этой неудовлетворенности Pascal того времени была невозможность написания программы, состоящей из нескольких частей, так как для этого просто не было разработано механизмов. Но Никлаус Вирт и его коллеги в последующих выпусках Pascal устранили все эти недостатки, следуя всем принципам программирования.
Таким образом, долгое время Pascal не являлся языком, всецело удовлетворяющим запросам программистов.
2.3. Язык программирования высокого уровня Basic
Basic представляет собой универсальный код символических инструкций для начинающих - семейство языков программирования высокого уровня.
Basic был придуман учителями Дартмутского колледжа Томасом Курцем и Джоном Кемени в 1963 году и под их руководством был внедрен командой студентов колледжа. Со временем, когда появились иные диалекты, этот «оригинальный» диалект стал называться Dartmouth Basic [23, 76].
Basic был разработан таким образом, чтобы студенты, не обладая специальным математическим образованием, могли создавать программы. Он был разработан для решения проблем, связанных со сложностью более старых языков, и нацелен на более «простых» пользователей, которые меньше интересуются скоростью своих программ, чем возможностью применять компьютер при решении своих задач. С целью популяризации языка Basic первый компилятор был распространен бесплатно.
При разработке языка к нему были сформулированы 8 основных требований:
- общая цель (отсутствие специализации);
- простота в применении для начинающих;
- интерактивность;
- возможность расширять функциональность средствами, которые доступны программистам;
- высокая скорость при работе на небольших программах;
- предельно понятные и конкретные сообщения об ошибках;
- создание эффективного посредничества между пользователем компьютера и операционной системой;
- отсутствие необходимости понимать, как работает аппаратное обеспечение для написания программ [19, 27].
Язык базировался частично на Fortran II и частично на Algol-60, с добавлениями, которые делают его удобным в процессе работы в режиме обработки текста, разделения времени, а также матричной арифметики. BASIC изначально был реализован на GE-265 с поддержкой большой численности терминалов. Однако, вопреки распространённому мнению, это был компилируемый язык во время своего появления.
Язык приобрел огромную популярность после его появления на микрокомпьютерах в середине 1970-х годов. Многие языки программирования были слишком громоздкими, чтобы поместиться в маленькой памяти. Для машин с такими медленными носителями, как бумажные ленты, аудиокассеты и без подходящего текстового редактора такой маленький язык, как Basic, являлся отличной находкой.
В 1975 году компанией Microsoft был выпущен Altair Basic. Впоследствии был опубликован ряд операционных систем, в которых основным языком был Basic [3, 91]. Для операционной системы CP/M был разработан диалект Basic-80, который долгое время определял развитие языка.
За это время было создано много новых компиляторов и интерпретаторов Basic. Microsoft продала несколько версий Basic для MS-DOS/PC-DOS, в том числе Basic, GW-BASIC и QBasic. В 1985 году компания Borland выпустила Turbo Basic 1.0 (более поздние его версии были позже проданы другой компанией под названием PowerBasic) [11, 76].
Домашние компьютеры поставляются с различными базовыми расширениями Basic, которые обычно включают средства для работы с графикой, звуком, командами DOS, а также средства структурного программирования. Некоторые другие языки применяли хорошо известный синтаксис Basic в качестве основы для создания совершенно другой системы, к примеру, GRASS.
Начиная с конца 80-х годов, новые персональные компьютеры стали сложнее и предоставляли возможности (такие как графический пользовательский интерфейс), которые делают Basic уже не таким подходящим для программирования. Basic начал терять свои позиции, хотя большая численность его версий ещё применялась и продавалась [2, 72].
Basic получил вторую жизнь с выпуском Visual Basic от Microsoft в 1991 году. Этот язык был похож на оригинальный исключительно синтаксисом, но был гораздо современнее. Visual Basic и его варианты стали одним из наиболее широко применяемых на платформе Windows языков. Версия под названием WordBasic была позже использована в MS Word до разработки Word 97. В 1993 году Visual Basic for Applications был интегрирован в Excel 5.0, затем в Access 95 в 1995 году. А позже и во все остальные инструменты, включенные в пакет Office - в 1997 году. Internet Explorer 3.0 и более поздние версии, а также поставки Windows содержали интерпретатор VBScript. Полная версия пакета OpenOffice также включает в себя интерпретатор Basic.
Если говорить о ранних версиях, то они не поддерживали даже структурное программирование [2, 93]. С течением времени процедурное и структурное программирование стало общепринятой парадигмой, и появились версии, которые их поддерживают. Целый спектр современных компиляторов во главе с Visual Basic и VB.NET реализуют программирование объектно-ориентированное и программирование, основанное на событиях.
Таким образом, сегодня Basic - это не отдельный язык, а целое семейство языков, которые отличаются по времени создания, парадигмам программирования и синтаксису и, что часто приводит к полной потери совместимости программ.
2.4. Язык программирования Java
Java - язык программирования, разработанный компанией Sun Microsystems. Дата официального выпуска - 23 мая 1995 года. Сегодня технология Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений.
2.4.1. Основные особенности языка
Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.
Достоинство подобного способа выполнения программ - в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.
Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:
применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,
широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,
аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).
По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.
Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.
2.4.2. Основные возможности
автоматическое управление памятью;
расширенные возможности обработки исключительных ситуаций;
богатый набор средств фильтрации ввода/вывода;
набор стандартных коллекций, таких как массив , список , стек и т. п.;
наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);
наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
встроенные в язык средства создания многопоточных приложений;
унифицированный доступ к базам данных:
на уровне отдельных SQL-запросов - на основе JDBC, SQLJ;
на уровне концепции объектов, обладающих способностью к хранению в базе данных - на основе Java Data Objects и Java Persistence API;
поддержка шаблонов (начиная с версии 1.5);
параллельное выполнение программ.
2.4.3. Основные идеи
Примитивные типы
В языке Java только 8 примитивных (скалярных, простых) типов: boolean, byte, char, short, int, long, float, double.
Длины и диапазоны значений примитивных типов определяются стандартом, а не реализацией и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал Unicode-16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte, причем в Java, в отличие от других языков, он не является беззнаковым. Типы float и double могут иметь специальные значения , и «не число» (NaN). Для типа double они обозначаются Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN; для типа float - так же, но с приставкой Float вместо Double. Минимальные положительные значения, принимаемые типами float и double, тоже стандартизованы.
Таблица 1 – Типы данных Java
Тип |
Длина (в байтах) |
Диапазон или набор значений |
boolean |
не определено |
true, false |
byte |
1 |
−128..127 |
char |
2 |
0..216−1, или 0..65535 |
short |
2 |
−215..215−1, или −32768..32767 |
int |
4 |
−231..231−1, или −2147483648..2147483647 |
long |
8 |
−263..263−1, или примерно −9.2·1018..9.2·1018 |
float |
4 |
-(2-2−23)·2127..(2-2−23)·2127, или примерно −3.4·1038..3.4·1038, а также , , NaN |
double |
8 |
-(2-2−52)·21023..(2-2−52)·21023, или примерно −1.8·10308..1.8·10308, а также , , NaN |