Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

В I разделе, хотелось бы осветить значение классификации языков программирования . Выяснить историю появления, а также историю развития языков. На что были способны самые первые ЭВМ, а также понять, на какие классы делятся всем известные языки, предназначенные для записи компьютерных программ.

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

В III разделе, речь идет о роли интегрированной среды в разработке программ. Возникает вопрос возможной классификации и частично обозреваются интегрированные среды по классам.

IV раздел посвящен критериям выбора среды разработки (IDE), в котором представлена пять популярных сред. В которых указаны как недостатки, так и преимущества.

Литература приведенная в курсовой работе издана в период с 2012-2016 год. Источниками являются учебные и методические пособия, энциклопедии, статьи. Вся литература является надежной, т.к. применяется в средне-специальных и высших учебных заведениях в образовательных целях.

I. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

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

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

Язык программирования – считается формальным языком для описания алгоритма и решения задачи на компьютере.

«Функционирование ЭВМ осуществляется на основе принципа программного управления»[1]. То есть, программа, представляющая собой последовательность команд, реализует алгоритм решения задачи и вводится в память ЭВМ. Ее автоматическое выполнение начинается с первой команды. После каждой выполненной команды машина самостоятельно переходит к выполнению последующей задачи. Происходит это, до определенного момента, пока не встретится команда, предписывающая окончание вычисления.

Структура команды ЭВМ включает в себя две части: операционную и адресную.

[2]Операционная часть содержит код операции (сложения, вычитание, ...).

[3]Адресная часть содержит адреса ячеек памяти. В них хранятся значения компонентов с которыми надо выполнить заданную операцию. В зависимости от числа адресов, указанных в команде, различают одно-, двух-, трех- адресные команды.

1.1 История развития языков программирования

Первые языки программирования дали о себе знать еще до появления современных электронных вычислительных машин.

В XIX веке были изобретены устройства, которые можно отнести к программируемым, например механическое пианино и ткацкие станки.

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

Очень значимым считался «язык», на котором А. Лавлейс,[4] в последствии написала программу для вычисления чисел Бернулли для аналитической машины Ч.Бэббиджа. Позже этот компьютер стал первым механическим компьютером.

В 1940-е годы, появились электрические цифровые компьютеры и был разработан язык. Примерно в этот же период времени были выстроены математические абстракции А.Тьюрингом, А.Марковым и А.Чёрч.

[5]Первый высокоуровневый язык для ЭВМ создал немецкий инженер К. Цузе в 1945 году.

В начале 50-х годов, в создании программ используется машинный код,

где запись программы состоит из единиц и нулей. Этот код начали считать языком программирования 1-го поколения. Затем этот метод заменили другим методом, новым языком программирования 2-го поколения (Ассемблер).

С середины 1950-х начали появляться языки 3-го поколения (Fortran, LISP и Cobol). Языки программирования этого типа абстрактны и универсальны. Не имеют жесткой зависимости от конкретной аппаратной платформы и используемых на ней машинных команд.

С 1960-1970 год были разработаны базовые парадигмы языков программирования, используемые в настоящее время.

  • Язык APL первый язык, поддерживающий обработку массивов.
  • Язык ПЛ/1 (NPL) был разработан в 1960-х годах. Был создан на основе объединения в себе лучших черт языков Fortran и Cobol.
  • Язык SIMULA, появился примерно в это же время, что и язык ПЛ/1 (NPL) и впервые включал в себя поддержку объектно-ориентированного программирования.
  • В середине 1970-х группа специалистов представила язык Smalltalk, который уже был целиком объектно-ориентированным.
  • В период с 1969 по 1973 годы велась разработка языка Си, популярного и сейчас, ставшего основой для множества последующих языков, например, как С++ и Java.
  • В 1972 году был создан Prolog— больше известный, как язык логического программирования.
  • В 1973 году в языке ML была разработана расширенная система многообразной классификации, положившая начало типизированным языкам функционального программирования.

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

В 80-е годы язык С++ объединил в себе черты независимого объектно-ориентированного и системного программирования.

Язык Ада, произведенный от Паскаля предназначался для использования в бортовых системах управления военными объектами.

В Японии и других странах мира вносились значительные инвестиции в изучение так называемых перспективных языков 5-го поколения, которые включали бы в себя конструкции логического программирования. Сообщество функциональных языков приняло в качестве стандарта такие языки, как ML и LISP.

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

Важным направлением работ становятся визуальные (графические) языки программирования. В них процесс «написания» программы как текста заменяется на процесс «рисования» , т.е. конструирования программы в виде диаграммы на экране ЭВМ. Визуальные языки обеспечивают наглядность и лучшее восприятие программы.

