Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Классификация языков программирования)..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 15.06.2023

Просмотров: 215

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Семантикой определяется смысловое значение предложения используемого языка. Таким образом, семантика языка представляет собой систему правил толкования отдельно взятых конструкций используемого языка программирования. Семантикой устанавливаются последовательности действий, описываемые тем или иным предложением языка, и, в конце концов, устанавливается алгоритм, определенный заданным текстом используемого языка.

Высокоуровневые языки программирования подразделяются на:

  • процедурные языки;
  • логические языки;
  • объектно-ориентированные языки.

Назначением процедурных языков программирования является однозначное описание алгоритмов. Решение задачи при помощи процедурного языка, требует, в определенной форме, обязательного наличия явной записи процедуры решения. [18]

Развитие процедурных языков началось с появления проблемно-ориентированных языков. Эти языки получили свое название в виду того факта, что в основу их создания легла не "машина" а "задача" - это значит, что первостепенную роль в языке играет специфика класса задач, для которых предполагается разработка решения. [13]

К примеру, решение большинства научно-технических задач связано с осуществлением характерно емких расчетов по формулам, имеющим высокую степень сложности; в связи с этим, языки, ориентированные на подобного рода задачи, как правило, имеют удобные средства записи таких формул. Применение понятий, символов и терминов, которые являются привычными для специалистов соответствующей сферы знаний, значительно упрощает изучение и восприятие языка и позволяет облегчить и ускорить процесс разработки и отладки программного кода. [10]

Многообразие классов задач способствовало активной разработке алгоритмических языков, в итоге, на сегодняшний день, их число достигло нескольких сотен. Но, в действительности, международное признание и широкое распространение смогли получить лишь немногие из них. Среди лидеров следует особо отметить:

  • Algol и Fortran - языки, основным назначением которых является решение научно-технических задач;
  • Basic – создание решений для мелких вычислительных задач в режиме диалога;
  • Cobol – разработка решений для задач из области экономики. [2]

Разумеется, любой процедурный язык может быть использован не только для решения задач того класса, для которого предназначен, но и других классов задач. Но на практике, такое использование языка может оказаться крайне неудобным, а иногда и весьма затруднительным. [1]


Вместе с тем, в середине 60-х были начаты разработки алгоритмических языков широкой направленности – универсальных языков. Как правило, в основу разработки этих языков закладывался принцип объединения функционала узко-ориентированных языков. Среди таких языков наибольшее распространение получили Ada, C, Modula, Pascal и PL/1. Но разумеется, как и всякий универсальный инструмент, во множестве конкретных случаев, такие языки оказались менее эффективными, чем узко-ориентированные. [26]

Логические языки (Prolog, Lisp, Mercury, KLO и др.) ориентированы не на запись алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания. В этих языках указывается, что дано и что требуется получить. При этом поиск решения задачи возлагается непосредственно на ЭВМ.

Объектно-ориентированные языки (Object Pascal, C++, Java, Objective Caml. и др.). Руководящая идея объектно-ориентированных языков заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое - объект.

Объектно-ориентированный подход использует следующие базовые понятия [24]:

  • объект — совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств);
  • свойство объекта — это характеристика объекта и его параметров. Все объекты наделены определенными свойствами, совокупность которых выделяют (определяют) объект;
  • метод обработки — это набор действий над объектом или его свойствами;
  • событие — это характеристика изменения состояния объекта;
  • класс объектов — это совокупность объектов, характеризующихся общностью применяемых к ним методов обработки или свойств.

Существуют различные объектно-ориентированные технологии, которые обеспечивают выполнение важнейших принципов объектного подхода [16]:

  • инкапсуляция;
  • наследование.

Под инкапсуляцией понимается скрытие полей объекта с целью обеспечения доступа к ним только посредством методов класса (т. е. скрытие деталей, несущественных для использования объекта). Инкапсуляция (объединение) означает сочетание данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельное значение. [4]

Класс может иметь образованные от него подклассы. При построении подклассов осуществляется наследование данных и методов обработки объектов исходного класса. [25]

Фактически объектно-ориентированное программирование можно рассматривать как модульное программирование нового уровня, когда вместо, во многом, случайного, механического объединения процедур и данных акцент делается на их смысловую связь.


Программа на объектно-ориентированном языке, решая некоторую задачу, по сути, описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур. [23]

Языки программирования сверхвысокого уровня

Новой тенденцией является появление языков программирования еще более высокого уровня (сверхвысокоуровневых). Такого рода языки характеризуются наличием дополнительных структур и объектов, ориентированных на прикладное использование. Прикладные объекты, в свою очередь, требуют минимальной настройки в виде параметров и моментально готовы к использованию. Использование ультра-высокоуровневых языков программирования снижает временные затраты на разработку программного обеспечения и повышает качество конечного продукта за счет, опять таки, уменьшения объема исходных кодов.

Сверхвысокоуровневый язык программирования (VHLL) — язык программирования с очень высоким уровнем абстракции. В отличие от языков программирования высокого уровня, где описывается принцип «как нужно сделать», в сверхвысокоуровневых языках программирования описывается лишь принцип «что нужно сделать». [25]

Термин впервые появился в середине 1990-х годов для идентификации группы языков, используемых для быстрого прототипирования, написания одноразовых скриптов и подобных задач. [25]

