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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

ГЛАВА 1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Одной из самых революционных идей по созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах XIX века Charles Babbage (Чарльз Бэббидж) английского математика, часто называют «отцом компьютера». Мысль заключалась в том, чтобы предварительные записи порядка действия машины, для последующей автоматической записи вычислений, были осуществлены в программе. Использованная запись программы была сделана на перфокартах, придуманная для управления такими станками Joseph Marie Jacquard (Жозе́ф Мари́ Жакка́р – французский изобретатель)[1].

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

http://eakolesnikov.narod.ru/PreHollerith.files/image007.jpg

Рисунок 1. Станок Жаккарда (вид со стороны перфокарт) и образцы жаккардовой ткани [3]

Augusta Ada King Byron, Countess of Lovelace (Авгу́ста А́да Кинг (урождённая Ба́йрон), графиня Ла́влейс – британский математик) стала известна, прежде всего, созданием описания вычислительной машины, проект которой был разработан Чарльзом Бэббиджем, составила первую в мире программу (для этой машины). Она теоретически разработала некоторые приемы управления последовательностью вычислений, которые используются в программировании и сейчас. Ею же была описана и одна из важнейших конструкций практически любого современного языка программирования – цикл и рабочая ячейка[4].

Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной John William Mauchly (Джон Уильям Мокли). Система кодирования, предложенная им, вдохновила одну из его сотрудниц Грейс Мюррей Хоппер. При работе на компьютере «Марк-1» ей и ее группе пришлось столкнуться со многими проблемами и все, что ими придумано, было впервые. В частности они придумали подпрограммы. И еще одно фундаментальное понятие техники программирования впервые ввели Хоппер и ее группа - «отладка».

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

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

Языки программирования – это алгоритмы, которые используют для написания компьютерных программ.

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

  • Машинно-ориентированные языки (языки программирования низкого уровня): автокоды, ассемблеры – с помощью данных языков можно осуществлять управление вычислительным процессом напрямую, при помощи машинных команд;
  • Языки программирования высокого уровня, см. рисунок 2.

C:\Users\Дарьяна\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Word\slide-15.jpg

Рисунок 2. Схема языков программирования высокого уровня[7]

В 40-50 годы ХХ века, программы на машинном языке (автокоды) – имеют длинную последовательность единиц и нулей, являясь машинно-зависимыми, т.е. было нужно для каждого компьютера составлять свою программу. Так же стоит отметить, что в 50 годы ХХ века, берет начало Ассемблер, который дает возможность применения символических имен в исходной программе и избавляет программиста от длительного программирования, по распределению памяти компьютера для команд, переменных и констант.[8]

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

Транслятор (англ. Translator – переводчик) – это программа-переводчик. С помощью транслятора можно преобразовать программу из языков высокого уровня, в программу, состоящую из машинных команд. Трансляторы применяются в виде компиляторов или интерпретаторов.[10]

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

C:\Users\Дарьяна\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Word\Новый рисунок (1).bmp

Рисунок 3. Схема работы интерпретатора[11]

Компилятор (англ. Compiler – собиратель, составитель) читает всю программу целиком, затем осуществляет ее перевод, создавая законченный вариант программы на машинном языке, который затем выполняется. Откомпилированные программы работают быстрее.[12]

C:\Users\Дарьяна\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Word\Новый рисунок.bmp

Рисунок 4. Схема работы компилятора[13]

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

  • Первое – машинно-ориентированные;
  • Второе – автокоды;
  • Третье – Basic и Pascal;
  • Четвертое поколение включает усовершенствованные языки для работы с базами данных;
  • Пятое поколения – это наиболее усовершенствованные, визуальные, объектно-ориентированные, такие как: Пролог, Visual и т д.

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

    1. ПРОЦЕДУРНЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

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

Виды операционных языков (привязанные к конкретной архитектуре ЭВМ)[15]:

  • Фортран (начало 50-х г. XX века) – первый компилируемый язык для программирования научно-технических задач;
  • Алгол (середина 60 г. XX века) – многоцелевой расширенный язык, в котором впервые введены понятия «блочная структура программы» и «динамическое распределение памяти»;
  • BASIC (середина 60-х г. XX века) – характеризуется простотой освоения и наличием универсальных средств для решения научных, технических экономических и игровых задач.
  • Кобол (конец 60-х г. XX века) – для решения задач обработки больших объемов данных, хранящихся на различных носителях данных;

Виды структурных языков (не привязанные к конкретной архитектуре ЭВМ)[16]:

  • PL-1 (63-66гг. XX века) - хорошо подходит для исследования и планирования вычислительных процессов, моделирования, решения логических задач, разработки систем математического обеспечения.
  • PASCAL (68-71гг. XX века) - популярный для ПК, в основу которого положен подход от общей задачи к частным (более простым и меньшим по объему).[17]
  • СИ (начало 70-х г. XX века) - первоначальный его вариант планировался как язык для реализации операционной системы Unix вместо языка Ассемблера. Особенность языка - это то. что различия между выражениями и операторами сглаживаются, что приближает его к функциональным языкам программирования.[18]
  • АДА (79 г. XX века) - назван в честь первой программистки Ады Лавлейс, его отличает модульность конструкций.
  • Модула (1980 г. XX века) - для профессиональных системных программистов.[19]
    1. Объектно-ориентированные языки программирования (ооп)

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

