Файл: Общая характеристика и классификация языков программирования высокого уровня.pdf
Добавлен: 24.04.2023
Просмотров: 485
Скачиваний: 5
СОДЕРЖАНИЕ
ПОНЯТИЕ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ И ИХ ОБШАЯ КЛАССИФИКАЦИЯ
КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
Характеристика процедурно-ориентированных и декларативных языков программирования высокого уровня
2.2 характеристики и возможности декларативных языков программирования высокого уровня
ОСОБЕННОСТИ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
ОБЪЕКТНЫЕ ЯЗЫКИ, ИСПОЛЬЗУЕМЫЕ ДЛЯ РАЗРАБОТКИ ПРИЛОЖЕНИЙ
ЯЗЫКИ СЦЕНАРИЕВ И ОБЪЕКТНЫЕ ЯЗЫКИ, ОРИЕНТИРОВАННЫЕ НА РАБОТУ С БАЗАМИ ДАННЫХ
Miranda— нестрогий чисто функциональный язык программирования со строгой полиморфной типизацией и развитой системой модулей. Язык был разработан профессором Дэвидом Тэрнером [17, с. 226]. Главные особенности языка Miranda заключаются в следуюшем:
- чисто функциональный язык с полным отсутствием эффектов;
- функции поддерживаются в качестве данных;
- поддержка нестрогих функций и бесконечных размерностей (так называемый «ленивый» язык);
- строгая полиморфная типизация;
- абстрактные модули и типы данных;
Miranda является первым коммерческим чисто функциональным языком программирования. Первый интерпретатор Miranda для Unix-подобных ОС, написанный на языке C был разработан в 1985 г. Позже появился язык Haskell, который имеет большое сходство с Miranda.
Haskell — один из мошнейших функциональных языков с нестрогой семантикой. Язык получил своё название в честь математика Хаскелла Карри [12, с. 188]. Он является одним из наиболее популярных функциональных языков и активно развивается и в настояшее время.
Наиболее важные особенности Haskell:
- ленивый (non-strict) язык;
- чисто функциональный (т.е не содержит конструкций, неявно зависящих от состояния среды или ее изменяющих);
- включает в себя простой и логичный механизм перегрузки функций, известный как «классы типов». Например, классы типов обеспечивают возможности, сопоставимые с возможностями шаблонов C++, но при этом сохраняется возможность раздельной трансляции;
- императивные возможности выражаются с помощью так называемых монад, понимание которых — одна из наибольших проблем при изучении Haskell, но она стоит того, если в ней разобраться [13, с.299] .
Haskell — отличный язык для целей обучения и проведения экспериментов с сложными функциональными типами данных. Программы, созданные на Haskell, отличаются значительным размером объектного кода и невысокой скоростью исполнения.
Пролог (Prolog) — это представитель логического программирования, на котором разработаны практически все экспертные системы. Prolog (от «PROgramminginLOGic») является декларативным языком программирования общего назначения [19, с. 401].
Prolog был создан в 1972 г. и мел своей целью сочетание использования логики с представлением знаний. С того времени у него появился ряд диалектов, которые расширяют основу языка разнообразными возможностями. Стандарт языка появился в ISO/IEC 13211-1 (1995 г.).
Prolog является одним из старейших языков логического программирования, однако он все еще один из наиболее популярных, хотя и гораздо менее востребован по сравнению с основными императивными языками. Он применяется в системах обработки естественных языков, исследованиях искусственного интеллекта, онтологиях, экспертных системах, и других предметных областях, в которых естественным является использование логической парадигмы.
Prolog был разработам под влиянием более раннего языка Planner, из которого был позаимствован ряд идей:
- обратный логический вывод, т.е. вызов процедур по шаблону, который предполагается целью;
- построение структуры управляющей логики в форме вычислений с откатами;
- принцип «отрицание, как неудача»;
- использование разных имен для разных сущностей и т.д. [19, с. 406]
Главной парадигмой, характеризуюшей язык Prolog, является логическое программирование. Программы, которые разработаны на чистом Prolog, описывают отношения между обрабатываемыми сущностями при помощи клауз Хорна (т.е. формул вида Голова — Тело, которая читается как «чтобы доказать/решить Голову, следует доказать/решить Тело» ) [13, с. 108].
Другой важной особенностью Prolog является использование предикаты. Унарные предикаты определяют свойства их аргументов, а предикаты с несколькими аргументами — отношения между ними. Предикаты с несколькими аргументами могут работать в нескольких направлениях, которые зависят от того, какие аргументы уже связаны, а какие нет.
Цель выполнения программы на Prolog — оценить один целевой предикат. Имея в наличии данный предикат и набор правил и фактов, заданных в программе, Prolog ишет привязки (значения) переменных, при которых целевой предикат принимает истинное значение [13, с. 110].
Структура программы на Прологе имеет отличия от структуры программы, которая написана на процедурном языке. Пролог-программа представляет собой собрание правил и фактов. Задача решается путем интерпретации этих правил и фактов. При этом пользователю нет необходимости обеспечивать детальную последовательность инструкций, чтобы указать, как осуществляется управление процессом для получения результата. Вместо этого он только определяет возможные решения задачи и обеспечивает программу фактами и правилами для поиска нужного решения.
ОСОБЕННОСТИ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
ОБЪЕКТНЫЕ ЯЗЫКИ, ИСПОЛЬЗУЕМЫЕ ДЛЯ РАЗРАБОТКИ ПРИЛОЖЕНИЙ
Объектно-ориентированные языки явились дальнейшим шагом в развитии процедурных языков. Основой их концепции является совокупность программных объектов [13, c. 246] . Разработка программы на объектном языке заключается в представлении последовательности создания экземпляров объектов и использовании их методов. К объектно-ориентированным языкам можно отнести первые языки — Simula и SmallTalk, позднее появились C++, Java.
Simula. В 1966 г. была разработана первая версия языка Simula, которая позже стала известна, как Simula 1. Язык Simula, имеюшая название Simula 67, была впервые описана в 1970 г.
Язык был разработан сотрудниками Норвежского Вычислительного Центра Осло и Кристеном Нюгором для моделирования сложных систем. Язык Simula основывался на идеях Algоl, но получил дополнительные механизмы наследования и инкапсуляции [12, с. 308]. Еще более существенным шагом в развитии стало то, что Simula, предназначенная для описания систем и моделирования, утвердил дисциплину разработки программ, отражающих словарь предметной области.
SmallTalk — объектно-ориентированный язык программирования с динамической типизацией. Был разработан в Xerox PARC Аланом Кэйем, Дэном Ингаллсом, Тедом Кэглероми и др. в 1970-х гг. Smalltalk продолжает активно совершенствоваться и имеет преданное сообщество пользователей.
Smalltalk оказал большое влияние на развитие многих других языков, таких как Objective-C, Actor, Java и Ruby [22, с. 511]. Многие идеи 80-х и 90-х гг. по разработке программ появились в сообществе Smalltalk. К ним можно отнести рефакторинг, шаблоны проектирования применительно к программному обеспечению, карты Класс-Обязанности-Взаимодействие и экстремальное программирование в целом [22, с. 516].
Си++ (C++) — объектно-ориентированное расширения языка Си, разработанное Бьярном Страуструпом в 1980 г. Огромное число новых мощных возможностей, которые позволили резко увеличить производительность разработчиков, объединилось с унаследованной от языка Си определенной низкоуровневостью. В результате создание сложных и надежных программ потребовало от программистов высокого уровня профессиональной подготовки.
Си++ является компилируемым строго типизированным языком программирования общего назначения. В языке поддерживаются различные парадигмы программирования: процедурная, обобщённая, функциональная. Самое значительное внимание уделено поддержке объектно-ориентированного программирования [9, с.59].
При создании C++ преследовалась цель дополнить C возможностями, удобными для глобальной разработки программного обеспечения, с сохранением гибкости, скорости и портабельности C. Одновременно создатели C++ старались сохранить совместимость с C, поскольку синтаксис первого основан на синтаксисе последнего, и большинство программ на C могут работать и как C++.
Первый выпуск C++ для коммерческого использования состоялся в 1985 г., в 1989 г. появилась вторая версия языка. В 90-х гг. язык стал одним из самых используемых языков программирования общего назначения. Первым официальным стандартом языка стал ISO/IEC 14882:1998, более известный как C++98 [6, с. 87]. В 2003 г. появилась его дополненная версия, C++03, а в 2005 г. был опубликован документ, в котором описывались расширения стандартной библиотеки — TR1. Он не является стандартом, но большинство актуальных компиляторов C++ поддерживает его. Наконец, в 2011 г. был принят текущий стандарт, C++11.
Visual Basic является языком программирования, а также интегрированная среда разработки программного обеспечения от корпорации Microsoft. В Visual Basic сочетаются процедуры и элементы объектно-ориентированных, а также компонентно-ориентированных языков программирования. Интегрированная среда разработки Visual Basic включает в себя инструменты для визуальной разработки интерфейса пользователя, редактор кода, а также инструменты для отладки приложений.
Visual Basic также является прекрасным средством для быстрой разработки приложений (RAD), баз данных для операционных систем семейства Microsoft Windows [13, c. 120]. Большое число готовых компонентов, которые поставляются вместе со средой, необходимы для помоши разработчику сразу же приступить к созданию бизнес-логики приложения и не отвлекаться на написание кода запуска программы, подписки на события и других механизмов, поскольку Visual Basic выполняет их автоматически.
Первое признание профессиональными программистами Visual Basic получил после выхода версии 3. Окончательное был признан, как полноценное средство программирования для Windows при выходе версии 5. Версия VB6, входящая в состав Microsoft Visual Studio 6.0, явилась по-настоящему зрелым и функционально наполненным продуктом [12, с. 187] .
Delphi является императивным структурированным объектно-ориентированным языком программирования, для которого характерна строгая статическая типизация переменных. В основном Delphi используется для разработки прикладного программного обеспечения [10, с.13].
Этот язык программирования является диалектом языка Object Pascal. Первоначально среда разработки Delphi предназначалась только для разработки приложений Microsoft Windows, впоследствии появился вариант для платформ Linux под торговой маркой Kylix, однако после выхода в 2002 г. Kylix 3 его разработка прекратилась, и вскоре было объявлено о поддержке Microsoft.NET, которая, в свою очередь, была прекращена после выхода Delphi 2007. На сегодняшний день, наряду с поддержкой разработки 32 и 64-разрядных программ для Windows, появилась возможность разрабатывать приложения для Apple Mac OS X, iOS , Google Android, а также Linux Server x64 [10, с.19].
При разработке языка, и в этом заключается качественное отличие от языка C, не стояла задача обеспечения максимальной производительности исполняемого кода, а также лаконичности исходного кода для экономии оперативной памяти. Первоначально разработчики языка ставили во главу угла стройность и высокую читаемость, так как Delphi был предназначен для обучения дисциплине программирования. В дальнейшем, с ростом аппаратных мощностей компьютеров, а также в результате появления новых парадигм, упростилось расширение языка новыми конструкциями.
Для сравнения: сложность объектного C++, по сравнению с C, увеличилась весьма существенно, что затруднило его изучение в качестве первого языка программирования, чего нельзя сказать о Delphi по сравнению с Pascal [12, с.193].
Ява (Java), как язык программирования, был разработан компанией Sun в начале 60-х гг. Си++ и был предназначен для упрошения разработки приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Однако основная особенность этого языка — это компиляция не в машинный код, а в платформо-независимый байт-код, который может исполняться с помощью интерпретатора — виртуальной машины Javа, машины JVM (Java Virtyal Machine), версии которой сушествуют на сегодня для любых платформ [19, с. 321]. Благодаря Java-машинам, программы на Java можно переносить и на уровне исходных текстов, и на уровне обычного байт-кода, поэтому по популярности язык Ява находится на сегодняшний день на втором месте после Бейсика.
Первоначально новый язык программирования назывался Oak и создавался для бытовой электроники, но по мере развития был переименован в Java и стал применяться для разработки апплетов, приложений и серверного программного обеспечения.
Язык Java стал необходимым для создания интерактивных продуктов для сети Internet. Фактически, наибольшее количество архитектурных решений, принятых при создании Java, было основано на желании предоставить синтаксис, сходный с C и C++ [19, с. 326]. В Java применяются практически те же самые соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнения кода. Java унаследовала все самые лучшие черты C++.
Три ключевых элемента объединены в технологии языка Java:
- предоставляет для широкого пользования свои апплеты — небольшие, надежные, динамичные, не зависящие от платформы активные сетевые приложения, которые встаиваются в страницы Web. Апплеты Java могут настраиваться и распространяться пользователям с такой же легкостью, как любые HTML-документы [12, с. 360];
- предоставляет мошные возможности объектно-ориентированной разработки приложений, в сочетании простого и знакомого синтаксиса с надежной и удобной в работе средой разработки. Это позволяет широкому кругу разработчиков быстро писать новые программы и новые апплеты;
- предоставляет разработчику богатый набор классов объектов для понятного абстрагирования многих системных функций, которые используются при работе с окнами, сетью и для ввода-вывода. Основная черта этих классов заключается в том, что они способны обеспечить разработку независимых от используемой платформы абстракций для широкого спектра системных интерфейсов [3, с. 211].