Так, разработчики Icon (и его диалекта Unicon) описывают его как VHLL. К языкам сверхвысокого уровня также часто относят такие современные скриптовые и декларативные (в частности функциональные) языки как Python, Ruby и Haskell, а также Perl и, предшествовавший ему, мини-язык AWK. [16]

Большой класс языков сверхвысокого уровня — это языки используемые для специфических приложений и задач (то есть предметно-ориентированные). В связи с этой ограниченностью они могут использовать синтаксис, который никогда не используется в других языках программирования, например, непосредственно синтаксис английского языка. [10]

Примером VHLL, распознающего синтаксис английского языка, может служить язык компилятора текстовых квестов Inform.

Среда разработки программного обеспечения


Интегрированная среда разработки (IDE) (также, единая среда разработки) — комплекс программных средств, используемый программистами для разработки программного обеспечения.

Среда разработки включает в себя [8]:

  • компилятор и/или интерпретатор;
  • отладчик;
  • средства автоматизации сборки;
  • текстовый редактор (редактор кода).

Иногда содержит также средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. IDE обычно предназначены для нескольких языков программирования — такие как IntelliJ IDEA, NetBeans, Eclipse, Qt Creator, Geany, Embarcadero RAD Studio, Code::Blocks, Xcode или Microsoft Visual Studio, но есть и IDE для одного определённого языка программирования — как, например, Visual Basic, Delphi, Dev-C++. [22]

Частный случай IDE — среды визуальной разработки, которые включают в себя возможность наглядного редактирования интерфейса программы. [25]

Использование IDE для разработки программного обеспечения является прямой противоположностью способу, в котором используются несвязанные инструменты, такие как текстовый редактор, компилятор, и т. п. Интегрированные среды разработки были созданы для того, чтобы максимизировать производительность программиста благодаря тесно связанным компонентам с простыми пользовательскими интерфейсами. Это позволяет разработчику сделать меньше действий для переключения различных режимов, в отличие от дискретных программ разработки. Однако, так как IDE является сложным программным комплексом, то среда разработки сможет качественно ускорить процесс разработки ПО лишь после специального обучения. Для уменьшения барьера вхождения многие достаточно интерактивны, а для облегчения перехода с одной на другую интерфейс у одного производителя максимально близок, вплоть до использования одной IDE. [24]

IDE обычно представляет собой единственную программу, в которой проводится вся разработка. Она, как правило, содержит много функций для создания, изменения, компилирования, развертывания и отладки программного обеспечения. Цель интегрированной среды заключается в том, чтобы объединить различные утилиты в одном модуле, который позволит абстрагироваться от выполнения вспомогательных задач, тем самым позволяя программисту сосредоточиться на решении собственно алгоритмической задачи и избежать потерь времени при выполнении типичных технических действий (например, вызове компилятора). Таким образом, повышается производительность труда разработчика. Также считается, что тесная интеграция задач разработки может далее повысить производительность за счёт возможности введения дополнительных функций на промежуточных этапах работы. Например, IDE позволяет проанализировать код и тем самым обеспечить мгновенную обратную связь и уведомить о синтаксических ошибках. [14]


Вывод:

Хотя большая часть современных IDE имеют графический интерфейс, первые IDE начали использоваться задолго до того, как графические операционные системы стали применяться повсеместно.

В основе первых IDE лежал текстовый интерфейс с применением горячих и функциональных клавиш, которые позволяли вызывать различные функции.

В то же время, эволюция языков программирования, как не трудно заметить, нацелена в сторону все большей абстракции. Конечно, это влечет, некоторую потерю эффективности. Но, в то же время, позволяет повысить надежность разрабатываемых продуктов, а надежность является, пожалуй, одной из наиболее значимых качественных характеристик. К тому же, потеря производительности легко компенсируется наращиванием мощности аппаратного обеспечения, которое является непрерывным и неизбежным.

Абстракция же, в свою очередь, позволяет максимально затруднить возможность совершения ошибок при разработке программного обеспечения. Именно на это нацелены, в первую очередь, все разработки и исследования в сфере программирования и разработки программ.

Критерии выбора среды и языка разработки программ

При выборе среды и языка программирования учитываются следующие критерии [19]:

  • функциональные характеристики;
  • надежность;
  • простота использования;
  • эффективность;
  • сопровождаемость;
  • переносимость;
  • общие критерии;

Функциональные характеристики

Критерии первого класса предназначены для определения функциональных характеристик средств разработки. Они в свою очередь подразделяются на ряд групп и подгрупп.

Среда функционирования

Проектная среда [1]:

  • область применения. Примерами являются системы обработки транзакций, системы реального времени, информационные системы и т.д;
  • поддержка процессов жизненного цикла. Определяет набор процессов ЖЦ, которые поддерживает средство. Примерами таких процессов являются анализ требований, проектирование, реализация, тестирование и оценка, сопровождение, обеспечение качества, управление конфигурацией и управление проектом, причем они зависят от принятой пользователем модели ЖЦ;
  • размер поддерживаемых приложений. Определяет ограничения на такие величины, как количество строк кода, уровней вложенности, размер базы данных, количество элементов данных, количество объектов конфигурационного управления.