Объектные языки

  • C++,
  • Java.

Визуальные языки (середина 90-х г.) - интерфейсная часть программного продукта создается в диалоговом режиме, практически без написания программных операторов[21]:

  • Visual Basic,
  • Delphi,
  • C++ Builder,
  • Visual C++,
  • Object PAL,
  • dBase.

Язык VBA (Visual Basic for Application) - язык приложений Microsoft Office (Excel, Word, Power Point и др), который соблюдает основной синтаксис языка и правила программирования языков Basic-диалектов, что позволяет создавать макросы для автоматизации выполнения некоторых операций и графический интерфейс пользователя, интеграцию между различными программными продуктами.[22]

Языки программирования дли компьютерных сетей, являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а сами программы - в исходных текстах. Такие языки называются скрипт — языками.[23]

  • Perl (1987 г.) язык обладает функциями расшифровки для практического извлечения данных и составления отчетов, обрабатывает объемные тексты, с помощью него можно создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты;
  • РНР (1995-1997гг.) обладает средствами доступа к базам данных и используется создателями динамических сайтов во всем мире;
  • Тс1/Тк (конец 80-х г.) состоит из перечня команд, предназначенных для работы с абстрактными не типизированными объектами и позволяет создавать программы с графическим интерфейсом;
  • VRML (1994 г.) создан для организации виртуальных трехмерных интерфейсов в Интернете.
  • XML - с 1996 г. идет работа над созданием универсального языка структуры документа.[24]
  1. Декларативные языки программирования

Декларативные языки программирования – это функциональные и логические языки программирования.

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

Логический язык программирования – это программирование в терминах логики. Логическое программирование представляет собой попытку возложить на программиста только постановку задачи, а поиски путей ее решения предоставить транслятору. Язык этой группы Prolog (Пролог) был создан в начале 70-х годов ХХ века Аланом Колмероэ. В его основу положена математическая модель теории исчисления предикатов[26]. Программа на этом языке строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Человек только описывает структуру задачи, а внутренний «мотор» Пролога сам ищет решение с помощью методов поиска и сопоставления.[27]

Языки декларативного программирования

Язык функционального программирования:

Lisp (59 г. ХХ века) – позволяет обрабатывать большие объёмы текстовой информации.

Язык логического программирования:

Пролог (73 г. ХХ века) – язык искусственного интелекта. Программа на зяыке Пролог строится из последовательности фактов и правил, затем формулируется утверждения, которое в дальнейшем пытается доказать с помощью правил. Язык сам ищет решение с помощь методов поиска и сопоставления, которые в нем заложены.

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

  1. быстрая разработка прототипов прикладных программ;
  2. автоматический перевод с одного языка на другой;
  3. создание естественно-языковых интерфейсов для существующих систем;
  4. символьные вычисления для решения уравнений, дифференцирования и интегрирования;
  5. проектирование динамических реляционных баз данных;
  6. экспертные системы и оболочки экспертных систем;
  7. автоматизированное управление производственными процессами;
  8. автоматическое доказательство теорем;
  9. полуавтоматическое составление расписаний;
  10. системы автоматизированного проектирования, базирующееся на знаниях программное обеспечение;
  11. организация сервера данных или, точнее, сервера знаний, к которому может обращаться клиентское приложение, написанное на каком-либо языке программирования.

Области, для которых Пролог не предназначен: большой объем арифметических вычислений (обработка аудио, видео и т.д.); написание драйверов.

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

Обобщающий вывод по первой главе.

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

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

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

ГЛАВА 2. ПРИМЕРЫ В ВИДЕ ПРОГРАММ И РЯД ФУНКЦИЙ НА ЯЗЫКАХ ВЫСОКОГО УРОВНЯ ПРОГРАММИРОВАНИЯ

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

  • Perl,
  • Php,
  • Tcl/Tk,
  • Vrml,
  • Lisp,
  • Prolog,
  • Basic.
  1. Perl

Создание текстовых документов с использованием языка Perl представляет собой тривиальную задачу. Для начала необходимо удостовериться, что мы поместили правильный НТМL заголовок в начале текстового документа. Например, следующий скрипт создает простой текстовый документ, содержащий сообщение Hello, world:

print “Content-type: text/plain\n\n”;

print “Hello, world\n”;

Создание текстовых документов HTML также очень легко. Например, в следующем фрагменте текста создается простой документ HTML[28]:

print <<HTML;

Content-type: text/html

<HTML>

<HEAD><TITLE>Test Using HTML</TITLE></HEAD>

<BODY>

<H1><CENTER>

Hello, world

</CENTER></H1>

</BODY></HTML>

HTML

Эти примеры больше походят на исходные коды HTML, чем на программу на языке Perl. Действительно, если удалить несколько строк, можно получить HTML-файл. Эта иллюстративная программа использует свойства языка Perl, которые достаточно просты для понимания. Строка <<HTML и последняя строка с символами HTML представляют собой конструкцию, называемую «здесь-документ» (here document), которая перешла сюда из терминологии программирования shell для UNIX. «Здесь-документ» представляет собой просто несколько строк литералов. Perl обрабатывает «здесь-документ», как строку в двойных кавычках.