В 1990-х годах в связи с активным развитием Интернета распространение получили языки, позволяющие создавать сценарии для веб-страниц - главным образом Perl. Который развивался из скриптового инструмента для Unix-систем, и Java.

1.2 Процедурные языки программирования

Процедурные (алгоритмические) языки программирования - являются языками высокого уровня. Эти языки задействуют метод разбиения программ на отдельные связанные между собой модули - подпрограммы. Компоненты этого языка состоят из последовательности операторов, которые используют библиотечные процедуры и функции.

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

Все зависит от степени детализации предписаний. Чем меньше детализация, тем выше уровень языка.

По словам Кадыровой. Г. Р. :

«Процедурные языки разделяют на языки низкого и высокого уровня.» [6]

Язык программирования, предназначенный для определенного типа компьютера и отражающий его внутренний машинный код, называется языком низкого уровня. К языкам низкого уровня относятся: машинные и машинно-ориентированные языки.

В 1 части Тюгашева, А.А. утверждено следующее:

«Машинные коды можно считать языками программирования первого поколения.»

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

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

Но также при пользовании им легко было допустить ошибку, записав не в той последовательности 1 или 0.

Процесс написания программы на машинном языке очень трудоемкий и утомительный. И минусом такого языка является то, что программирование машинных кодов требовало от программиста много времени, усердия, повышенного внимания. Результатом стало то, что программу было очень трудно контролировать.

Кроме того, программирование в машинных кодах подразумевало под собой должные знания внутренней структуры ЭВМ и принципов работы каждого блока. Применение машинных языков требует знания специфики представления и преобразования информации в ЭВМ.

Для упрощения выше поставленной задачи стали появляться машинно-ориентированные языки программирования низкого уровня, которые позволяли задавать машинные команды в более понятном виде.

Машинно – ориентированные языки представляют собой наборы операторов и изобразительные средства, которые существенно зависят от особенностей ЭВМ : внутреннего языка, структуры памяти и др.

Этот язык позволяет использовать все возможности и особенности машинно – зависимых языков, а именно :

  • высокое качество создаваемых программ (компактность и скорость выполнения);
  • возможность использования конкретных аппаратных ресурсов;
  • предсказуемость объектного кода и заказов памяти;
  • для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;
  • трудоемкость процесса составления программ (особенно на машинных ).

Машинно-ориентированным языком (низкого уровня) является Ассемблер. Но опираясь на замечание Тюгашева. А.А.

"Уже этот подход стали называть автоматическим программированием". [8]

То есть, язык был создан для автоматизации программирования, где для каждой ЭВМ разрабатывался свой автокод (или Ассемблер).

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

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

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

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

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

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

Трансляторы реализуются в виде: интерпретаторов, компиляторов, препроцессоров и эмуляторов.

Интерпретатор переводит каждую команду программы с одновременным ее выполнением и, если обнаруживает ошибку, сообщает о ней и прекращает выполнение программы.

А также интерпретатор, превращают часть программы в машинный код. После выполняют его и переходят к следующей части. Но метод интерпретации имеет два недостатка:

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

Несмотря на вышеперечисленные недостатки, трансляторы-интерпретаторы получили достаточное распространение.

Компиляторы[9] - превращают текст программы в машинный код. Этот код можно сохранить, а затем использовать уже без компилятора. Например, файлы с расширением *. exe.

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

Данный процесс программы включает два действия:

  • анализ (определение правильности записи исходной программы в соответствии с правилами построения языковых конструкций входного языка)
  • синтез (генерирование эквивалентной программы в машинных кодах).

Препроцессор - это транслятор без создания исполняемого файла или выполнения программы.

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

Препроцессоры бывают синтаксические и лексические.

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

Примерами служат такие языки, как Lisp и OCaml. В некоторых языках используется полностью независимый язык для описания преобразований: XSLT препроцессор для XML или его аналог со статическими типами CDuce.

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

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

1.3 Непроцедурные языки программирования

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

Источник: Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. - Ульяновск : УлГТУ, 2014. 95 с. . Раздел: Языки и методологии программирования., Классификация языков программирования. с.15., Рис 2.1 .

Объектно-ориентированный язык окружает себя множеством независимых объектов. Каждый объект ведет себя подобно отдельному компьютеру, их можно использовать для решения задач как «черные ящики», не вникая во внутренние механизмы их функционирования. Наиболее популярный язык программирования: Си++. Для широкого круга используется : Delphi и Visual Basic.

Для признания проекта объектно-ориентированным, объекты должны соответствовать таким требованиям, как : инкапсуляция, наследование и полиморфизм.

