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

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

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

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

Добавлен: 28.03.2023

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. Теоретические концепции языков программирования и программных сред

1.1. Основная терминология программирования

1.2. Классификация языков программирования по способу исполнения программ

1.3. Классификация языков программирования по уровню детализации

1.4. Классификация парадигм, реализуемых языками программирования

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

2. Некоторые современные языки программирования и их сравнение

2.1. Язык программирования C

2.2. Язык программирования C++

2.3. Язык программирования Java

2.4. Язык программирования Python

2.5. Язык программирования C#

2.6. Сравнительный анализ языков программирования с точки зрения одной из отраслей

3. Некоторые современные среды разработки и их сравнение

3.1. Среда разработки Microsoft Visual Studio

3.2. Среда разработки NetBeans

3.3. Среда разработки Eclipse

3.4. Сравнительный анализ сред разработки приложений с точки зрения одной из отраслей

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Панель редактора кода можно оптимизировать под свои нужды (см. рис. 6). Можно также включить управляемую отладку приложений. Технологии Visual Studio облегчают рефакторинг кода (см. рис. 7). Есть и расширения для VS, предоставляющие дополнительные возможности. Однако, при отказе некоторых единичных компонентов, может перестать работать вся IDE[180].

Современные версии VS привязаны к аккаунту пользователя, и их настройки можно легко переносить с одной версии IDE на другую (или, как вариант, с IDE на домашнем компьютере – на рабочий)[181].

3.2. Среда разработки NetBeans

Данная среда разработки была изначально создана для разработки с открытым исходным кодом при помощи Java Development Kit [42, 20]. Технология NetBeans разрасталась, появлялись пакеты с поддержкой других ЯП. На данный момент среда поддерживает чистый Си, C++ и Fortran[182]. С помощью сторонних плагинов можно редактировать и создавать проекты C# и Python (см. рис. 1).

Особенностями данной среды являются её системные требования. В частности, IDE может запускаться на очень многих операционных системах, включая Linux, OS X, Solaris и Windows, и помимо этого может использоваться и для удалённого развёртывания [20].

Основной пласт использования данной среды – свободное ПО и проекты для нужд малого бизнеса. Использование на среднем рынке или в крупных проектах распределено примерно равномерно, составляет 21 – 23%, согласно данным G2 Crowd [40]. Установка NetBeans может проходить довольно тяжело, однако это окупается простотой самой среды. В пользу этого фактора говорит то, что NetBeans использовалась в 2007-м году в Вестминстерском Университете, в крупном исследовании. Это означает возможность использовать её и в образовательных целях.

Интерфейс NetBeans не отягощает собой конечного пользователя (см. рис. 1), являясь очень простым, но сохраняя функциональность. Редактор кода в данной среде позволяет совершать автодополнение (см. рис. 4), может находить совпадающие элементы кода, и поддерживает визуальное программирование (см. рис. 3).

В данной среде есть множество компонентов. Раньше в NetBeans не было средств автокоррекции ошибок [20], однако на данный момент это по большей части исправлено (см. рис. 2). К среде всегда можно подключить плагины и расширения, вплоть до поддержки новых языков программирования[183]. IDE поддерживает некоторые возможности работы с удалёнными серверами, базами данных, и веб-сервисы.


Техническая поддержка и справочная система среды разработки NetBeans заслужила смешанные оценки пользователей [40]; с другой стороны, она как минимум весьма информативна и не запутывает программиста (см. рис. 5) [20].

3.3. Среда разработки Eclipse

Данная среда, как и NetBeans, была создана для бесплатного использования при разработке Java-приложений. Разработала её корпорация IBM, и одной из целей разработки было создание нового стандарта многоязыковых корпоративных IDE. У неё есть поддержка систем контроля версий и многоязыковая поддержка. Считалась сложной для новичков, но в последнее время были предприняты шаги по упрощению среды[184]. На данный момент, по мнению некоторых источников, она удобна для программиста любого уровня умений[185]. Основными языками платформы являются Java, C и C++. Однако, Eclipse нейтральна к любым языкам программирования, и для неё существуют реализации Python, Eiffel, PHP, Ruby, и C#[186].

Eclipse была написана на Java. Это делает её легко переносимой с одной платформы на другую[187]. Приложения в среде также легко развёртываются, в т.ч. в архиве или по сети.

Основной процент использования Eclipse IDE – приложения для крупного бизнеса (39,5%) и среднего рынка (37%) [40]. Оставшиеся 23,5% занимает разработка для малого бизнеса. Большинство респондентов сообщало, что данная IDE пригодна для разработки крупных бизнес-решений.