Поскольку «здесь-документ» делает исходный код на языке Perl легким для чтения, то использование такой конструкции является идеальным для создания HTML-документов. Используя конструкцию «здесь-документ», скрипт на языке Perl может не иметь символов цитирования и символов новой строки, и не должен содержать функций printf[29].

  1. Php

Язык PHP предназначен для веб-программирования, он сочетает в себе достоинства языков C и Perl и при этом весьма прост в изучении, обладает значительными преимуществами перед традиционными языками программирования. Синтаксис PHP очень напоминает синтаксис языка C и во многом заимствован из таких языков как Java и Perl. Программист С может очень быстро освоить язык PHP и сможет использовать его с максимальной эффективностью. В PHP есть практически все операторы и функции, имеющиеся в стандартном GNU С (или их аналоги), например есть циклы (while, for), операторы выбора (if, switch), функции работы с файловой системой и процессами (fopen, *dir, stat, unlink, popen, exec), функции ввода-вывода (fgets,fputs,printf) и множество других.

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

<html>

<head>

<title>Пример</title>

</head>

<body>

<?

echo "Привет, я - скрипт PHP!";

?>

</body>

</html>

Это классический скрипт, с которого начинают изучение языка программирования, необходимо обратить внимание на то, что HTML-код корректно обрабатывается интерпретатором PHP.[31]

PHP устроен так, что любой текст, который расположен вне программных блоков, ограниченных «<? и ?>», выводится в браузер непосредственно. В этом и заключается главная особенность PHP, в отличие от Perl и C, где вывод осуществляется только с помощью стандартных операторов.

Типы данных в PHP. PHP поддерживает восемь простых типов данных:

Скалярный тип:

  1. boolean (двоичные данные)
  2. integer (целые числа)
  3. float (числа с плавающей точкой или 'double')
  4. string (строки)

Смешанный тип:

  1. array (массивы)
  2. object (объекты)

Специальный тип:

  1. resource (ресурсы)
  2. NULL ("пустые")

Псевдо типы:

  1. mixed (смешанные)
  2. number (числа)
  3. callback (обратного вызова)
  4. Tcl/Tk

Tcl — это аббревиатура от Tool Command Language. Команды выполняют различные действия, например: вывод строки, вычисление значения арифметического выражения или отображение компонентов (widget) на экране. В Tcl в виде команд представляются все действия, даже присвоение значений переменным и определение процедур. Для вызова команд в языке Tcl предусмотрены достаточно простые синтаксические конструкции. Все сложные действия выполняет интерпретатор, реализующий команды. Команда Tcl записывается в следующем виде:

команда параметр1 параметр2 параметр3...

Команда может представлять собой либо встроенную команду Tcl, либо процедуру. Имя команды отделяется от параметров с помощью одного или нескольких пробелов или знаков табуляции; те же символы используются для разделения параметров. Символ конца строки или точка с запятой завершают команду. В процессе интерпретации Tcl осуществляет группировку (объединение нескольких слов в один параметр) и подстановку (замену переменных и вызовов вложенных процедур). Действия интерпретатора Tcl по обработке команд можно разделить на три этапа[32].

• Группировка параметров,

• Подстановка вложенных команд, переменных и символов, которым предшествует обратная косая черта,

• Вызов команды. Интерпретация параметров самой командой.

Примеры подстановки

Если в составе команды присутствует несколько подстановок, не разделенных пробелами или знаками табуляции, группировка выполняется по умолчанию. Использовать двойные кавычки в этом случае не обязательно. В приведенной ниже команде осуществляется конкатенация значений переменных a, b и c.

set concat $a$b$c

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

set concat "$a $b $c"

При работе с Tk имя компонента часто используется как имя команды. $text insert end "Hello, World!"

Таблица 1. Арифметические операции (приводятся по убыванию приоритета)[33]

-~!

Унарный минус, побитовое отрицание, логическое отрицание

*/%

Умножение, деление, остаток от деления

+ -

Сложение, вычитание

<< >>

Сдвиг влево, сдвиг вправо

< > <= >=

Сравнение: меньше, больше, меньше или равно, больше или равно

== != eq ne

Равенство, неравенство, равенство строк (Tcl 8.4), неравенство строк (Tcl 8.4)

&

Побитовое И

ˆ

Побитовое исключающее ИЛИ (XOR)

|

Побитовое ИЛИ

&&

Логическое И

||

Логическое ИЛИ

x?y:z

Если x, то y; иначе — z

  1. Vrml

Язык VRML (Virtual Reality Modeling Language) предназначен для описания интерактивных 3D объектов и миров. Он был разработан для применения в сетях INTERNET и INTRANET. На сегодняшний день этот язык является сетевым стандартом и поддерживается ведущими мировыми производителями программного обеспечения. VRML дает разработчику возможность создавать статические и динамические 3D модели а также позволяет включать и обрабатывать в моделях гиперссылки на звуковые, видео, html файлы, другие VRML объекты. По своей структуре язык является объектно-ориентированным. Ему присущи такие характеристики объектного языка, как инкапсуляция и наследование. Полиморфизм в привычном понимании этого слова отсутствует[34].

Для описания простых VRML объектов подходит любой текстовый редактор, имеющий возможность сохранять файлы в обычном текстовом формате. Описание VRML-объектов (мира) хранится в текстовом файле с расширением wrl.[35]