Инкапсуляция – механизм, который объединяет данные и код. Управляет этими данными, а также защищает и то, и другое от внешнего вмешательства. В объектно-ориентированном программировании код и данные могут быть объединены вместе. Объект создается посредством объединения кода и данных.

Наследование – свойство объектов порождать своих «потомков». Это значит, что новый объект можно определить на основе уже существующих объектов, При этом он будет собирать в себе все свойства и методы родительского. Наследование полезно, когда требуется создать новый объект, обладающий дополнительными свойствами по сравнению со старым.

Полиморфизм – многие объекты могут иметь одноименные методы, которые могут выполнять разные действия для разных объектов. Выполнение каждого конкретного действия будет определяться типом данных.

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

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

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

Процедуру его получения («алгоритм») программист не выстраивает В этих языках отсутствует понятие «оператор» или «команда».

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

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

Этот язык ориентирован на систематическое и формализованное описание задачи. Цель заключается в решении, исходя из составленного описания.

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

Язык логического программирования несомненно формализует логику поведения. Применим для описаний правил принятия решений. Но недостатком этого языка приходится низкое быстродействие (из-за метода проб и ошибок посредством поиска с возвратами).

Примеры. Первым языком логического программирования был язык Planner. В нем закладывалась возможность автоматического вывода результата из данных и заданных правил перебора вариантов. Planner использовался для снижения требований к вычислительным ресурсам. А также для возможности обеспечить вывод фактов, без активного использования стека. Позже, в университете г. Марсель в 1971 г. был разработан Prolog, язык, который не требовал плана перебора вариантов.

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

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

Этот подход породил целое семейство языков. Родоначальником этого семейства стал язык программирования LISP.

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

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

II. КРИТЕРИИ ВЫБОРА ЯЗЫКА ПРОГРАММИРОВАНИЯ

2.1 Факторы выбора

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

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

Очень важно, при выборе языка нужно учитывать множество факторов. К примеру, если при разработке динамической Web-страницы в качестве лучшего варианта нужно выбирать JavaServer Pages (JSP)/сервлеты, PHP или похожий язык сценариев. Нет какого-то одного языка, который является лучше остальных. У каждого из нас есть возможность выбора языка при определенных факторах. Кто-то отдает свое препочтение производительности и безопасности корпоративных приложений, а кто-то первым делом обращает внимание на количество строк кода. В любом случае это решение достигается с помощью компромиссов.

Джерри Регунад и Неха Джайн утверждают :

"После получения проекта или задания нужно выполнить подготовительную работу до решения поставленной задачи. Очень часто выбор языка не рассматривается как часть этой подготовительной работы."[10]

На месте выбора, как мы и приводили выше важным может оказаться количество строк кода; Например: очевидным выбором для нас, как для специалистов будет язык, который позволяет выполнить задачу в 10 строк кода, вместо 20. Первым делом мы работаем, чтобы получить решение. А позже уже заботимся о читаемости или производительности.

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

Правильный выбор языка программирования косвенно влияет на создание компактного, простого в отладке, расширения, документирования и исправления ошибок решения.

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

  • Целевая платформа.
  • Гибкость языка.
  • Время исполнения проекта.
  • Производительность.
  • Поддержка и сообщество.

2.2 Целевая платформа

Целевая платформа, является одним из наиболее важных факторов, на котором будет работать программа. Рассмотрим на примере Java™ и C.

Если программа написана на C и должна работать на машинах с Windows® и Linux®, потребуются компиляторы для платформ и два разных исполняемых файла. В случае с Java, сгенерированного байт-кода будет достаточно для выполнения программы на любом компьютере, на котором имеется виртуальная Java-машина.

Аналогичный аргумент применим и для Web-сайтов. Они должны выглядеть и работать одинаково во всех браузерах. Использование тегов CSS3 и HTML5 без проверки совместимости с браузерами приведет к разному отображению и поведению сайта в разных браузерах.

2.3 Гибкость

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

Рассмотрим следующие вопросы, связанные с гибкостью:

  • Можно ли использовать новую функциональность без подключения новой библиотеки?
  • Если нет, доступна ли эта функциональность в библиотеке языка?
  • Если эта функциональность не встроена в язык и не доступна в библиотеке, какие усилия нужно приложить для ее создания с нуля?

До принятия решения нужно решить, как именно спроектирована программа и также какие функциональные возможности перенесены на более поздний срок.

Несмотря на то, что технически данное сравнение языков некорректно, рассмотрим Python и Perl. Будучи очень разными, эти языки имеют много общего. Оба языка универсальны , если проводить параллель с PHP. Достаточно развиты в отличии от shell, awk и им подобных. Perl и Python являются скриптовыми языками программирования. Так вот, Perl в сравнении с Python имеет встроенную поддержку регулярных выражений. В Python необходимо вводить модуль re из стандартной библиотеки.

