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

Классификация языков программирования (Сущность и классификация языков программирования)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

Особенности выбора среды и языка разработки программ рассмотрены в работах таких авторов, как Александреску А., Ашарина И.В., Баженова И.Ю., Белоусова С.Н., Васильев Д.А., Гавриков М.М., Гергель В.П., Головин И.Г., Довек Ж., Дорогов В.Г., Касторнова В.А., Кейт Г., Керниган Б.У., Кудрявцева И.А., Лучанинов Д.В., Ленкин А.В., Мавлютов А.Р., Маликов Е.В. и др.. Однако, критерии выбора среды и языка разработки программ рассмотрены очень узко.

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

Достижение поставленной цели обуславливает решение следующих задач:

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

Объектом исследования данной курсовой работы является процесс программирования.

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

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

1. Сущность и классификация языков программирования

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

Одной из самых революционных идей, приведших к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах XIX века Ч.Бэббиджем мысль о предварительной записи порядка действий машины для последующей автоматической реализации вычислений — программе. И, хотя использованная Бэббиджем запись программы на перфокартах, придуманная для управления ткацкими станками французским изобретателем Жозефом Мари-Жаккаром, технически не имеет ничего общего с современными приемами хранения программ в ЭВМ, принцип здесь по-существу один. С этого момента начинается история программирования[1].

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

Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли, сотрудником Пенсильванского университета. Система кодирования, предложенная Моучли, увлекла одну из сотрудниц его компании — Грейс Мюррей Хоппер, которая посвятила всю свою жизнь компьютерам и программированию. Она вспоминает, что стала «третьим в мире программистом первого в мире большого цифрового компьютера». Г.Хоппер доказала, чего она стоит как программист. Впоследствии она писала: «Я имела то преимущество, что изучала как технику, так и математику и знала, как работает машина от начала и до конца»[3].

При работе на компьютере «Марк-1» Г.Хоппер и ее группе пришлось столкнуться со многими проблемами и все, что ими придумано, было впервые. В частности, они придумали подпрограммы. Сейчас любой программист не задумываясь использует аппарат подпрограмм в любом языке программирования. И еще одно фундаментальное понятие техники программирования впервые ввели Г.Хоппер и ее группа — «отладка». Однажды жарким летним днем 1945 г. неожиданно произошла остановка компьютера «Марк-1». Обнаружилась неисправность одного реле, контакты которого были заблокированы мотыльком, залетевшим неизвестно каким образом в помещение вычислительного центра. Вспоминает Г.Хоппер: «Когда к нам зашел офицер, чтобы узнать, чем мы занимаемся, мы ответили, что очищаем компьютер от насекомых (debuging)». С тех пор термин «debuging» (отладка) используется в технических процессах тестирования неисправностей в компьютере, а также в системах программирования.[4]

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

В конце 40-х годов, до прихода Г.Хоппер в фирму Джона Моучли, последний создал систему под названием «Short Code», которая являлась примитивным языком программирования высокого уровня. В ней программист записывал решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти формулы в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система, разработанная Дж. Моучли, была по существу одним из первых примитивных интерпретаторов[6].

Уже в 1951 г. Хоппер создала первый в мире компилятор и ею же был введен сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки — это называется компиляцией» — так она объясняла происхождение введенного ею термина[7].

В 1954 г. группа под руководством Г.Хоппер разработала систему, включающую язык программирования и компилятор, которая в дальнейшем получила название MATH-MATIC. После удачного завершения работ по созданию MATH-MATIC Г.Хоппер и ее группа принялись за разработку нового языка и компилятора, который позволил бы пользователям программировать на языке, близком к обычному английскому. Необходимость появления подобной системы Хоппер объясняла следующим образом: «Существует много различных людей, которым нужно решать разные задачи. Некоторые из них связаны с обработкой символов, другие — с обработкой слов, и им нужны языки другого типа, а не наши попытки превратить их всех в математиков». В 1958 г. появился компилятор FLOW-MATIC. В отличие от ФОР-ТРАНа — языка для научных приложений — FLOW-MATIC был первым языком для задач обработки коммерческих данных. Работы в этом направлении привели к созданию языка КОБОЛ (COBOL — Common Business Oriented Language). Одним из основных консультантов при создании этого языка была Грейс Мюррей Хоппер[8].