Для воспроизведения VRML объектов необходим VRML браузер, поддерживающий язык VRML в спецификации 2.0 К популярным VRML-браузерам, поддерживающим Microsoft Internet Explorer, Opera и Mozila Firefox, относятся blaxxun Contact (www.blaxxun.com), Cortona3D Viewer (www.cortona3d.com), BS Contact VRML/X3D (www.bitmanagement.de), Octaga Player (www.octaga.com) и др.

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

Shape { geometry . . . appearance . . . }

Значением поля geometry являются геометрические узлы, т.е. узлы, определяющие форму и структуру объектов.

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

Box { . . . }

Cone { . . . }

Cylinder { . . . }

Sphere { . . . }

В полях примитивных геометрических узлов указываются их размеры[36].

Box { size 2.0 0.5 3.0 }

http://wiki.vspu.ru/_media/workroom/vrml/2.gif

Cone { height 3.0 bottomRadius 0.75 }

http://wiki.vspu.ru/_media/workroom/vrml/4.gif

Cylinder { height 2.0 radius 1.5 }

http://wiki.vspu.ru/_media/workroom/vrml/5.gif

Sphere { radius 1.0 }

http://wiki.vspu.ru/_media/workroom/vrml/3.gif

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

Lisp

Язык функционального программирования Лисп (Lisp) был разработан в 1958 году Джоном МакКарти (John McCarthy). Название Лисп (Lisp) происходит от List processing (обработка списков). Лисп представляет собой язык функционального программирования. Он основан на алгебре списочных структур, лямбда-исчислении и теории рекурсивных функций. Cсуществует несколько диалектов языка Лисп: Lisp1 (1958), MacLisp (1964), InterLisp (1972), CommonLisp (1984). Диалект CommonLisp получил наибольшее распространение.

Первые реализации языка были интерпретаторами и особой скоростью не отличались. В настоящее время все коммерческие и некоторые бесплатные реализации имеют качественные оптимизирующие компиляторы. По разнообразию типов данных Лисп превосходит любой другой язык: числа целые, целые с неограниченным числом знаков, вещественные, дробные (выполнение (/ 1 3) вернет 1/3, а не 0.3333333...), комплексные, списки, массивы, строки, символы, последовательности, функции, структуры, макросы, классы и объекты. В Лиспе типы привязываются к значению переменной, а не к ее имени, поэтому легко создавать разнотипные списки и массивы

Определение функций и их вычислений в Лиспе основано на лямбда-исчислении (lambda calculus) Черча. Функции в Лиспе могут передаваться как параметры, модифицироваться и возвращаться как значения. Кроме того, в Лиспе компилятор можно вызывать из исполняемой программы "на лету", то есть для модификации и рекомпиляции отдельной функции или класса не требуется остановка системы.[37] Данные в Лиспе представляются атомами, списками, консами, символьными выражениями. Взаимосвязь понятий иллюстрируется рис. 5.[38]

https://studfiles.net/html/1549/349/html_rx3IKJYino.5fzn/img-Jc3Hdu.png

Рисунок 5. Символьные выражения Лиспа

Атомы, простейшие объекты Лиспа, делятся на символьные и числовые. Символьный атом - это последовательность букв, цифр и возможно специальных символов, например, X1, Gruppa-11, ABCD. Числовой атом - это последовательность цифр, например, 2, -75, 355. В числовом атоме могут присутствовать символы '+', '-', '.', '/', например –11, +55.473, 2/5. Числовые атомы интерпретируются как константы, символьные - как константы и как переменные. Атом T обозначает логическое значение "истина", атом NIL - логическое значение "ложь" или пустой список.

Последовательность элементов, разделенных пробелами и заключенных в круглые скобки, является списком. Элементами списка могут быть любые объекты: атомы, списки, консы, например, (1 a 2 b 3 c), ((x1 0) (x2 1)), ((y . blue) (z . yellow)). Пустой список не содержит элементов и обозначается ( ) или NIL. Таким образом, список - это многоуровневая или иерархическая структура данных, в которой открывающие и закрывающие скобки находятся в строгом соответствии. Например, приведенные ниже выражения являются правильно составленными списками:

(+ 2 3) - список из трех элементов;

(((((первый) 2) третий) 4) 5) - список из двух элементов.

Список, в который не входит ни один элемент, называется пустым и обозначается “( )” или символом NIL. Пустой список - это не то же самое, что "ничего". Он выполняет ту же роль, что и ноль в арифметике. NIL может быть, например, элементом других списков:

NIL то же, что и ( );

(NIL) список, состоящий из атома NIL;

(( )) то же, что и (NIL);

((( ))) то же, что и ((NIL));

(NIL ( ) ) список из двух пустых списков.

Пара элементов, разделенных точкой и заключенных в круглые скобки, называется консом, или точечной парой. Список (e1 e2 … en) может быть представлен суперпозицией консов - (e1 . (e2 . (… (en . NIL) …))).

Символьным выражением в Лиспе является один из следующих объектов: - атом, список (s1…sn) или конс (s1.s2), где s1, s2, …, sn - символьные выражения. Например, (S3 (T . L) . (a c)) является символьным выражением.[39]