2.4 Время исполнения проекта

Время исполнения и легкость освоения языка очень тесно связаны между собой. По мнению зав. кафедрой Информационных систем Сыктывкарского университета Бабенко В.В. и канд. физ. мат. наук, доцента Сыктывкарского университета Гольчевского Ю.В. :

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

По мнению Джерри Регунада и Нехи Джайн :

«Время исполнения - это неотъемлемый критерий, на который стоит опираться при выборе языка разработки какой-либо из программ.»[12]

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

Время исполнения любого проекта зависит от размера кода. В теории, чем легче изучить язык и чем меньше объем кода, тем меньше это время.

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

2.5 Производительность

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

Рассмотрим два варианта Web-приложения, написанных на Java и на Python. На основании данных тестирования можно прийти к заключению, что в одинаковой среде приложение, написанное на Java, должно работать быстрее, чем приложение, написанное на Python. А как насчет самой среды? Если средой является одноядерная x86 Ubuntu Intel Q6600, это справедливо, поскольку вычислительная мощность ограничена. А если взять Web-приложение, работающее в облачной среде на Google App Engine? Такое приложение может использовать практически неограниченную процессорную мощность, и обе программы возвращают результаты почти за одно и то же время. Теперь основным фактором выбора будет количество строк кода и удобство обслуживания.

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

2.6 Поддержка и сообщество

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

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

Хороший пример значения сообщества дает язык Perl. Архив Comprehensive Perl Archive Network (CPAN) поддерживается усилиями сообщества. Главная цель CPAN – помочь программистам в поиске модулей и программ, не включенных в стандартный дистрибутив Perl. По своей структуре он децентрализован; авторы обслуживают и улучшают свои собственные модули. Обычной практикой является создание ответвлений и конкурирующих модулей для одной и той же задачи или цели.

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

III. ОБЗОР И КЛАССИФИКАЦИЯ СРЕД РАЗРАБОТКИ

3.1 Роль ИСР в разработке программ

Интегрированная среда разработки ( IDE) - это совокупность программных средств, которая поддерживает все этапы разработки программного обеспечения. Начиная от написания исходного текста программы до ее компиляции и отладки. Обеспечивает простое и быстрое взаимодействие с другими инструментальными средствами ( программным отладчиком, ,внутрисхемным эмулятором, эмулятором ПЗУ и программатором).

Как правило, среда разработки ориентирована на определенный язык программирования. А также на набор функций, которые наиболее близко соответствует парадигмам этого языка. Но есть некоторые IDE с поддержкой нескольких языков, такие как: Eclipse, ActiveState Komodo, последние версии NetBeans, Microsoft Visual Studio, WinDev и Xcode.

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

Цель ИСР является : абстрагировать необходимую конфигурацию. Которая в дальнейшем объединится с утилитой командной строки в одном модуле. Этот модуль позволит уменьшить время, для изучения языка. И в конечном счете повысить производительность разработчика.

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

Сейчас большинство современных IDE являются графическими.

Среды разработки использовались еще до появления системы управления окнами ( Microsoft Windows или X11 для *nix-систем).Раньше же они были основаны на тексте, используя функциональные клавиши или горячие клавиши, для выполнения различных задач (Turbo Pascal).

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

В дальнейшем эти пометки могут выделяться редакторами ( vim, emacs, встроенный редактор Visual Studio) или использоваться для организации совместной работы с построением тегов и задач (например, в IntelliJ). Использование комментариев с TODO также является стандартом оформления кода на Object Pascal, Delphi. Microsoft в руководстве по Visual Studio рекомендует использовать тег TODO (наравне с HACK, UNDONE) для следующих пометок:

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

3.2 Классификация ИСР

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

Отсюда, ученые выдвинули следующую классификацию свободно распространяемых сред :

– ИСР с поддержкой одного языка программирования;

– ИСР с поддержкой нескольких языков программирования;

– ИСР разработки веб-систем и приложений;

– ИСР, направленные на детскую аудиторию.

ИСР ориентированные на один язык программирования: PyScripter, Lazarus,Wing IDE, DrPython.

Свободно распространяемые среды разработки программ, направленные на несколько языков программирования: SharpDevelop, CodeLite, Anjuta, Eric, Eclipse, HiAsm, Kylix, Dev-C++, MonoDevelop, NetBeans, Xcode и пр,.

Из перечня свободных сред предназначенных для создания веб-приложений и приложений можно выделить следующие: MooTools, Code::Blocks, Codelobster PHP Edition, Geany, Ultimate++, Symfony, Grails.С помощью этих сред разработки специалисты, производят создание сайтов и Интернет-интерфейсов.