Середина 50-х годов характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных командах стала уменьшаться. Начали появляться языки программирования нового типа, выступающие в роли посредника между машинами и программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN, от FORmula TRANslator — переводчик формул), разработанный группой программистов фирмы IBM в 1954 г. (первая версия)[9].

В середине 60-х годов сотрудники математического факультета Дартмутского колледжа Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык назвали «универсальным символическим кодом для начинающих» (Beginners All-Purpose Symbolic Instruction Code, или, сокращенно, BASIC). Годом рождения нового языка можно считать 1964 г. Сегодня универсальный язык Бейсик (имеющий множество версий) приобрел большую популярность и получил широкое распространение среди пользователей ЭВМ различных категорий во всем мире. В значительной мере этому способствовало то, что Бейсик начали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 70-х годов[10].

В начале 60-х годов все существующие языки программирования высокого уровня можно было пересчитать по пальцам, однако впоследствии их число достигло трех тысяч. Разумеется, подавляющая часть языков не получила сколько-нибудь широкого распространения; в практической деятельности используется не более двух десятков. Разработчики ориентировали языки на разные классы задач, в той или иной мере привязывали их к конкретным архитектурам ЭВМ, реализовывали личные вкусы и идеи. В 60-е годы были предприняты попытки преодолеть эту «разноголосицу» путем создания универсального языка программирования. Первым детищем этого направления стал PL/I (Programm Language One), 1967 г. Затем на эту роль претендовал АЛГОЛ-68 (1968 г.). Предполагалось, что подобные языки будут развиваться и усовершенствоваться и вытеснят все остальные. Однако ни одна из этих попыток на сегодняшний день не увенчалась успехом (хотя PL/I в усеченных версиях использовали многие программисты). Всеохватность языка приводила к неоправданной, с точки зрения программиста, сложности конструкций, неэффективности компиляторов[11].

Языки программирования служат разным целям их выбор определяется удобностью пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера бывают самые разнообразные: вычислительные, экономические, графические, экспертные и т.д. Такая разнотипность решаемых компьютером задач и определяет многообразие языков программирования. По всей видимости, в программировании наилучший результат достигается при индивидуальном подходе, исходящем из. класса задачи, уровня и интересов программиста. Например, Бейсик широко употребляется при написании простых программ; Фортран является классическим языком программирования при решении на ЭВМ математических и инженерных задач; язык Кобол (COBOL, от Common Business Oriented Language -общий язык, ориентированный на деловые задачи; создан в 1960 г.)[12] был задуман как основной язык для массовой обработки данных в сферах управления и бизнеса. Еще более специализированным является язык ЛОГО (от греческого logos — слово), созданный для обучения программированию школьников профессором математики и педагогики Сеймуром Пейпертом из Массачусетского технологического института. Обучаясь программированию на ЛОГО, дети задают простые команды, которые управляют игрушечной черепашкой, снабженной карандашиком. Отметим и еще один достаточно популярный специализированный язык — Пролог (Prolog -PROgramming in LOGic), разработанный как язык программирования для создания систем искусственного интеллекта[13].

В конце 50-х годов плодом международного сотрудничества в области программирования явился Алгол (ALGOL, от ALGOrithmic Language — алгоритмический язык). Алгол предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленных задач. Специалисты-практики восприняли этот язык далеко неоднозначно, но, тем не менее, его влияние на развитие других языков и теорию программирования оказалось весьма значительным.

В нашей стране те годы был создан под руководством Сергея Петровича Ершова транслятор Альфа, который представлял довольно удачную русифицированную версию Алгола. Впоследствии академик Ершов сыграл важнейшую роль в становлении в СССР школьной информатики[14].

Развитие идеи Алгола о структуризации разработки алгоритмов нашло наивысшее отражение при создании в начале 70-х годов языка Паскаль швейцарским ученым Никлаусом Виртом. Язык Паскаль первоначально разрабатывался как учебный, и, действительно, сейчас он является одним из основных языков обучения программированию в школах и вузах. Однако, качества его в совокупности оказались столь высоки, что им охотно пользуются и профессиональные программисты[15].

Не менее впечатляющей, в том числе и финансовой, удачи добился джазист Филип Кан, француз, разработавший систему Турбо-Паскаль. Суть его идеи состояла в объединении последовательных этапов обработки программы — компиляции, редактирования связей, отладки и диагностики ошибок — в едином интерфейсе. Версии Турбо-Паскаля заполонили практически все образовательные учреждения, программистские центры и частные фирмы[16].