В Лиспе формы представления программы и обрабатываемых ею данных одинаковы и представляются списочной структурой. Списки, представляющие программы и данные, состоят из списочных ячеек, расположение и порядок которых в памяти несущественный. Структура списка определяется логически на основе имен символов и указателей. Добавление новых элементов в список или удаление из списка может производиться без переноса списка в другие ячейки памяти. Резервирование и освобождение могут в зависимости от потребности осуществляться динамически, ячейка за ячейкой[40].

Prolog

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

Ориентация Пролога – “нетрадиционные” применения вычислительной техники: понимание естественного языка, БЗ, экспертные системы и прочие задания. Его принципиальное отличие от традиционных языков программирования состоит в подходе способа описания решения задачи. Программа на Прологе описывает не процедуру решения задачи, а логическую модель предметной области – некоторые факты относительно свойств предметной области и отношений между этими свойствами, а также правила вывода новых свойств и отношений из уже заданных, а так же программа на языке пролога состоит, из предложений, которые могут быть фактами, правилами или вопросами.[41]

Правила сопоставления термов в системе Пролог

Терм – элемент Пролог-программы – константа-переменная-структура, один из трех вариантов. Терм записывается как последовательность литер, которые делятся на 4 категории: {A..Z},{a..z}, {0..9},{+ - * / ^ < > ~ : . ? @ # $ &}. Наиболее важная операция над термами – сопоставление. Сопоставление – процесс проверки сопоставимости термов.

Два терма сопоставимы, если:

- они идентичны,

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

Например, date(Day,июнь,1999) и date(Day1,июнь,1999) сопоставимы, поскольку переменным Day и Day1 можно присвоить одинаковые значения от 1 до 31[42]

Работа со списками

Предикат, позволяющий вычислить длину списка.

length([], 0). /* в пустом списке элементов нет */

length([_|T], L) :–

length(T, L_T), /* L_T — количество элементов в хвосте */

L = L_T + 1. /* L — количество элементов исходного списка */

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

member(X,[X|_]). /* X — первый элемент списка */

member(X,[_|T]) :–

member(X,T). /* X принадлежит хвосту T*/

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

conc([ ], L, L). /* при присоединении пустого списка к списку L получим список L */

conc([H|T], L, [H|T1]) :–

conc(T,L,T1). /* соединяем хвост и список L, получаем хвост результата */[43]

  1. Basic

Basic (Бейсик) создавался в 60-х годах ХХ века, в качестве учебного языка и очень прост в изучении. По популярности занимает первое место в мире. REM – оператор комментария язык программы. Все что следует после этого, оператора до конца строки пропускается компилятором и предназначено исключительно для человека, т.е. здесь писать можно что угодно. Удобно использовать комментарий в начале программы для указания её названия и назначения[44].

Пример:

REM Это комментарий

можно и так:

' Это тоже комментарий

CLS – оператор очистить экран. Вся информация, которая была на экране, стирается.

PRINT[45] – оператор вывода. Общий вид оператора: PRINT “формат:”, список или PRINT х1; х2;…

пример: PRINT "Привет! Меня зовут Саша."

На экран будет выведено сообщение: Привет! Меня зовут Саша.

INPUT – оператор ввода. Используется для передачи в программу каких-либо значений. Общий вид оператора: INPUT ; х1; х2;…

пример: INPUT а

На экране появится приглашение ввести данные (появится знак "?") и компьютер будет ждать их ввода. Для ввода необходимо ввести данные с клавиатуры и нажать ввод (enter)[46].

INPUT "Введите число а: ", а

Компьютер выведет на экран: 'Введите число а:' и будет ждать ввода данных.

DIM – оператор описания типа переменной. Одномерный массив имеет вид DIM(d), а двумерный DIM(n,m).

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

Переменная - это имя участка в памяти, в котором в определённый момент времени может быть только одно значение, название "переменная" подразумевает, что содержимое этого участка может изменяться. В качестве имен переменных могут быть латинские буквы с индексами. Причем может быть не одна буква, а несколько[48].

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

Пример: DIM a, b, chislo1 AS INTEGER, где Integer – целые числа от -32768 до 32768

Если в программе используются переменные, не описанные с помощью оператора DIM, то компьютер будет рассматривать их как универсальные переменные. Это может привести к неэффективному использованию оперативной памяти. К тому же, такие программы не всегда легки для восприятия - плохо читаемы[49]. Для задания значения переменной служит оператор присваивания. Он записывается так:

LET переменная = значение (или просто: переменная = значение)

Пример:

LET a = 3

chislo1 = 15

END – оператор конца программы.

C:\Users\Дарьяна\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Word\Новый рисунок.png

Рисунок 6. Арифметические операции на языке Basic[50]

C:\Users\Дарьяна\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Word\Новый рисунок (1).png

Рисунок 7. Математические функции на языке Basic[51]

ЗАКЛЮЧЕНИЕ

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

В связи с этим идет рост программирования, как в языках программирования высокого уровня, так и других языках. Сейчас очень много сфер где требуются программы для работы, различных устройств, например: БПЛА, в настоящее время набирают такие масштабы, что даже МЧС России их готовы закупать вместе программным обеспечением. Так же, собираются запускать более 1 вида автомобилей без водителя, управление которого планируется, путем программного обеспечения или управления удаленно и все это благодаря тому, что языки программирования стали изучать намного серьёзнее, чем в прошлом веке.

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

СПИСОК ЛИТЕРАТУРЫ

  1. Блауг М. Бэббедж Чарльз. 100 великих экономистов до Кейнса / М. Блауг. - СПб.: Экономикус, 2008. С. 169
  2. Абельсон Х., Сассман Д.Д., при участии Сассман Дж.. Структура и интерпретация компьютерных программ / Х. Абельсон, Д.Д. Сассман, при участии Дж. Сассман –М.: Добросвет, 2004. - С. 368
  3. Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. — 288 с.
  4. Ашарина И.В. Основы программирования на языках C и C++ / И.В. Ашарина. - М.: ГЛТ, 2012. – С.208
  5. Баррон Д. Введение в языки программирования / Д. Баррон - М.: Мир, 2015. – С.192
  6. Братко И.А. Алгоритмы искусственного интеллекта на языке PROLOG / И.А. Братко / И.А. Братко. – М.: Вильямс, 2004 . – С.289.
  7. Брент Уэлш, Кен Джонс, Джеффри Хоббс. Практическое программирование на Tcl и Tk / Брент Уэлш, Кен Джонс, Джеффри Хоббс. – М.: Вильямс, 2004 С.269
  8. Голицына О.Л. Партыка Т.Л. Попов И.И. Языки программирования. Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - М.: ИНФРА-М, 2015. С.178
  9. Гринчишин Я. Т., Ефимов В. И., Ломакович А. Н. Алгоритмы и программы на бейсике. / Я.Т. Гринчишин, В.И. Ефимов, А.Н. Ломакович – М.: Уч. Пос., 2014. - 160 c
  10. Жарков В. А. Основы программирования игр и приложений на Visual Basic и DirectX 10 / В.А. Жарков, - М.: Уч.пос., 2017. - 524 c.
  11. Зиборов В.Т. Visual Basic на примерах / В.Т. Зиборов – Спб.: БХВ-Петербург, 2017. - 961 c.
  12. Зыков С.В. Введение в теорию программирования. Функциональный подход. / С.В. Зыков –М.: Издательство Учебный Центр БИТ Microsoft МИФИ, 2015. С.275
  13. Зюзысов В. М. Математическое введение в декларативное программирование: Уч. пособие. — Томск: ТГУ, 2013. - С.83
  14. Иванова Г. С., Ничушкина Т. Н. Объектно-ориентированное программирование: учебник / Г. С. Иванова, Т. Н. Ничушкина — М.: Изд-во МГТУ им. Н. Э. Баумана, 2014. С.455
  15. Карпов Ю.А. Теория и технология программирования. Основы построения трансляторов / Ю.А. Карпов. - СПб.: BHV, 2012. – С.272
  16. Климов А.В. Занимательное программирование на Visual Basic / А.В. Климов - М.: БХВ-Петербург, 2016. - 2474 c.
  17. Кузнецов М.В. PHP 5 / М.В. Кузнецов. - СПб.: БХВ-Петербург, 2006. С.346
  18. Котеров Д.В. PHP 5 / Д.В. Котеров.- СПб.: БХВ-Петербург, 2006. С.128
  19. Лаптев В.В.: С++. Объектно-ориентированное программирование. - СПб.: Питер, 2008 с.216
  20. Лори Уоллмарк. Ада Байрон Лавлейс - первый программист. / Уоллмарк Л. - М.: Пешком в историю, 2017. С.40
  21. Могилев А.В., Пак Н.И., Хеннер Е.К.Информатика: Учебное пособие для вузов / А.В.Могилев, Н.И.Пак, Е.К.Хеннер.. - М.: Изд. центр "Академия", 2015.с 427
  22. Мурашко И.А., Марина И.М. Методическое пособие по курсу "Функциональное и логическое программирование" / И.А. Мурашко, И.М. Марина - Мн.: БГУИР, 2002. - С. 427
  23. Павловская Т.А.: С#. Программирование на языке высокого уровня. - СПб.: Питер, 2016 - с.304
  24. Питер Друкер, Бизнес и инновации/ Д. Питер - М.: Вильямс, 2014. С.179
  25. Пратт Т.М., Зелковиц М.Я. Языки программирования. Разработка и реализация / Т.М. Пратт, М.Я. Зелковиц. – Спб.: Издательство Питер, 9-е издание, 2017. С.246
  26. Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль / Г.Л. Семашко, А.И. Салтыков. - М.: Наука, 2014. – С.128.
  27. Симонович С.В. Информатика: Базовый курс / С.В. Симонович – Спб.: 2014. – С.640
  28. Симонович С.В. Информатика: Базовый курс / С.В. Симонович. – Спб.: Питер, 2014. – 640 с.: ил. 2.
  29. Учебное пособие. – М.: Издательский отдел факультета ВМК МГУ имени М.В.Ломоносова (лицензия ИД № 05899 от 24.09.2001); МАКС Пресс, 2016 – 112 с
  30. Цуканова Н.И., Дмитриева Т.А.. Теория и практика логического программирования на языке Visual Prolog 7. Учебное пособие для вузов. / Н.И. Цуканова, Т.А. Дмитриева. — М.: РиС, 2015. — 232 c.
  31. Черпаков, И.В. Основы программирования: Учебник и практикум для СПО / И.В. Черпаков. – М.: Люберцы: Юрайт, 2016. – С.219
  32. Шварц Р.Л., Феникс Т., Фой Б. Д. Learning Perl / Шварц Р.Л., Феникс Т., Фой Б. Д. - Символ-Плюс, 2016. С.384
  33. Шрайнер П. А. Основы программирования на языке Пролог : курс лекций. Лекция 1 / П. А. Шрайнер. - М. : Интернет - Ун-т Информ. Технологий, 2005. -С.176
  34. Экспозиция Deutsches Museum, Munchen, 2005
  35. Якубайтис Э.А. Информационные сети и системы: Справочная книга / Э.А. Якубайтис -М.: Финансы и статистика, 2016. С.322
  36. McCartney S. ENIAC: the triumphs and tragedies of the world’s first computer - .:N. Y., 2015. С.336.

ПРИЛОЖЕНИЕ

Таблица 2. Индекс TIOBE за август 2018 года[52]

Август 2018

Август 2017

Изменения

Язык

программирования

Рейтинги

Изменения

1

1

Ява

16,881%

+ 3,92%

2

2

С

14,966%

+ 8,49%

3

3

C ++

7,471%

+ 1,92%

4

5

изменение

питон

6,992%

+ 3,30%

5

6

изменение

Visual Basic .NET

4,762%

+ 2,19%

6

4

изменение

C #

3,541%

-0,65%

7

7

PHP

2,925%

+ 0,63%

8

8

JavaScript

2,411%

+ 0,31%

9

-

изменение

SQL

2,316%

+ 2,32%

10

14

изменение

язык ассемблера

1,409%

-0,40%

11

11

стриж

1,384%

-0,44%

12

12

Delphi / Object Pascal

1,372%

-0,45%

13

17

изменение

MATLAB

1,366%

-0,25%

14

18

изменение

Objective-C

1,358%

-0,15%

15

10

изменение

Рубин

1,182%

-0,78%

16

9

изменение

Perl

1,175%

-0,82%

17

16

изменение

Идти

0,996%

-0,65%

18

15

изменение

р

0,965%

-0,80%

19

13

изменение

Visual Basic

0,922%

-0,89%

20

21

изменение

PL / SQL

0,702%

-0,51%

  1. Питер Друкер, Бизнес и инновации/ Д. Питер - М.: Вильямс, 2014. С.17-19

  2. Блауг М. Бэббедж Чарльз. 100 великих экономистов до Кейнса / М. Блауг. - СПб.: Экономикус, 2008. С.9-15

  3. Экспозиция Deutsches Museum, Munchen, 2005

  4. Лори Уоллмарк. Ада Байрон Лавлейс - первый программист. / Уоллмарк Л. - М.: Пешком в историю, 2017. С.5-7

  5. Питер Друкер, Бизнес и инновации/ Д. Питер - М.: Вильямс, 2014. С.29-32

  6. McCartney S. ENIAC: the triumphs and tragedies of the world’s first computer - .:N. Y., 2015. С. 182-183

  7. Голицына О.Л. Партыка Т.Л. Попов И.И. Языки программирования. Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. - М.: ИНФРА-М, 2015. С.22-24

  8. Могилев и др. Информатика: Учебное пособие для вузов / А.В.Могилев, Н.И.Пак, Е.К.Хеннер; Под ред. Е.К. Хеннера. - М.: Изд. центр "Академия", 2015.с 72

  9. -11 Якубайтис Э.А. Информационные сети и системы: Справочная книга / Э.А. Якубайтис -М.: Финансы и статистика, 2016. С.15

  10. Пратт Т.М., Зелковиц М.Я. Языки программирования. Разработка и реализация / Т.М. Пратт, М.Я. Зелковиц. – Спб.: Издательство Питер, 9-е издание, 2017. С.24

  11. Якубайтис Э.А. Информационные сети и системы: Справочная книга / Э.А. Якубайтис -М.: Финансы и статистика, 2016. С.17

  12. Могилев А.В., Пак Н.И., Хеннер Е.К.Информатика: Учебное пособие для вузов / А.В.Могилев, Н.И.Пак, Е.К.Хеннер. - М.: Изд. центр "Академия", 2015.с 427 75

  13. Зыков С.В. Введение в теорию программирования. Функциональный подход. / С.В. Зыков –М.: Издательство Учебный Центр БИТ Microsoft МИФИ, 2015. С.275 58-59

  14. Пратт Т.М., Зелковиц М.Я. Языки программирования. Разработка и реализация / Т.М. Пратт, М.Я. Зелковиц. – Спб.: Издательство Питер, 9-е издание, 2017. С.38-41

  15. Баррон Д. Введение в языки программирования / Д. Баррон - М.: Мир, 2015. – С.32

  16. Семашко Г.Л., Салтыков А.И. Программирование на языке Паскаль / Г.Л. Семашко, А.И. Салтыков. - М.: Наука, 2014. – С.33

  17. Карпов Ю.А. Теория и технология программирования. Основы построения трансляторов / Ю.А. Карпов. – Спб.: BHV, 2012. – С.54-55

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

  19. Иванова Г. С., Ничушкина Т. Н. Объектно-ориентированное программирование: учебник / Г. С. Иванова, Т. Н. Ничушкина — М. : Изд-во МГТУ им. Н. Э. Баумана, 2014. - С. 7-8

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

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

  22. Иванова Г. С., Ничушкина Т. Н. Объектно-ориентированное программирование: учебник / Г. С. Иванова, Т. Н. Ничушкина — М. : Изд-во МГТУ им. Н. Э. Баумана, 2014. - С. 9-10

  23. Лаптев В.В.: С++. Объектно-ориентированное программирование. - СПб.: Питер, 2008. С.64

  24. Зюзысов В. М. Математическое введение в декларативное программирование: Уч. пособие. — Томск: ТГУ, 2013.  – С. 24

  25. Предика́т — это утверждение, высказанное о субъекте. Субъектом высказывания называется то, о чём делается утверждение.

  26. Павловская Т.А.: С#. Программирование на языке высокого уровня. - СПб.: Питер, 2016. С.25-26

  27. Шварц Р.Л., Феникс Т., Фой Б. Д. Learning Perl / Шварц Р.Л., Феникс Т., Фой Б. Д. - Символ-Плюс, 2016. – С.37

  28. Шварц Р.Л., Феникс Т., Фой Б. Д. Learning Perl / Шварц Р.Л., Феникс Т., Фой Б. Д. - Символ-Плюс, 2016. – С.39

  29. Котеров Д.В. PHP 5 / Д.В. Котеров.- СПб.: БХВ-Петербург, 2006. С.128 23-26

  30. Кузнецов М.В. PHP 5 / М.В. Кузнецов. - СПб.: БХВ-Петербург, 2006. С.56-57, 60

  31. Брент Уэлш, Кен Джонс, Джеффри Хоббс. Практическое программирование на Tcl и Tk / Брент Уэлш, Кен Джонс, Джеффри Хоббс. – М.: Вильямс, 2004 С.15-22

  32. Брент Уэлш, Кен Джонс, Джеффри Хоббс. Практическое программирование на Tcl и Tk / Брент Уэлш, Кен Джонс, Джеффри Хоббс. – М.: Вильямс, 2004 С.36-42

  33. Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. - С.18-19

  34. Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. - С.24

  35. Авраамова О.Д. Язык VRML. Практическое руководство / О.Д. Авраамова М.: Диалог-МИфИ, 2013. - С.24-25

  36. Учебное пособие. – М.: Издательский отдел факультета ВМК МГУ имени М.В.Ломоносова (лицензия ИД № 05899 от 24.09.2001); МАКС Пресс, 2016 – 112 с

  37. Мурашко И.А., Марина И.М. Методическое пособие по курсу "Функциональное и логическое программирование" / И.А. Мурашко, И.М. Марина - Мн.: БГУИР, 2002. - С. 24

  38. Мурашко И.А., Марина И.М. Методическое пособие по курсу "Функциональное и логическое программирование" / И.А. Мурашко, И.М. Марина - Мн.: БГУИР, 2002. - С. 27

  39. Абельсон Х., Сассман Д.Д., при участии Сассман Дж.. Структура и интерпретация компьютерных программ / Х. Абельсон, Д.Д. Сассман, при участии Дж. Сассман –М.: Добросвет, 2004. - С. 36

  40. Шрайнер П. А. Основы программирования на языке Пролог: курс лекций. Лекция 1 / П. А. Шрайнер. - М. : Интернет - Ун-т Информ. Технологий, 2005. -С.26-28

  41. Братко И.А. Алгоритмы искусственного интеллекта на языке PROLOG / И.А. Братко / И.А. Братко. – М.: Вильямс, 2004 . – С.289. стр.28-30

  42. Цуканова Н.И., Дмитриева Т.А.. Теория и практика логического программирования на языке Visual Prolog 7. Учебное пособие для вузов. / Н.И. Цуканова, Т.А. Дмитриева. — М.: РиС, 2015. — С.44-46.

  43. Симонович С.В. Информатика: Базовый курс / С.В. Симонович. – Спб.: Питер, 2014. – С.62.

  44. Жарков В. А. Основы программирования игр и приложений на Visual Basic и DirectX 10 / В.А. Жарков, - М.: Уч.пос., 2017. – С.34-35.

  45. Гринчишин Я. Т., Ефимов В. И., Ломакович А. Н. Алгоритмы и программы на бейсике. / Я.Т. Гринчишин, В.И. Ефимов, А.Н. Ломакович. – М.: Уч. Пос., 2014. – С.54.

  46. Симонович С.В. Информатика: Базовый курс / С.В. Симонович. – Спб.: 2014. – С.28.

  47. Зиборов В.Т. Visual Basic на примерах / В.Т Зиборов. – Спб.: БХВ-Петербург, 2017. – С.64.

  48. Климов А.В. Занимательное программирование на Visual Basic / А.В. Климов - Спб.: БХВ-Петербург, 2016. – С.232-233.

  49. Гринчишин Я. Т., Ефимов В. И., Ломакович А. Н. Алгоритмы и программы на бейсике. / Я.Т. Гринчишин, В.И. Ефимов, А.Н. Ломакович – М.: Уч. Пос., 2014. – С.56-57.

  50. Зиборов В.Т. Visual Basic на примерах / В.Т Зиборов. – Спб.: БХВ-Петербург, 2017. – С.36.

  51. https://www.tiobe.com/tiobe-index/ Статистические данные с известного сайта для программистов и аналитиков.