Основной целью использования, сред разработки направленных на детскую аудиторию, является поощрение детей в изучении программирования. К ним относятся: Algo, Alice, EToys, Scratch, Squeak и т.п

3.3 Обзор IDE по классам

Рассмотрим по одной IDE , из каждого предполагаемого класса.

Интегрированная среда ориентированная на один язык программирования:

Lazarus

Открытая среда разработки ПО на языке Object Pascal для компилятора Free Pascal.

Бесплатно распространяемый компилятор языка программирования Pascal. Культин. Н.Б. считает, что :

«Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi - подобном окружении.»[14]

Позволяет достаточно несложно переносить Delphi-программы с графическим интерфейсом в различные операционные системы: Linux, FreeBSD, Mac OS X, Microsoft Windows, Android. Начиная с Delphi XE2 в самом Delphi имеется возможность компиляции программ для Mac OS X, с версии XE4 — для iOS, с версии XE5 — для Android, с версии 10.2 Tokyo — для Linux(x64).

Особенности :

Основан на библиотеке визуальных компонентов Lazarus Component Library (LCL). В настоящее время практически полностью поддерживает виджеты Win32, GTK1, GTK2, Carbon, Qt. В разработке находятся виджеты WinCE.

  • Поддерживает преобразование проектов Delphi
  • Реализован основной набор элементов управления
  • Редактор форм и инспектор объектов максимально приближены к Delphi
  • Интерфейс отладки (используется внешний отладчик GDB)
  • Простой переход для Delphi программистов благодаря близости LCL к VCL
  • Полностью юникодный (UTF-8) интерфейс и редактор и поэтому отсутствие проблем с портированием кода, содержащего национальные символы
  • Мощный редактор, включающий систему подсказок, гипертекстовую навигацию по исходным текстам, автозавершение и рефакторинг
  • Форматирование исходного текста «из коробки», используя механизмы Jedi Code Format
  • Поддержка двух стилей ассемблера: Intel и AT&T (поддерживаются со стороны компилятора)
  • Поддержка множества типов синтаксиса Pascal: Object Pascal, Turbo Pascal, Mac Pascal, Delphi (поддерживаются со стороны компилятора)
  • Имеет собственный формат управления пакетами
  • Авто сборка самого себя (под новую библиотеку виджетов) нажатием одной кнопки
  • Поддерживаемые для компиляции ОС: Linux, Microsoft Windows (Win32, Win64), Mac OS X, FreeBSD, WinCE, OS/2

Свободно распространяемые среды разработки программ, направленные на несколько языков программирования:

NetBeans

Бесплатная среда разработки с открытым исходным кодом. Подходит для редактирования существующих проектов или создания новых. NetBeans предлагает простой drag-and-drop интерфейс, который поставляется с большим количеством удобных шаблонов проектов. Среда в основном используется для разработки Java приложений, но можно устанавливать пакеты, поддерживающие другие языки.

Поддерживаемые языки программирования: C, C++, C++ 11, Fortran, HTML 5, Java, PHP и другие.

Особенности:

  • Интуитивный drag-and-drop интерфейс;
  • Динамические и статические библиотеки;
  • Интеграция нескольких сессий GNU-отладчика с поддержкой кода;
  • Возможность осуществлять удаленное развертывание;
  • Совместимость с платформами Windows, Linux, OS X и Solaris;
  • Поддержка Qt Toolkit;
  • Поддержка Fortran и Assembler;
  • Поддержка целого ряда компиляторов, включая CLang / LLVM, Cygwin, GNU, MinGW и Oracle Solaris Studio.

Недостатки:

Эта бесплатная среда разработки потребляет много памяти, поэтому может работать медленно на некоторых ПК.

Code::Blocks

Еще один популярный инструмент с открытым исходным кодом. Гибкая IDE, которая стабильно работает на всех платформах, поэтому она отлично подходит для разработчиков, которые часто переключаются между рабочими пространствами. Встроенный фреймворк позволяет настраивать эту IDE под свои потребности.

Поддерживаемые языки: C, C++, Fortran.

Особенности:

  • Простой интерфейс с вкладками открытых файлов;
  • Совместимость с Linux, Mac и Windows;
  • Написана на C++;
  • Не требует интерпретируемых или проприетарных языков программирования;
  • Множество встроенных и настраиваемых плагинов;
  • Поддерживает несколько компиляторов, включая GCC, MSVC ++, clang и другие;
  • Отладчик с поддержкой контрольных точек;
  • Текстовый редактор с подсветкой синтаксиса и функцией автоматического заполнения;
  • Настраиваемые внешние инструменты;
  • Простые средства управления задачами, идеально подходящие для совместной работы.

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

