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

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

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

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

Добавлен: 31.03.2023

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

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

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

Процедурные языки программирования также носят названия императивные или алгоритмические. Это проблемно-ориентированные языки, которые облегчают выражение процедуры как точного алгоритма и представляют собой не столько саму задачу (т. е., что нужно получить), сколько её решение (т. е., как это получить). Примерами могут служить такие языки программирования, как Fortran, ALGOL, PL/1, APL, BPL, COBOL, Pascal, C, Basic.[20]

Следует отметить, что процедурные языки в свою очередь подразделяются на структурные, операционные и параллельные. Для структурных (модульных, директивных) языков характерно, что одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т. д. (ALGOL, Pascal, Си, ПЛ/1). В операционных (неструктурных) языках используются несколько операций для записи одной алгоритмической структуры и допускается использование в явном виде команды безусловного перехода (в большинстве языков GOTO, ранние версии Basic и Фортрана). При использовании параллельных языков (другие названия – язык поддержки параллельных вычислений, язык реального времени) программа представляется как совокупность описаний процессов, которые могут выполняться одновременно или в режиме разделения времени (Ada, Modula-2, Oz).[21]

Ещё один вид языков программирования в их классификации по парадигмам – непроцедурные. Непроцедурные или декларативные языки описывают по большей части саму задачу (т. е., что нужно получить), а с помощью чего и как будет получено решение определяет уже компьютер. Среди таких языков отмечают LISP (Interlisp, Common Lisp, Scheme), SML, Haskell, Prolog.[22]

Непроцедурные языки делятся на функциональные и логические. На функциональных языках программа описывает вычисление некоторой функции, которая задаётся как совокупность более простых функций, делящихся на ряд задач (LISP, HASKELL, Miranda, SML, CaML, Hope). Важно отметить несколько особенностей функциональных языков: их основным элементом является рекурсия (вложенные циклы); в них нет оператора присваивания и циклов. Логические непроцедурные языки базируются на классической логике и применяются в системах логического вывода, в частности в экспертных системах (Prolog, Mercury).[23]

И завершают раскрытие классификации по парадигме программирования объектно-ориентированные языки. Для них характерен тот факт, что программа представляет собой описание объектов, их свойств или атрибутов, совокупностей или классов, отношений между ними, способов их взаимодействия и операций над объектами или методов (C++, Visual Basic, Eiffel, Oberon, Java, Delphi, Simula, Object Pascal, Python, Smalltalk, PHP и т. п.).


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

Классификация по семейственной принадлежности включает в себя следующие группировки языков: С-семейство языков, Pascal-семейство языков, Ada-семейство языков, Lisp-семейство языков и Prolog-семейство языков.[25]

Каждое из вышеперечисленных семейств включает в себе подмножество языковых конструкций определённого языка. С-семейство языков состоит из С, С++, С++ARM, C++Std, C#, C9x, Limbo, Java, Objective C. Pascal-семейство представлено такими языками, как сам Pascal, Modula-2, Oberon, Oberon-2 и Component Pascal. Ada-семейство – это семейство универсальных и многофункциональных языков, к числу которых относятся Mesa, Euclid, сам язык Ada, Cedar, Modula 3 и Ada9x. Языки из семейства Simula широко применяются для решения задач имитационного моделирования. Среди них – сам язык Simula, Smalltalk и BETA. К числу Lisp-семейства относят языки Lisp, Planner, Scheme и Common Lisp, занимающиеся функциональным программированием. А представители Prolog-семейства – языки Prolog, Parlog и CLR(R) – близки к языкам логического программирования.[26]

Есть также ещё одна классификация языков программирования, помимо тех пяти, что были разобраны выше, – по поколениям. Всего выделяется пять поколений. В рамках первого поколения рассматривают машинные языки программирования, которые ориентированы на использование в конкретной ЭВМ, сложны в освоении и требуют хорошего знания архитектуры ЭВМ. Второе поколение представлено ассемблерами и макроассемблерами, которые уже более удобны для использования, однако по-прежнему являются машинно-зависимыми. В третьем поколении главенствуют языки высокого уровня с их мобильностью, человекоориентированностью и простотой в использовании.[27] Четвёртое поколение – это время непроцедурных, объектно-ориентированных, параллельных языков и языков запросов, ориентированных на непрофессионального пользователя и на ЭВМ с параллельной архитектурой.[28] И завершающее, однако не последнее (если учитывать прогресс современных языков программирования) поколение – пятое поколение языков искусственного интеллекта, экспертных систем и баз знаний, естественных языков. Языки этого поколения ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками.


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

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

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

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

