Файл: Обзор языков программирования высокого уровня ( Классификация языков ).pdf
Добавлен: 04.04.2023
Просмотров: 104
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Теоретические основы языков программирования
1.1. Понятие о языках программирования
1.2. Анализ объектно-ориентированных языков программирования
Глава 2. Анализ языков программирования высокого уровня
2.1 Классификация языков программирования
2.2. Сравнительный анализ языков программирования
Глава 3. Подходы к эффективности использования памяти в языках программирования высокого уровня
Smalltalk полностью объектно-ориентированный язык, в котором абсолютно все рассматривается как объекты (даже целые числа – это классы)[7]. После Simula, Smalltalk стал важнейшим объектно-ориентированным языком, который не только повлиял на последующие поколения языков программирования, но также заложил основы современного графического интерфейса пользователя, на которых непосредственно базируются интерфейсы Macintosh, Windows и Motif.
В основу языка Smalltalk были положены две простые идеи:
1. Всё является объектами.
2. Объекты взаимодействуют между собой, обмениваясь сообщениями.
Microsoft Visual C++. Язык программирования C++ разработан сотрудником AT&T Bell Laboratories, Бьерном Страустрапом[8]. Ранние версии языка С++, известные под названием «С with Classes», начали появляться с 1980 года. Язык создавался под сильным влиянием С и Simula. В значительной степени С++ является надстройкой над С. В какой-то степени С++ – это улучшенный язык С, обеспечивающий контроль типов, перегрузку функций и другие полезные свойства. Однако главным критерием остаётся то, что С++ дополняет С объектной ориентированностью.
Достоинства:
- неограниченные возможности в рамках Windows;
- довольно хороший компилятор С++, несмотря на то, что немного медленный;
- мощная библиотека MFC, отличный отладчик;
- предусмотрена правка кода в режиме отладки и последующее его выполнение без полной перекомпиляции и прерывания отладочной сессии;
- быстрее работает технология подсказок;
- полноценный браузер классов;
- исчерпывающая справочная система.
Недостатки:
- необходимо запоминать методы работы с каждым объектом;
- достаточно длинные и абсолютно непроизносимые идентификаторы;
- прежде чем заработает приложение, необходимо предварительно изучить техническую литературу.
Язык программирования Visual Basic разрабатывается корпорацией Microsoft, а также широко используется для интеграции офисных пакетов и различных типов СУБД[9].
Достоинства:
- простота;
- хорошая среда разработки;
- позволяет работать с СУБД;
- возможность создания Web-страницы совместно с HTML и ASP;
- выполнение функции системного интегратора.
Недостатки:
невысокая скорость выполнения приложений;
отсутствует возможность создания компонентов.
Delphi – это мощный и универсальный язык программирования для быстрой разработки приложений (RAD).
Достоинства:
- быстрый, простой и эффективный язык;
- один из самых быстрых компиляторов, который порождает хороший объектный код;
- программы не требуется снабжать дополнительными библиотеками (в отличие от связки C++/MFC)
- существует возможность пользоваться компонентами, написанными другими разработчиками, даже не имея при этом их исходного кода.
Недостатки:
- вся информация о форме (включая настройки компонентов, свойства и значения по умолчанию) неоптимальным образом хранится в exeфайле;
- статически присоединяются библиотеки VCL и компонентов к исполняемому файлу.
Java. Примерно в 1995 году широкое распространение получил новый объектно-ориентированный язык программирования Java, ориентированный на сети компьютеров и в первую очередь на Internet. Синтаксис данного языка похож на синтаксис C++, однако, несмотря на это, в остальном языки отличаются. Java является интерпретируемым на конечной стадии языком: для него определены внутреннее представление, то есть прекомпиляция в байткод (bytecode), и постинтерпретатор этого представления на целевой машине, реализованные уже сегодня на большинстве платформ[10].
Положительные свойства технологии Java разрешают использовать ее для программ, которые распространены по сетям. Достоинства:
- высокая безопасность;
- огромный выбор бесплатных программных библиотек к языку, которые написаны программистами всего мира;
- компиляция приложений в специальный байт-код и их выполнение в виртуальной машине на любом оборудовании и в любой ОС.
Недостатки:
- огромная нагрузка на оперативную память оборудования;
- у продуктов данного языка время выполнения одних и тех же задач в несколько раз медленнее, чем например на С.
C# (C Sharp). Один из самых распространённых на сегодняшний день объектно-ориентированных языков программирования. Был разработан группой инженеров под руководством Андерса Хейлсберга в 1998– 2001 годах в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET[11].
C# поддерживает все основные принципы объектно-ориентированного программирования: инкапсуляцию, наследование и полиморфизм. Кроме этого, в данном языке реализована автоматическая «сборка мусора», обработки исключений, а также динамическое связывание. Сегодня, язык программирования C# считается одним из самых мощных, быстро развивающихся и востребованных языков в IT-сфере.
Достоинства:
- ориентирован на безопасность кода (в сравнении с С и С++); система типизации является унифицированной;
- компонентно-ориентированный подход к программированию способствует меньшей машинно-архитектурной зависимости результирующего программного кода, гибкости, переносимости и легкости повторного использования (фрагментов) программ;
- язык программирования C# претендует на подлинную объектную ориентированность (всякая языковая сущность претендует на то, чтобы быть объектом);
- расширенная поддержка событийно-ориентированного программирования.
Недостатки:
- довольно сложный синтаксис;
- мало свежих концептуальных идей;
- относительно невысокая производительность;
- язык не является кросс-платформенным.
Поскольку С# разработан компанией Microsoft, то работает он только под ОС Windows, однако уже разрабатывается кроссплатформенная версия данного языка.
Visual Basic .NET (VB.NET) – это объектно-ориентированный язык программирования, который реализован на платформе .NET [5], рассматривающийся как очередной виток эволюции Visual Basic (VB). Основным отличием от «классического» VB является то, что VB.NET – полностью объектно-ориентированный язык, поддерживающий полиморфизм, наследование и другие основные принципы ООП.
Достоинства:
- отличается высокой скоростью разработки графических программ для Windows;
- имеет простой синтаксис;
- дает возможность отлаживать и редактировать код без перекомпиляции при приостановке программы;
- защищает от ошибок, которые связаны с доступом к памяти;
- дает возможность использовать WinAPI.
Недостатки:
- поддерживает операционные системы Windows и Mac OS;
- невысокая скорость работы.
Выводы. Практически все объектно-ориентированные языки программирования являются развивающимися, их стандарты регулярно обновляются. Вследствие этого развития во входных языках компиляторов различных систем программирования происходят неизбежные различия. Каждый язык имеет свои достоинства и недостатки, а отсюда и различные области эффективного применения. Это объясняет необходимость в изучении и освоении нескольких различных языков программирования.
Глава 2. Анализ языков программирования высокого уровня
2.1 Классификация языков программирования
Прежде всего, языки программирования нужно классифицировать по уровням. Разные авторы разбивают языки либо на три уровня (машинные, машинно-ориентированные и машинно-независимые языки), либо на два уровня (языки программирования низкого уровня, языки программирования высокого уровня)[12].
В случае деления языков программирования на три уровня, низшим уровнем будет являться машинный код – набор команд, выполняемых конкретным процессором и разработанных специально для него. Обычно является последовательностью шестнадцатеричных символов.
Средним уровнем будут являться машинно-ориентированные языки, то есть языки, призванные управлять непосредственно командами процессора, но более доступным для человеческого восприятия языком. Примером являются языки ассемблера. Язык ассемблера, по сути, представляет каждую команду машинного кода с помощью удобных для восприятия человеком символических команд – мнемокодов. Как правило, язык ассемблера использует особенности конкретного семейства процессоров.
Высшим же уровнем будут считаться машинно-независимые языки. Они разработаны для удобства восприятия, быстроты понимания и работы с ними. Характерная черта этих языков программирования – абстракция, то есть введение смысловых конструкций, кратко описывающих данные и операции над ними, описания которых в машинно-ориентированных языках очень длинны и сложны для понимания.
Также они были призваны обеспечить платформенную независимость сути алгоритмов. С их появлением зависимость от платформы перекладывается на трансляторы, «переводящие» текст, написанный на языке высокого уровня, в элементарные машинные команды. Примерами языков программирования высокого уровня являются C++, C#, PHP, Perl, Java и многие другие.
В современной классификации языков программирования по уровням всё чаще используют деление на два уровня: языки высокого и низкого уровней. Языками низкого уровня считаются языки, близкие к машинному коду и ориентированные на конкретные команды процессора, то есть машинно-ориентированные языки, а языками высокого уровня в современной классификации считаются машинно-независимые языки, разработанные для удобства использования[13].
Таким образом, на данный момент авторы чаще не учитывают машинный код в своих классификациях. Это может быть связано с тем, что в настоящее время машинный код может понадобиться специалистам узкого профиля, например, системного программирования, защиты информации или программирования устройств напрямую. Прикладному же программисту иметь представление о машинном коде может быть необходимо для понимания того, как его программа хранится и выполняется, и в некоторых случаях для отладки и оптимизации своих программ.
Также есть классификация по уровню абстракции. Некоторые языки опираются непосредственно на ниже лежащий машинный уровень. Другие предпочитают использовать абстрактную модель вычислений. Делятся на языки низкого (машинно-ориентированные языки), высокого и сверхвысокого уровней (рисунок 2).
Рисунок 2. Классификация языков программирования по уровню абстракции
Следующая классификация, которую необходимо рассмотреть, — классификация языков программирования по поколениям. Общепринято делить языки на пять поколений, но разные авторы опять же по-своему разделяют поколения[14]. Некоторые варианты классификации перекликаются с классификацией по уровням, некоторые указывают, что языков программирования пятого поколения пока не существует.
Подавляющее большинство авторов называет языками программирования первого поколения машинные коды, то есть языки низкого уровня, языками второго поколения – языки ассемблера, уже рассмотренные нами, и, соответственно, языками третьего поколения – языки высокого уровня.
Эта классификация по эволюционному признаку вполне логична: понятно, что языки низкого уровня появлялись на заре программирования, а языки среднего и высокого уровней разрабатывались и улучшались в связи с растущими возможностями компьютерных технологий.
А вот с классификацией языков четвёртого и пятого поколений ситуация не так проста. К языкам программирования четвёртого поколения чаще всего относят языки объектно-ориентированные, декларативные (непроцедурные) и визуальные. Но эти языки с уверенностью можно отнести и к языкам третьего поколения. Также очень часто сюда относят языки запросов, например, SQL, который, по своей сути, вовсе не является языком программирования. Вообще, часто можно прочитать о том, что языки программирования четвёртого поколения – это языки, встроенные в определённую программную оболочку и используемые для узкоспециализированных задач, например, для создания баз данных и управления ими (встроенные языки систем управления базами данных). Получается, вернее всего сказать, что языки программирования четвёртого поколения – логичное развитие языков третьего поколения, упрощающее работу программистов ввиду того, что в основе своей эти языки встроены в собственную программную оболочку с функциями, помогающими разработчикам. Также к языкам четвёртого поколения нужно отнести языки параллельного программирования, ориентированные на создание программных средств многопроцессорной архитектуры[15].