Период с конца 60-х и до начала 80-х годов характеризуется бурным ростом числа различных языков программирования, сопровождавшим, как это ни парадоксально, кризис программного обеспечения. Этот кризис особо остро переживало военное ведомство США. В январе 1975 г. Пентагон решил навести порядок в хаосе трансляторов и учредит комитет, которому было предписано разработать один универсальный язык. На конкурсной основе комитет проработал сотни проектов и, когда стало ясно, что ни один из существующих языков не может их удовлетворить, принял два проекта для окончательного рассмотрения[17]. В мае 1979 г. был объявлен победитель — группа ученых во главе с Жаном Ихбиа. Победивший язык окрестили АДА, в честь Огасты Ады Лавлейс. Язык АДА — прямой наследник языка Паскаль. — этот язык предназначен для создания и длительного (многолетнего) сопровождения больших программных систем, допускает возможность параллельной обработки, правления процессами в реальном времени и многое другое, чего трудно или невозможно достичь средствами более простых языков[18].

Большой отпечаток на современное программирование наложил язык Си (первая версия — 1972 г.), являющийся очень популярным в среде разработчиков систем программного обеспечения (включая операционные системы). Си сочетает в себе черты как языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не обеспечивают такие языки, как Бейсик и Паскаль[19].

Следует отметить, что многие языки, первоначально разработанные для больших и малых ЭВМ, в дальнейшем были приспособлены к персональным компьютерам. Хорошо вписались в «персоналки» не только Паскаль, Бейсик, Си, Лого, но и ЛИСП, ПРОЛОГ — языки искусственного интеллекта[20].

1.2. Понятие языка программирования

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

Рисунок 1 – Составляющие элементы языка программирования

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

1) Алфавит

Набор символов, образуются из которых команды программы и другие конструкции языка. Каждый язык имеет свой алфавит. Но большинство из них содержит цифры, английские буквы, знаки отношений (равно, больше и др.), знаки арифметических операций (+, *, -, /), синтаксические знаки (точка, точка с запятой и др.)[22].

2) Семантика

Совокупность правил толкования и выполнения конструкций языка программирования. Например, два кода, приведенные далее, имеют одинаковую логику (выполняют одинаковые действия), результаты их выполнения тоже одинаковые. Но семантически коды разные: i = 0; while (i <5) {i ++;} i = 0; do {i ++;} while (i <= 4)

3) Синтаксис

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

4) Словарь

Язык программирования имеет словарь — определенное количество слов, определены правила употребления которых для этого языка и которые имеют строго определенное назначение. Называют такие слова зарезервированными (ключевыми), к примеру, input, for, if, print.

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

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

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

Существующие языки программирования можно разделить на две группы: процедурные и непроцедурные (рис. 2)[24].

Общая классификация языков программирования

Рисунок 2 - Общая классификация языков программирования[25]

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

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

Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора[26].

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

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

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

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

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

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

Работа всех трансляторов строится по одному из двух принципов: интерпретация или компиляция.

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

Несмотря на указанные недостатки, трансляторы-интерпретаторы получили достаточное распространение, так как они удобны при разработке и отладке исходных программ[29].

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

Большая сложность в разработке компилятора по сравнению с интерпретатором с того же самого языка объясняется тем, что компиляция программы включает два действия: анализ, т. е. определение правильности записи исходной программы в соответствии с правилами построения языковых конструкций входного языка, и синтез - генерирование эквивалентной программы в машинных кодах. Трансляция методом компиляции требует неоднократного «просмотра» транслируемой программы, т. е. трансляторы- компиляторы являются многопроходными: при первом проходе они проверяют корректность синтаксиса языковых конструкций отдельных операторов независимо друг от друга, при последующем проходе - корректность синтаксических взаимосвязей между операторами и т. д[31].

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

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

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

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

При использовании декларативного языка программист указывает исходные информационные структуры, взаимосвязи между ними и то, какими свойствами должен обладать результат. При этом процедуру его получения («алгоритм») программист не строит (по крайней мере, в идеале). В этих языках отсутствует понятие «оператор» («команда»). Декларативные языки можно подразделить на два семейства - логические (типичный представитель - Пролог) и функциональные (Лисп)[35].

Рисунок 3 - Наиболее популярные языки программирования[36]

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

1) Basic