Среда разработки программ – это совокупность программных средств, используемая программистами для разработки программ или программного обеспечения.[29]

Есть несколько видов среды разработки программ, среди них широко известны простая и интегрированная среды. В состав простой среды разработки входят следующие составляющие: редактор текста, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Если эти компоненты собрать в единый программный комплекс, то получается интегрированная среда разработки, которую сокращённо обозначают как IDE.[30]

Интегрированная среда включает в себя одну программу, не выходя из которой можно производить весь цикл разработки. В состав интегрированной среды могут входить средства управления проектами, система управления версиями, различные инструменты, которые упрощают разработку интерфейса пользователя, стандартные заготовки («мастера»), делающие проще разработку стандартных задач, и т.п.[31]

Современные же среды разработки, которые поддерживают объектно-ориентированную разработку программного обеспечения, включают также браузер классов, инспектор объектов и диаграмму иерархии классов. Существуют и среды разработки, предназначенные для нескольких языков, — это Eclipse или Microsoft Visual Studio. Однако зачастую среда разработки предназначается для определённого языка программирования.


Чётко определённых критериев, по котором можно выбирать ту или иную среду разработки программ, нет. Однако, в соответствии с несколькими информационными источниками[32], посвящённым сравнительному анализу различных сред разработки, можно выявить критерии, на которые программисты опираются при выборе наиболее подходящей для решения конкретной задачи среды.

Выбирать среду разработки программ нужно по следующим критериям: 1) функциональность, которая рассматривается как возможность программного обеспечения для реализации требуемых задач, инструментарий и разнообразность встроенных функций; 2) надежность, раскрывающаяся как способность программного обеспечения работать без ошибок и отказа компонентов на протяжении всего срока эксплуатации или времени, требуемого для решения поставленных задач; 3) удобство использования, проявляющееся в простоте интерфейса программного обеспечения и лёгкости в освоении работы с ним; 4) эффективность, как способность программного обеспечения выполнять поставленные задачи сохраняя общую производительность, не перегружая систему в которой оно установлено; 5) удобство сопровождения, проявляющееся в поддержке программного обеспечения разработчиком, включающей в себя создание новых версий продукта и поддержку пользователей; 6) портативность в виде способности программного обеспечения работать в различных операционных системах, а также в возможности его переноса в другую систему без потери в функционале; 7) доступность как лёгкость в получении программного обеспечения (доступность источника для скачивания, цена продукта).[33]

Данные критерии наиболее полно охватывают все стороны среды, которые могут оказать определённое влияние на качество разработанной программы.[34] В соответствии с ними можно подобрать нужную и подходящую для решения той или иной задачи среду.

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

Язык программирования определяется множеством показателей, которые характеризуют его отдельные свойства. Для оценки степени приспособленности языка программирования к выполнению возложенных на него функций необходимо ввести определённые меры, которые называют мерами эффективности.[35]


Эффективность определяет степень соответствия языка программирования своему назначению. Она измеряется либо количеством затрат, необходимых для получения определённого результата, либо результатом, который был получен при определённых затратах. Задачу проведения сравнительного анализа эффективности нескольких языков программирования и принятия решение на использование конкретного языка позволяет критерий эффективности.[36]

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

В качестве критериев эффективности выступают: читабельность (легкость чтения и понимания программ); легкость создания программ (удобство языка для создания программ в выбранной области); надёжность (обеспечение минимума ошибок при работе программ); стоимость (суммарная стоимость всего жизненного цикла языка); переносимость программ (легкость переноса программ из одной операционной среды в другую); универсальность (применимость к широкому кругу задач); четкость (полнота и точность официального описания языка).[37]

Рассмотрим эти показатели более подробно.

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

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

Говоря о читабельности, важно упомянуть и простоту языка программирования, ведь она значительно влияет на его читабельность. Язык должен иметь простой набор конструкций, которые могут быть использованы в качестве базисных элементов при создании программы. Желательно обеспечить минимальное количество различных понятий с простыми правилами их комбинирования. Этому мешает наличие в языке нескольких способ описания одного и того же действия.[39] Например, в языке С добавление единицы к целому числу можно записать четырьмя способами.[40] Сильное воздействие на простоту оказывает синтаксис языка: он должен прозрачно отражать семантику конструкций, исключать двусмысленность толкования. Предельно лаконичный синтаксис удобен при написании программы, однако усложняет её модификацию, поскольку в программе нелегко разобраться. Здесь нужен разумный компромисс – простота должна не быть чрезмерной, не должна приводить к загадкам расшифровки.