Eclipse имеет обширную справочную систему, для помощи программисту. О любой ошибке можно нажатием нескольких кнопок сообщить разработчикам (см. рис. 14).

Данная среда разработки имеет очень гибкий и структурированный интерфейс с закладками (см. рис. 13). По исходному тексту можно перемещаться с помощью гипертекстовых ссылок. Рабочая среда Eclipse состоит из окон, которые могут включать в себя несколько страниц, а также нескольких панелей и редакторов. Панели показывают свойства и структуру той информации, с которой работает IDE. Всего в приложении, как правило, может быть только один экземпляр панели одного типа. Редакторов – наоборот, может быть много в программе; более того, возможно наличие в одной программе нескольких экземпляров одного и того же редактора[188].

Eclipse имеет очень хорошие средства работы с редактором кода. Они не только подсвечивают проблемные места и уведомляют о них программиста, но и предлагают решения (см. рис. 11), а также позволяют легко проводить автозамену и рефакторинг (см. рис. 12)[189].


Данная среда может инвариантно настраиваться под нужды пользователя. Она состоит из модулей, объединяемых в подсистемы, в соответствии с их назначением и функциональными возможностями. Модули очень обособлены друг от друга и могут использоваться по-отдельности. Особо крупные подсистемы являются фактически самодостаточными версиями среды. В частности, это Eclipse CDT для разработки на языках C/C++[190], и Eclipse JDT для разработки на языке Java[191]. Такая система с обособленными модулями называется Reach Client Platform[192]. К сожалению, отрицательной стороной такого решения является принудительная установка вручную некоторых важных модулей, доступных для других сред разработки изначально [20].

3.4. Сравнительный анализ сред разработки приложений с точки зрения одной из отраслей

Теперь, разобрав среды разработки, можно приступить к выработке критериев использования IDE в определённой сфере. В качестве отрасли, в продолжение эксперимента из Главы 2, выбрано системное программирование, а в качестве языка – Си.

Тут важно отметить, что перед поиском оптимальной IDE, стоит задуматься о таких базовых вещах, как системные требования и поддерживаемые языки, это сузит круг поиска. К примеру, для программирования на C# в ОС Windows без использования сторонних плагинов лучше всего подойдёт Visual Studio. Для программирования на языке Java предпочтительней Eclipse и NetBeans из-за отсутствия официальной реализации Java в Visual Studio. Если необходимы возможности по переносу среды разработки с одной операционной системы на другую, также предпочтительней использовать кроссплатформенные NetBeans и Eclipse. В данной работе рассмотрено программирование на Си без жёсткого требования к ОС, а значит, все среды, описанные в Главе 3, априори подходят для анализа.

Таблица с критериями (см. таблицу 3) составлена на основе двух таблиц нескольких рассмотренных ранее исследований [26, 40]. Критерии, повторяющиеся в разных источниках, приведены к среднеарифметическим показателям.

Системный программист может работать в неподготовленной для прикладной работы среде для создания ПО «реального времени» или тестировать свою программу при определённых условиях работы аппаратного обеспечения[193]. Важными показателями для него будут являться (по результатам попарного сравнения) доступность IDE, сохранение производительности в любых условиях (эффективность), безотказность, портабельность, техподдержка, администрирование, функциональность, а неважными – удобство использования и удобство создания коммерческого ПО.


Шаг 1. Доступность – Eclipse (-1,5 – NetBeans).

Шаг 2. Производительность – VS (-20 – NetBeans, Eclipse).

Шаг 3. Безотказность – NetBeans (-20 – VS).

Шаг 4. Портабельность – Eclipse (-40 – NetBeans, VS).

Шаг 5. Техподдержка – VS (-2,5 – Eclipse, NetBeans).

Шаг 6. Администрирование – NetBeans (-1 – VS).

Шаг 7. Функциональность – VS (-12,5 – Eclipse).

Необходимо увеличить уступку либо на шаге 1 (что нерационально), либо на шаге 7.

Шаг 8. Удобство использования – NetBeans (-0,5 – VS).

Шаг 9. Удобство коммерческого использования – Eclipse (-5 – VS).

Необходимо увеличить уступку либо на шаге 1 (что опять нерационально), либо на шаге 9.