Scratch

Scratch — визуальная событийно-ориентированная среда программирования, созданная для детей и подростков.

Scratch создан как продолжение идей языка Logo и конструктора Лего. Первая версия Scratch 1.4 была написана на языке Squeak, который также является диалектом языка Smalltalk.

Особенности:

Спроектирована со специальной средой программы, которая основана на языке Лого. Создана специально для детей и подростков (8-16 лет);

Преимущества:

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

В этом разделе мы выяснили значение IDE, какую роль она играет в разработке программ, а также на какие классы можно разбить эти среды разработки.

Ну и в конечном итоге, какими особенностями обладают те, или иных интегрированные среды разработки .

IV. КРИТЕРИИ ВЫБОРА СРЕДЫ РАЗРАБОТКИ

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

В любом случае, интегрированная среда разработки должна содержать в себе, как минимум:

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

Возьмем для примера наиболее популярные среды разработки.

4.1 Microsoft Visual Studio.

Большое количество версий этой IDE способны создавать все типы программ, от веб-приложений и заканчивая мобильными приложениями, видеоиграми. Эта линейка ПО является платной и включает в себя множество инструментов для тестирования совместимости. Гибкости Visual Studio позволяет пользоваться этим инструментом как студентам, так и профессионалам.

Поддерживаемые языки: Ajax, ASP.NET, JavaScript, JScript, Visual Basic, Visual C#, Visual C++, Visual F#, XAML и другие.

Особенности:

  • Библиотека расширений, которая постоянно увеличивается;
  • IntelliSense(технология автозаполнения от Microsoft);
  • Настраиваемая панель и закрепляемые окна;
  • Легкость рабочего процесса и файловая иерархия;
  • Статистика мониторинга производительности в режиме реального времени;
  • Инструменты автоматизации;
  • Легкий рефакторинг и вставка фрагментов кода;
  • Поддержка разделенного экрана;
  • Список ошибок, который упрощает отладку;
  • Проверка утверждения при развертывании приложений с помощью ClickOnce, Windows Installer или Publish Wizard.

Недостатки :

Visual Studio является супертяжелой IDE, для открытия и запуска приложений. Для этого требуется значительное количество ресурсов. По этой причине, на некоторых устройствах внесение простых изменений может занять долгое количество времени. Для простых задач лучше использовать компактный редактор или средство разработки PHP.

4.2 PyCharm

PyCharm разработан командой Jet Brains. Преимуществом является, возможность использовать бесплатную версию Community Edition. Анализ и комплексная поддержка кода делают PyCharm лучшей IDE для Python-программистов.

Поддерживаемые языки: AngularJS, Coffee Script, CSS, Cython, HTML, JavaScript, Node.js, Python, TypeScript.

Особенности:

  • Совместимость с операционными системами Windows, Linux и Mac OS;
  • Поставляется с Django IDE;
  • Легко интегрируется с Git, Mercurial и SVN;
  • Настраиваемый интерфейс с эмуляцией VIM;
  • Отладчики JavaScript, Python и Django;
  • Поддержка Google App Engine.

Недостатки :

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

4.3 IntelliJ IDEA

Эта IDE, также разработана Jet Brains, как и PyCharm . IntelliJ IDEA предлагает пользователям бесплатную версию Community Edition. Эта IDE поддерживает Java 8 и Java EE 7. Также имеет обширный инструментарий для разработки мобильных приложений и корпоративных технологий для различных платформ.

Поддерживаемые языки программирования: AngularJS, CoffeeScript, HTML, JavaScript, LESS, Node JS, PHP, Python, Ruby, Sass, TypeScript и другие.

Особенности:

  • Расширенный редактор баз данных и дизайнер UML;
  • Поддержка нескольких систем сборки;
  • Пользовательский интерфейс тестового запуска приложений;
  • Интеграция с Git;
  • Поддержка Google App Engine, Grails, GWT, Hibernate, Java EE, OSGi, Play, Spring, Struts и других;
  • Встроенные средства развертывания и отладки для большинства серверов приложений;
  • Интеллектуальные текстовые редакторы для HTML, CSS и Java;
  • Интегрированный контроль версий;
  • AIR Mobile с поддержкой Android и iOS.

Недостатки:

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

4.4 Eclipse

Бесплатный и гибкий редактор с открытым исходным кодом. Он может оказаться полезен, для пользователя любого уровня. Первоначально создавался, как среда для Java-разработки. На сегодня Eclipse имеет широкий диапазон возможностей, в силу большого количества плагинов и расширений. Помимо средств отладки и поддержки Git / CVS, стандартная версия Eclipse поставляется с инструментами Java и Plugin Development Tooling. Если этого недостаточно, в открытом доступе много других пакетов: инструменты для построения диаграмм, моделирования, составления отчетов, тестирования и создания графических интерфейсов. Клиент Marketplace Eclipse открывает пользователям доступ к хранилищу плагинов и информации.