Basic или Бейсик называют группу языков программирования высокого уровня. Его создали профессора колледжа Дартмут в 1964 году с целью помощи студентам в создании собственных компьютерных программ. Сейчас детище Томаса Курца и Джона Кемени стало основным языком, на котором пишутся программы для ОС Windows.

2) C

В далеком 1972 году Дэннис Ритчи придумал язык, который остается популярен и сейчас. Программисты любят его за успешное сочетание в нем элементов как высокого, так и низкого уровней программирования. Кстати, для тех языков программирования, которые используются для написания сайтов, основой является как раз язык Си[37].

3) С++

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

4) Python

Разработка этого языка началась в 1980-х годах голландцем Гвидо ван Россумом, но его первая версия была выпущена только в 2008 году. Он отличается постоянным усовершенствованием и активным сообществом пользователей. Python является высокоуровневым языком с большим объемом различных функций. Особенно хорошо он справляется с веб-разработкой, анализом данных и автоматизацией процессов.

5) PHP

Этот язык лидирует среди тех, что применяются в разработке веб-сайтов и поддерживается практически всеми хостинг-провайдерами. Он применяется, в основном, для разработки веб-сайтов и веб-приложений. Впервые PHP был представлен публике в 1995 году датским программистом Расмусом Лердорфом.

6) Java

Язык программирования Java работает с веб-приложениями, которые транслируются в байт-код. Он может работать на любой компьютерной архитектуре, так как код преобразуется с помощью Java-машины. Он появился в 1996 году и последние годы он стал самым популярным языком программирования. Однако многие недовольны из-за того, что он работает медленнее, чем его конкуренты[39].

7) JavaScript

Хотя JavaScript похож на Java, но все же является отдельным языком. Чаще всего используется в качестве встраиваемого языка: приложения получают доступ к веб-страницам с его помощью. Он более легок в применении и дается даже тем, кто мало знаком с программированием. Доля его использования ежегодно растет[40].

8) SQL

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

9) Go (Golang)

В 2007 году компания Google занялась разработкой собственного языка программирования, с помощью которого бы можно было решать реальные проблемы. Созданием языка занимались Роб Пайк и Кен Томпсон, которые уже в 2009 году представили Go. Для компании Google он является заменой популярных языков Си и Си ++. Он не стал прорывом, но зато используется для создания серьезных проектов[41].

10) Swift

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

11) Pascal

Никлаус Вирт создал этот язык в 1969 году, а назвали язык в честь математика Блеза Паскаля. Он является популярным языком программирования и в наши дни. Именно на нем обучают студентов на первом курсе университета и в старшей школе. На его основе построено множество других языков[42].

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


 

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

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

Средой программирования называ­ют программный комплекс, который включает специализированный тексто­вый редактор, встроенные компилятор, компоновщик, отладчик, справочную систему и другие программы, использование которых упрощает процесс на­писания и отладки программ[43].

Рисунок 4 - Компоненты среды программирования[44]

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

1) Редактор – это средство для создания и изменения исходных файлов, которые содержат написанную на языке программирования программу.

Условно редакторы делятся на два типа.

Первый тип работает с последовательностью символов в текстовых файлах и обеспечивают расширенную функциональность – подсветку синтаксиса, сортировку строк, конвертацию кодировок, показ кодов символов и т.п. Часто такие редакторы называют редакторами кода, поскольку основное их назначение – это написание исходных кодов компьютерных программ[45].

Примеры таких редакторов:

  • Emacs (один из самых мощных по возможностям многоцелевой, свободный редактор);
  • jEdit (свободный редактор на Java);
  • Kate (мощный расширяемый свободный текстовый редактор с подсветкой синтаксиса для массы языков программирования и разметки);
  • Notepad (входит в состав Microsoft Windows);
  • Vim (один из самых мощных по возможностям редактор для программистов);
  • EditPlus (текстовый редактор для Windows, предназначенный для программирования и веб-разработки) и др[46].

Второй тип редакторов имеет расширенные функции форматирования текста, внедрения в него графики и формул, таблиц и объектов. Такие редакторы часто называют текстовыми процессорами и предназначены они для создания текстовых документов. К таким текстовым процессорам можно отнести Microsoft Word, WordPad и др.

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

3) Компоновщик или редактор связей – собирает объектные файлы отдельных компонентов программы и разрешает внешние ссылки от одного компонента к другому, формируя исполняемый файл[47].

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

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

6) Средства тестирования – автоматизирует процесс тестирования программ, создавая и выполняя тесты и анализируя результаты тестирования.