Таким образом, оптимальные средства (из рассмотренных) для системного программирования найдены: это среда NetBeans и языки C/C++. Несколько менее оптимальной для решения таких задач будет являться Visual Studio. Также, данный анализ может быть легко повторён для других отраслей, либо с более широким спектром IDE и языков программирования. Важно отметить, что его результаты во многом зависят от требований ЛПР в условиях реального проекта. По ходу работы работоспособность метода анализа демонстрировалась на гипотетическом, относительно абстрактном примере.

Выводы к Главе 3

Среда разработки Visual Studio ориентирована на коммерческое применение профессионалами в рамках ОС Windows. Она – единственная из рассмотренных, поддерживает полноценно .NET Framework и C#, и может использоваться для развёртывания Windows-приложений наиболее эффективно, но у неё жесточайшие требования (включая и зависимость от Windows).

Eclipse больше подойдёт опытному программисту, имеющему крупный модульный проект и необходимость постоянно расширять условия разработки. NetBeans лучше всего может использоваться для обучения и разработки «экспромтом», благодаря своей простоте. Все рассмотренные IDE имеют полноценную поддержку плагинов и сетевых сервисов.

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

ЗАКЛЮЧЕНИЕ

По результатам работы, было выведено следующее:

  • Самые популярные на сегодняшний день языки программирования поддерживают в обязательном порядке высокоуровневое программирование.
  • Многие современные среды проектирования многоязычны, их уже нельзя рассматривать в связке с одним ЯП.
  • Рассматривать ЯП и среды проектирования предпочтительно с точки зрения сферы их приложения, требования той или иной отрасли. Не существует «серебряной пули», универсально подходящей для решения любой задачи. Так, даже для одной детально разобранной отрасли применения (системное ПО), оптимальный вариант языка или среды изменится при перемене единственного условия.
  • Рассматривать высокоуровневые ЯП необходимо с учётом возможностей не только синтаксиса, но и библиотеки языка. К примеру, язык C++ реализует одну из парадигм проектирования посредством библиотеки STL.

Также, были составлены достаточно точные сравнительные таблицы языков и сред, выведены и проанализированы их характеристики и возможности, был предложен метод сравнительного анализа языков и сред проектирования. В целом, алгоритм такого анализа включает анализ требований отрасли по языку и среде, поиск оптимального языка методом последовательных уступок (при размере уступки, равном простой арифметической операции над 1-м оптимальным вариантом и n-ым оптимальным вариантом, где n меньше или равно номеру текущего критерия), поиск оптимальной аналогичным методом. При этом в качестве входных данных необходимы 2 списка с требованиями отрасли, составленные методом попарного анализа, и 2 таблицы с усреднёнными характеристиками искомых технологий.

Стоит отметить, что данный метод не даёт гарантированный результат, поскольку технологии постоянно развиваются, а требования к ним меняются. Однако, он позволяет оперативно определить технологии разработки ПО перед её непосредственным началом, существенно упрощая принятие решений в выборе таких технологий.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Нормативно-техническая документация

1. ГОСТ 28397-89 (ИСО 2382-15-85). Языки программирования. Термины и определения // Информационная технология. Термины и определения: Сб. – М.: Стандартинформ, 2005. – С. 229 – 236.

2. Единая система программной документации: Сб. – М.: Стандартинформ, 2010. – 170 с.

3. Standard ECMA-334 C# Language Specification. 5th edition. – Geneva: Ecma International, 2017. – 516 p. Режим доступа: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf (дата обращения: 26.01.2018).

Моноиздания

4. Бизли Д. Python. Подробный справочник. – Пер. с англ. – СПб.: Символ-Плюс, 2010. – 864 с., ил. ISBN 978-5-93286-157-8.

5. Буйначев С.К. Основы программирования на языке Python: учебное пособие. / С. К. Буйначев, Н. Ю. Боклаг. – Екатеринбург: Изд-во Урал. Ун-та, 2014. – 91, [1] c. ISBN 978-5-7996-1198-9.

6. Кадырова Г.Р. Основы алгоритмизации и программирования: учебное пособие. – Ульяновск: УлГТУ, 2014. – 95 с.

7. Керниган Б. У., Ритчи Д. М. Язык программирования C, 2-е изд. : Пер. с англ. — М. : Вильямс, 2009. — 304 с.

8. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции. – СПб.: БХВ-Петербург, 2005  - 480 с.

9. Орлов С. Теория и практика языков программирования: Учебник для вузов. 2-е изд. Стандарт 3-го поколения. - СПб.: Питер, 2017. – 688 с.: ил. – (серия «Учебник для вузов»). ISBN 978-5-496-00032-1.