Поддерживаемые языки: C, C++, Java, Perl, PHP, Python, Ruby и другие.

Особенности:

  • Множество пакетных решений, обеспечивающих многоязычную поддержку;
  • Улучшения Java IDE, такие как иерархические представления вложенных проектов;
  • Интерфейс, ориентированный на задачи, включая уведомления в системном трее;
  • Автоматическое создание отчетов об ошибках;
  • Параметры инструментария для проектов JEE;
  • Интеграция с JUnit.

Недостатки:

Некоторые параметры этой ИСР могут запугать новичков. Eclipse не обладает всеми теми функциями, что и IntelliJ IDEA, но является средой с открытым исходным кодом.

4.5 Aptana Studio 3

Одна из самых мощных IDE с открытым исходным кодом. За последний период Aptana Studio 3 была значительно улучшена по сравнению с предыдущими версиями. Поддерживает большинство спецификаций браузеров. По этой причине пользователи этой среды могут с ее помощью быстро разрабатывать, тестировать, а также развертывать веб-приложения.

Поддерживаемые языки: HTML5, CSS3, JavaScript, Ruby, Rails, PHP и Python.

Особенности:

  • Подсказки для CSS, HTML, JavaScript, PHP и Ruby;
  • Мастер развертывания с простой настройкой и несколькими протоколами, включая Capistrano, FTP, FTPSи SFTP;
  • Возможность автоматической установки созданных приложений Ruby и Rails на серверы хостинга;
  • Интегрированные отладчики для Ruby и Rails и JavaScript;
  • Интеграция с Git;
  • Простой доступ к терминалу командной строки с сотнями команд;
  • Строковые пользовательские команды для расширения возможностей.

Недостатки:

Имеются проблемы со стабильностью, а также низкая работоспособность. Поэтому более опытные разработчики предпочитают более мощную HTML среду разработки.

Вывод : выбор среды программирования определяется характером проекта, предпочтениями и навыками его разработчика, требованиями заказчика, а также общественным мнением. И все это, как следствие определяется на практике.

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

ЗАКЛЮЧЕНИЕ

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

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

Выявлены значение и роль IDE в разработке программ. А также рассмотрена классификация сред разработки.

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

БИБЛИОГРАФИЯ

1. Алехин, В.А. Микроконтроллеры PIC: основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus. Практикум / В.А. Алехин. - М.: ГЛТ , 2016. - 248 c.

2. Ашарина, И.В. Основы программирования на языках С и С++: Курс лекций для высших учебных заведений / И.В. Ашарина. - М.: ГЛТ, 2012. - 208 c.

3. Ашарина, И.В. Основы программирования на языках C и C++ / И.В. Ашарина. - М.: ГЛТ, 2012. - 208 c.

4. Биллиг, В. Основы программирования на C# / В. Биллиг. - М.: Бином. Лаборатория знаний, 2006. - 483 c.

5. Богачев, К.Ю. Основы параллельного программирования: Учебное пособие / К.Ю. Богачев. - М.: Бином, 2014. - 342 c.

6. Богачев, К.Ю. Основы параллельного программирования / К.Ю. Богачев. - М.: Бином, 2015. - 342 c.

7. Гавриков, М.М. Теоретические основы разработки и реализации языков программирования: Учебное пособие / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. - М.: КноРус, 2010. - 184 c.

8. Гедранович, В.В. Основы компьютерных информационных тех-нологий: учеб.-метод. комплекс / В.В.Гедранович, Б.А. Гедрано-вич, И.Н. Тонкович.–Минск: Изд-во МИУ, 2009. –344 с.: ил.

9. Глушков В.М., Амосов Н.М., Артеменко И.А. Энциклопедия кибернетики. Том 2. Киев, 1974 г. К.: Главная редакция украинской советской энциклопедии, 1974. — 624 с.

10. Дорогов, В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова; Под общ. ред. проф. Л.Г. Гагарина. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 224 c.

11. Зыков, С.В. Основы современного программирования. Разработка гетерогенных систем в Интернет-ориентированной среде: Учебное пособие / С.В. Зыков. - М.: ГЛТ, 2012. - 444 c.

12. Зыков, С.В. Основы современного программирования: Учебное пособие для вузов / С.В. Зыков. - М.: ГЛТ , 2012. - 444 c.

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

14. Карпов, Ю. Теория и технология программирования. Основы построения трансляторов / Ю. Карпов. - СПб.: BHV, 2012. - 272 c.