7) Интерпретатор – выполняет исходный код программы в отличие от компилятора, переводящего исходный файл в объектный.

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

Наиболее часто используемыми являются визуальные среды Delphi, C++ Builder фирмы Borland (Inprise Corporation), Visual C++, Visual Basic фирмы Microsoft, Visual Ada фирмы IBM и др[48].

Между основными визуальными средами этих фирм Delphi, C++ Builder и Visual C++ имеется существенное различие: визуальные среды фирмы Microsoft обеспечивают более низкий уровень программирования «под Windows». Это является их достоинством и недостатком. Достоинством - так как уменьшается вероятность возникновения «нестандартной» ситуации, т. е. ситуации, не предусмотренной разработчиками библиотеки компо­нентов, а недостатком - так как это существенно загружает программиста «рутинной» работой, от которой избавлен программист, работающий с Delphi или C++ Builder. Много нареканий вызывает также интерфейс Visual C++, также ориентированный на «низкоуровневое» программирование[49].

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

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

Рисунок 5 - Критерии выбора среды программирования[51]

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

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

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

Рисунок 6 - Критерии выбора языка программирования[53]

Некоторые из критериев это:

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

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

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

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

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

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

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

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

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

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

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

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

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

Многие из этих требований, предъявляемых к хорошему языку , противоречивы. Если мы хотим развивать хороший язык, который имеет много абстракций высокого уровня, процесс перевода будет генерировать много избыточных инструкций низкого уровня из-за обобщенных механизмов, используемых в переводчиках. Точно так же, если мы делаем язык ближе к языкам сборки, тогда портативность и, следовательно, обслуживание программного обеспечения страдает, так как языки сборки различаются для разных архитектур[59].

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

ЗАКЛЮЧЕНИЕ

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

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

1) Алфавит

2) Семантика

3) Синтаксис

4) Словарь

Существующие языки программирования можно разделить на две группы: процедурные и непроцедурные.

Наиболее популярными языками программирования в современном мире являются: Basic, C, С++, Python, PHP, Java, JavaScript, SQL, Go (Golang), Swift, Pascal.

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

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

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

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

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

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

  1. Александреску А. Язык программирования D / А. Александреску. — СПб.: Символ-плюс, 2017. — 544 c.
  2. Ашарина И.В. Основы программирования на языках С и С++: Курс лекций для высших учебных заведений / И.В. Ашарина. — М.: Гор. линия-Телеком, 2018. — 208 c.
  3. Баженова И.Ю. Языки программирования: Учебник для студентов учреждений высш. проф. образования / И.Ю. Баженова; Под ред. В.А. Сухомлин. — М.: ИЦ Академия, 2018. — 368 c.
  4. Белоусова С.Н. Основные принципы и концепции программирования на языке VBA в Excel: Учебное пособие / С.Н. Белоусова, И.А. Бессонова. — М.: БИНОМ. ЛЗ, 2017. — 200 c.
  5. Васильев Д.А. Методические особенности изучения языка python школьниками // Символ науки, 2017. - №01-1. – С.170
  6. Гавриков М.М. Теоретические основы разработки и реализации языков программирования: Учебное пособие / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. — М.: КноРус, 2016. — 184 c.
  7. Гергель В.П. Современные языки и технологии паралелльного программирования: Учебник / В.П. Гергель. — М.: МГУ, 2016. — 408 c.
  8. Голицына О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. — М.: Форум, НИЦ ИНФРА-М, 2017. — 400 c.
  9. Головин И.Г. Языки и методы программирования: Учебник для студентов учреждений высшего профессионального образования / И.Г. Головин, И.А. Волкова. — М.: ИЦ Академия, 2017. — 304 c.
  10. Довек Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. — М.: ДМК, 2016. — 134 c.
  11. Дорогов В.Г. Основы программирования на языке С: Учебное пособие / В.Г. Дорогов, Е.Г. Дорогова; Под общ. ред. проф. Л.Г. Гагарина. — М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2017. — 224 c.
  12. Жданов С.А. Обобщенное программирование как способ интенсификации процесса обучения реализации алгоритмов // Проблемы современного образования, 2016. - №2. – С.154
  13. История развития языков программирования // http://csaa.ru/istorija-razvitija-jazykov-programmirovanija/
  14. Касторнова В.А. Структуры данных и алгоритмы их обработки на языке программирования Паскаль: Учебное пособие / В.А. Касторнова. — СПб.: BHV, 2016. — 304 c.
  15. Кейт Г. Использование Visual C++ 6. Специальное издание / Кейт Грегори. - М.: Вильямс, 2018. - 864 c.
  16. Кауфман В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2017. — 464 c.
  17. Керниган Б.У. Язык программирования C. 2-е изд. / Б. Керниган, Д.М. Ритчи. — М.: Вильямс, 2016. — 288 c.
  18. Керниган Б.У. Язык программирования С / Б.У. Керниган, Д.М. Ритчи; Пер. с англ. В.Л. Бродовой. — М.: Вильямс, 2016. — 304 c.
  19. Крупнейший в Европе ресурс для IT-специалистов. [Электронный ресурс]. Режим доступа: https://habrahabr.ru/company/hh/blog/318450/
  20. Кудрявцева И.А. Классификация парадигм программирования в контексте теоретического программирования // Известия Российского государственного педагогического университета им. А.И. Герцена, 2015. - №1. – С.78
  21. Лучанинов Д.В., Ленкин А.В. Анализ сред разработки программного обеспечения на языке С++ // Современные научные исследования и инновации. 2016. - № 8 // http://web.snauka.ru/issues/2016/08/70888
  22. Мавлютов А.Р. Самые востребованные языки программирования // Academy, 2017. – С.11
  23. Маликов Е.В. Языки программирования и управленческие навыки // Вестник Томского государственного педагогического университета, 2015. - №1(153). – С.55
  24. Маслов В.В. Основы программирования на языке Perl / В.В. Маслов. — М.: Радио и связь, 2016. — 144 c.
  25. Монахов В.В. Язык программирования Java и среда NetBeans. 3-е изд., пер. и доп. + DVD / В.В. Монахов. — СПб.: BHV, 2017. — 704 c.
  26. Наумов Р.В. Актуальные языки программирования // Academy, 2016. - https://cyberleninka.ru/article/n/aktualnye-yazyki-programmirovaniya
  27. Неустроев А.В. Начало программирования в LEGO MINDSTORMS EV3 с использованием языка JAVA // Academy, 2016. - https://cyberleninka.ru/article/n/nachalo-programmirovaniya-v-lego-mindstorms-ev3-s-ispolzovaniem-yazyka-java
  28. Новичков В.С. Начала программирования на языке QBASIC. Учебное пособие / В.С. Новичков, А.Н. Пылькин. — М.: ГЛТ, 2017. — 268 c.
  29. Рейтинг языков программирования 2018: Какой лучше изучать? // merehead. com/blog-ru/top-programming-languages-2018-learn.
  30. Семакин И. Г. Основы алгоритмизации и программирования. Практикум. М.: Издательский центр «Академия», 2015. – 285 с.
  31. Современные языки программирования: краткий обзор // https://elenaruvel.com/yazyki-programmirovaniya-obzor/
  32. Стандартная библиотека PHP (SPL) [Электронный ресурс]. - Режим доступа: http://php.net/manual/ru/book.spl.php
  33. Страуступ Б. Язык программирования С++. Специальное издание / Б. Страуступ. — М.: Бином, 2017. — 1136 c.
  34. Троелсен Э. Язык программирования С# 5.0 и платформа .NET 4.5 / Э. Троелсен; Пер. с англ. Ю.Н. Артеменко. — М.: Вильямс, 2016. — 1312 c.
  35. Фридман А.Л. Основы объектно-ориентированного программирования на языке Си++ / А.Л. Фридман. — М.: Гор. линия-Телеком, 2016. — 234 c.
  36. Хейлсберг А. Язык программирования C#. Классика Computers Science / А. Хейлсберг, М. Торгерсен, С. Вилтамут. — СПб.: Питер, 2016. — 784 c.
  37. Хорстманн К. Java. Библиотека профессионала, том 1. Основы. 9-е изд. [Текст]: пер. с англ / К. Хорстманн, Г. Корнелл. - М.: Изд. дом «Вильямс», 2018. - 864 с.
  38. Цуканова Н.И. Теория и практика логического программирования на языке Visual Prolog 7: Учебное пособие для вузов / Н.И. Цуканова, Т.А. Дмитриева. — М.: Гор. линия-Телеком, 2016. — 232 c.
  39. Школа программирования Coding Craft // http://codingcraft.ru/php.php/
  40. Шохирев М.В. Язык программирования Perl 5 / М.В. Шохирев. — М.: Интуит, 2015. — 279 c.

  1. Керниган Б.У. Язык программирования C. 2-е изд. / Б. Керниган, Д.М. Ритчи. — М.: Вильямс, 2016. — 288 c.

  2. Александреску А. Язык программирования В / А. Александреску. — СПб.: Символ-плюс, 2017. — 544 c.

  3. Баженова И.Ю. Языки программирования: Учебник для студентов учреждений высш. проф. образования / И.Ю. Баженова; Под ред. В.А. Сухомлин. — М.: ИЦ Академия, 2018. — 368 c.

  4. Кудрявцева И.А. Классификация парадигм программирования в контексте теоретического программирования // Известия Российского государственного педагогического университета им. А.И. Герцена, 2015. - №1. – С.78

  5. Школа программирования Coding Craft // http://codingcraft.ru/php.php/

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

  7. Маликов Е.В. Языки программирования и управленческие навыки // Вестник Томского государственного педагогического университета, 2015. - №1(153). – С.55

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

  9. Голицына О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. — М.: Форум, НИЦ ИНФРА-М, 2017. — 400 c.

  10. История развития языков программирования // http://csaa.ru/istorija-razvitija-jazykov-programmirovanija/

  11. Кауфман В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2017. — 464 c.

  12. Семакин И. Г. Основы алгоритмизации и программирования. Практикум. М.: Издательский центр «Академия», 2015. – 285 с.

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

  14. Касторнова В.А. Структуры данных и алгоритмы их обработки на языке программирования Паскаль: Учебное пособие / В.А. Касторнова. — СПб.: BHV, 2016. — 304 c.

  15. Новичков В.С. Начала программирования на языке QBASIC. Учебное пособие / В.С. Новичков, А.Н. Пылькин. — М.: ГЛТ, 2017. — 268 c.

  16. Монахов В.В. Язык программирования Java и среда NetBeans. 3-е изд., пер. и доп. + DVD / В.В. Монахов. — СПб.: BHV, 2017. — 704 c.

  17. Наумов Р.В. Актуальные языки программирования // Academy, 2016. - https://cyberleninka.ru/article/n/aktualnye-yazyki-programmirovaniya

  18. Головин И.Г. Языки и методы программирования: Учебник для студентов учреждений высшего профессионального образования / И.Г. Головин, И.А. Волкова. — М.: ИЦ Академия, 2017. — 304 c.

  19. Стандартная библиотека PHP (SPL) [Электронный ресурс]. - Режим доступа: http://php.net/manual/ru/book.spl.php

  20. Довек Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. — М.: ДМК, 2016. — 134 c.

  21. Кейт Г. Использование Visual C++ 6. Специальное издание / Кейт Грегори. - М.: Вильямс, 2018. - 864 c.

  22. Неустроев А.В. Начало программирования в LEGO MINDSTORMS EV3 с использованием языка JAVA // Academy, 2016. - https://cyberleninka.ru/article/n/nachalo-programmirovaniya-v-lego-mindstorms-ev3-s-ispolzovaniem-yazyka-java

  23. Жданов С.А. Обобщенное программирование как способ интенсификации процесса обучения реализации алгоритмов // Проблемы современного образования, 2016. - №2. – С.154

  24. Белоусова С.Н. Основные принципы и концепции программирования на языке VBA в Excel: Учебное пособие / С.Н. Белоусова, И.А. Бессонова. — М.: БИНОМ. ЛЗ, 2017. — 200 c.

  25. Гергель В.П. Современные языки и технологии паралелльного программирования: Учебник / В.П. Гергель. — М.: МГУ, 2016. — 408 c.

  26. Хорстманн К. Java. Библиотека профессионала, том 1. Основы. 9-е изд. [Текст]: пер. с англ / К. Хорстманн, Г. Корнелл. - М.: Изд. дом «Вильямс», 2018. - 864 с.

  27. Мавлютов А.Р. Самые востребованные языки программирования // Academy, 2017. – С.11

  28. Керниган Б.У. Язык программирования С / Б.У. Керниган, Д.М. Ритчи; Пер. с англ. В.Л. Бродовой. — М.: Вильямс, 2016. — 304 c.

  29. Васильев Д.А. Методические особенности изучения языка python школьниками // Символ науки, 2017. - №01-1. – С.170

  30. Цуканова Н.И. Теория и практика логического программирования на языке Visual Prolog 7: Учебное пособие для вузов / Н.И. Цуканова, Т.А. Дмитриева. — М.: Гор. линия-Телеком, 2016. — 232 c.

  31. Крупнейший в Европе ресурс для IT-специалистов. [Электронный ресурс]. Режим доступа: https://habrahabr.ru/company/hh/blog/318450/

  32. Современные языки программирования: краткий обзор // https://elenaruvel.com/yazyki-programmirovaniya-obzor/

  33. Хейлсберг А. Язык программирования C#. Классика Computers Science / А. Хейлсберг, М. Торгерсен, С. Вилтамут. — СПб.: Питер, 2016. — 784 c.

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

  35. Лучанинов Д.В., Ленкин А.В. Анализ сред разработки программного обеспечения на языке С++ // Современные научные исследования и инновации. 2016. - № 8 // http://web.snauka.ru/issues/2016/08/70888

  36. Рейтинг языков программирования 2018: Какой лучше изучать? // merehead. com/blog-ru/top-programming-languages-2018-learn.

  37. Троелсен Э. Язык программирования С# 5.0 и платформа .NET 4.5 / Э. Троелсен; Пер. с англ. Ю.Н. Артеменко. — М.: Вильямс, 2016. — 1312 c.

  38. Страуступ Б. Язык программирования С++. Специальное издание / Б. Страуступ. — М.: Бином, 2017. — 1136 c.

  39. Монахов В.В. Язык программирования Java и среда NetBeans. 3-е изд., пер. и доп. + DVD / В.В. Монахов. — СПб.: BHV, 2017. — 704 c.

  40. Неустроев А.В. Начало программирования в LEGO MINDSTORMS EV3 с использованием языка JAVA // Academy, 2016. - https://cyberleninka.ru/article/n/nachalo-programmirovaniya-v-lego-mindstorms-ev3-s-ispolzovaniem-yazyka-java

  41. Керниган Б.У. Язык программирования С / Б.У. Керниган, Д.М. Ритчи; Пер. с англ. В.Л. Бродовой. — М.: Вильямс, 2016. — 304 c.

  42. Маликов Е.В. Языки программирования и управленческие навыки // Вестник Томского государственного педагогического университета, 2015. - №1(153). – С.55

  43. Маслов В.В. Основы программирования на языке Perl / В.В. Маслов. — М.: Радио и связь, 2016. — 144 c.

  44. Александреску А. Язык программирования D / А. Александреску. — СПб.: Символ-плюс, 2017. — 544 c.

  45. Жданов С.А. Обобщенное программирование как способ интенсификации процесса обучения реализации алгоритмов // Проблемы современного образования, 2016. - №2. – С.154

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

    .

  47. Наумов Р.В. Актуальные языки программирования // Academy, 2016. - https://cyberleninka.ru/article/n/aktualnye-yazyki-programmirovaniya

  48. Шохирев М.В. Язык программирования Perl 5 / М.В. Шохирев. — М.: Интуит, 2015. — 279 c.

  49. Новичков В.С. Начала программирования на языке QBASIC. Учебное пособие / В.С. Новичков, А.Н. Пылькин. — М.: ГЛТ, 2017. — 268 c.

  50. Голицына О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. — М.: Форум, НИЦ ИНФРА-М, 2017. — 400 c.

  51. Баженова И.Ю. Языки программирования: Учебник для студентов учреждений высш. проф. образования / И.Ю. Баженова; Под ред. В.А. Сухомлин. — М.: ИЦ Академия, 2018. — 368 c.

  52. Кауфман В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2017. — 464 c.

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

  54. Белоусова С.Н. Основные принципы и концепции программирования на языке VBA в Excel: Учебное пособие / С.Н. Белоусова, И.А. Бессонова. — М.: БИНОМ. ЛЗ, 2017. — 200 c.

  55. Довек Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. — М.: ДМК, 2016. — 134 c.

  56. Гергель В.П. Современные языки и технологии паралелльного программирования: Учебник / В.П. Гергель. — М.: МГУ, 2016. — 408 c.

  57. Мавлютов А.Р. Самые востребованные языки программирования // Academy, 2017. – С.11

  58. Кудрявцева И.А. Классификация парадигм программирования в контексте теоретического программирования // Известия Российского государственного педагогического университета им. А.И. Герцена, 2015. - №1. – С.78

  59. Семакин И. Г. Основы алгоритмизации и программирования. Практикум. М.: Издательский центр «Академия», 2015. – 285 с.