15. Колдаев, В.Д. Основы алгоритмизации и программирования: Учебное пособие / В.Д. Колдаев; Под ред. Л.Г. Гагарина. - М.: ИД ФОРУМ, ИНФРА-М, 2019. - 414 c.

16. Культин, Н. Основы программирования в Turbo C++ / Н. Культин. - СПб.: BHV, 2007. - 464 c.

17. Культин, Н.Б. Основы программирования в Delphi XE / Н.Б. Культин. - СПб.: BHV, 2011. - 416 c.

18. Культин, Н.Б. Основы программирования в Turbo Delphi / Н.Б. Культин. - СПб.: BHV, 2012. - 384 c.

19. Культин, Н.Б. Основы программирования в Turbo C++ / Н.Б. Культин. - СПб.: BHV, 2013. - 464 c.

20. Кундиус, В.А. Теоретические основы разработки и реализации языков программирования / В.А. Кундиус. - М.: КноРус, 2013. - 184 c.

21. Окулов, С.М. Основы программирования, переизданное / С.М. Окулов. - М.: Бином, 2015. - 336 c.

22. Окулов, С.М. Основы программирования / С.М. Окулов. - М.: Бином. Лаборатория знаний, 2012. - 336 c.

23. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков. - М.: ИЦ Академия, 2012. - 400 c.

24. Семакин, И.Г. Основы алгоритмизации и программирования. Практикум: Учебное пос. для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 144 c.

25. Семакин, И.Г. Основы алгоритмизации и программирования: Учебник для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков . - М.: ИЦ Академия, 2013. - 304 c.

26. Трофимов, В.В. Алгоритмизация и программирование: учебник для академического бакалавриата / В.В. Трофимов, Т.А. Павловская; под ред. В.В. Трофимова. — М. : Издательство Юрайт., 2018. — 137с.

27. Тюгашев, А.А. Основы программирования. Часть I. – СПб: Университет ИТМО, 2016. – 160 с.

28. Фридман, А. Основы объектно-ориентированного программирования на языке СИ++ / А. Фридман. - М.: Горячая линия -Телеком, 2012. - 234 c.

29. Фридман, А.Л. Основы объектно-ориентированного программирования на языке Си++ / А.Л. Фридман. - М.: Гор. линия-Телеком, 2012. - 234 c.

30. Черпаков, И.В. Основы программирования: Учебник и практикум для прикладного бакалавриата / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

31. Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. - Люберцы: Юрайт, 2016. - 219 c.

Статья:

Регунад, Д. Джейн, Н. Выбор оптимального языка программирования / Факторы выбора. URL: www.ibm.com/developerworks (Дата публикации: 14.09.2012).

Статья:

Arsenault, C. Best IDE Software - a List of the Top 10.

URL: https://www.keycdn.com/blog/best-ide (Дата публикации: 11.07.2017).

Статья:

Бабенко. В.В, Гальчевский. Ю.В. Выбор языков программирования и средств проектирования для обучение специалистов по направлению "Прикладная информатика" (Год публикации: 2013).

URL: https://cyberleninka.ru/article/v/vybor-yazykov-programmirovaniya

  1. Гедранович, В.В. Основы компьютерных информационных тех-нологий: учеб.-метод. комплекс / В.В.Гедранович, Б.А. Гедрано-вич, И.Н. Тонкович.–Минск: Изд-во МИУ, 2009

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

  3. Там же. - См.2.

  4. Тюгашев, А.А. Основы программирования. Часть I. – СПб: Университет ИТМО, 2016. – с. 17.

  5. Там же. - См.4

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

  7. Тюгашев, А.А. Основы программирования. Часть I. – СПб: Университет ИТМО, 2016. – с. 19.

  8. Тюгашев, А.А. Основы программирования. Часть I. – СПб: Университет ИТМО, 2016. – с. 20.

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

  10. URL: www.ibm.com/developerworks / Факторы выбора /.

  11. URL: https://cyberleninka.ru/article/v/vybor-yazykov-programmirovaniya Статья: Бабенко.В.В. Гальчевский.Ю.В. Выбор языков программирования и средств проектирования для обучение специалистов по направлению "Прикладная информатика" (2013г.).

  12. URL: www.ibm.com/developerworks / Гибкость языка /.

  13. Алехин, В.А. Микроконтроллеры PIC: основы программирования и моделирования в интерактивных средах MPLAB IDE, mikroC, TINA, Proteus. Практикум / В.А. Алехин. - М.: ГЛТ , 2016. - 248 c.

  14. Культин, Н.Б. Основы программирования в Turbo Delphi / Н.Б. Культин. - СПб.: BHV, 2012. - 384 c.