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

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

Содержание:

Введение

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

Из этого можно сделать вывод, что предмет моих исследований очень актуален и представляет интерес для всех кто взаимодействует с ЭВМ, а это почти каждый человек. Объектом и темой своей курсовой работы я выбрал: «Классификация языков программирования. Критерии выбора среды и языка разработки программ».

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

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

Общеизвестно, что существует несколько сотен языков программирования. Для выполнения одной задачи или комплекса задач ЭВМ, программист может использовать различные языки программирования, один или несколько для одной задачи. Профессиональный программист знает несколько языков программирования и пользуется в основном только ими. Все созданные ЯП (языки программирования), даже устаревшие и не востребованные, были созданы для выполнения каких-либо задач и/или устраняли недочеты предшественников.

Для всех задач не существует единого языка программирования, но для определенной, специальной задачи может быть оптимален определенный язык программирования. Языки программирования делят на универсальные и узкоспециализированные. Универсальные языки, которые наиболее оптимальны для распространённых программ/задач, с помощью них можно создать широкий круг программ. Узкоспециализированные ЯП могут быть не так распространены и востребованы, но все-таки востребованы. Найти специалиста со знанием универсальных языков и узкоспециализированного языка, на вес золота, можно сделать вывод по новой тенденции HR специалист по поиску IT специалистов. В своей курсовой я рассмотрю: как же разделяются языки программирования; насколько они нужны. При этом использую востребованность и на рынке труда, и заработную плату, предложенную работодателям.

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

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

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

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

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

В программировании, совокупность методов, подходов, понятий и идей, определяющих способ конструирования программ, называют парадигмами. Виды парадигм программирования: Императивная, Аппликативная, Основанная на системе правил, Объектно-ориентированная[3]. Практически все современные языки мультипарадигматичные, это означает что язык допускает использование различных парадигм. Стили написания программы могут пересекаться друг с другом в деталях парадигм.

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

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

Аппликативная парадигма представляет собой другой взгляд на вычисления, производимые с помощью языка программирования. В основу этой парадигмы рассматриваются функции, которые выполняет программа, преобразование изначальных данных с помощью функции. Как и у декларативного стиля программирования, не рассматривается последовательность действий или алгоритмов, через которые должна пройти вычислительная машина. Задача состоит в выяснении необходимой функции для применения к начальному состоянию машины (путем выбора начального набора переменных и комбинирования их определенным образом[5]). Такую модель поддерживают такие языки как ML и LISP. Синтаксис таких языков в основном выглядит так:

Функция_n(… функция_2 (функция_1 (данные))…)[6]

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

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

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

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

Характерным для процедурного языка является наличие оператора присваивания. Процедурные языки пишутся в стиле императивной парадигмы программирования[9]. Данные языки ближе к машинному коду и компьютеру потребуется меньше усилий для перевода языка, при составлении алгоритма придётся приложить дополнительные усилия от разработчика. Машинный код не удобен для передачи команд компьютеру связи с большой детализацией и сложностью описания для человека. Процедурный язык- это язык, выдающий приказы к последовательным действиям и указанным путем для получения результата, при этом ожидаемый результат не описывается. Процедурный язык подразумевает под собой подробную детализацию по шагам понятных для ЭВМ, а формулировки алгоритма и его специальной записи от программиста. Примеры процедурных ЯП: Basic (обозначение оператора присваивания «Y = X»)[10], Pascal (Y : = X) ,C (Y : = X).

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

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

-машинные

-машино–ориентированные;

-машинно-независимые[12].

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

Для облегчения программирования в виде машинных команд (кодирование) был разработан машинно-зависимый язык[13], Ассемблер, но не в виде чисел, а с помощью условных символьных обозначений, называемых мнемониками[14]. Ассемблер, язык с высокой детализацией, разрабатывался под конкретный компьютер, при изменении компьютера код приходилось разрабатывать заново, что было не удобно. При этом Ассемблер обеспечивал максимальную скорость в решении небольших задач[15].

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

Языки программирования высокого уровня, не требуют написания языка под конкретный компьютер. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше. Для упрощения процесса создании программ, важным шагом было заставить компьютер работать переводчиком с языков программирования на машинный код. Языки программирования высокого уровня переносятся на другие языки или код, с помощью транслейтора (компилятор, интерпретатор). Одними из первых языков программирования высокого уровня был Fortran (система трансляции формул; используемый в решении задач математической ориентации[16]), предоставляющей возможность записи алгоритма с использованием условных операторов. В Фортране, строгости и изяществу языка уделяется меньшее внимание, основной акцент на организации ввода-вывода и модульности[17].

Высокие языки программирования (машинно-независимые) так же можно подразделить, на: машинно-ориентированные (Си) и универсальные (Бейсик, Паскаль, Фортран, Кобол, Пл/1, Ада, Модула-2, Алгол). Универсальные языки объединяют в себе черты машинно-ориентированных и процедурно-ориентированных ЯП.

Универсальные языки нацелены на решение широкого спектра задач. Одни из первых универсальных языков были Алгол и Фортран[18]. Алгол- акцент внимания в языке на строгости определения и изяществе языковых конструкций[19]. Фортран – широко распространённый язык, благодаря его простоте, написание близко к общепринятой математической форме и работает почти со всеми известными методами и алгоритмами, библиотеками данных. Универсальные языки решают значительно более разнообразные научные и экономические задачи, чем предшественники, но эти достоинства могут сделать языки сложными для изучения и использования, например, ПЛ/1.

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

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

Данные, в непроцедурных языках обрабатываются после выполнения указанных условий по фиксированным алгоритмам (табличные языки и генераторы отчетов). Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения. Табличные методы легко осваиваются специалистами любых профессий[22]. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе.

Непроцедурные языки подразделяются на: Объектно-ориентированные (Java, Delphi, Visual Basic, C++) и Декларативные.

Наряду с алгоритмическими языками развивались декларативные языки, созданные как языки искусственного интеллекта, а также для обработки деловой информации, такие как COBOL, Lisр (функциональный язык программирования; ориентирован на структуру данных в форме списка, позволяет организовать эффективную обработку больших объемов текстовой информации.), Prolog (основанный на системе правил). При написании декларативных языков (описательных) используется описание условий, а также каким должен быть результат, согласно имеющимся данным, не описывая процесс и последовательность выполнения действий. Отличительная особенность в декларативном языке, что программист не пишет алгоритм программы, он указывает исходные информационные структуры, взаимосвязи и какими свойствами должен обладать результат. Декларативные языки можно подразделить на две группы – логические (типичный представитель – Пролог) и функциональные (Лисп) [23].

Функциональные (аппликативные) языки программирования выполняют действия при помощи вызова функций или функций в функции. Функции в коде нужны для упрощения процесса программирования[24]. Подразумевается, что изначальные данные будут обработаны с помощью функции[25]. Язык логического программирования обрабатывает факты, данные и выражения, и обрабатывая их, как следствие и выдает результат обработки. Логичный язык используют стиль парадигмы, основанной на системе правил, это делает язык достаточно легким для изучения. Для создания больших программ с большим функционалом одного логического языка программирования будет недостаточно. Логичный язык подойдет для написания программы с искусственным интеллектом и работы с данными, однако редко используется без сторонних языков.

Пролог (Prolog) – это язык программирования, созданный специально для работы с базами знаний, основанными на фактах и правилах (одного из элементов систем искусственного интеллекта). В Прологе программа действует методом проверки каждого из возможных предположений. Выставляется предположение №1, которое проверяется на истину с помощью заданных баз данных, на выполнение заданного условия или совпадения. Если предположение №1 не выполнило заданных условий или не совпало с информаций из баз данных, оно является ложным и проверяется предположение №2, и так далее. Это процесс возврата. Для исследований в сфере изучения искусственного интеллекта подойдет Prolog и Lisp. Синтаксис ЯП основанных на парадигме основанных на системе правил выглядит[26]:

разрешающее условие_1 ->действие_1 разрешающее условие_2 ->действие_2 разрешающее условие_n ->действие_n

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

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

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

Успешные примеры объектно-ориентированного языка: С++, Java, С#. Из языков объектного программирования, популярных среди профессионалов, следует назвать прежде всего Си++, для более широкого круга программистов предпочтительны среды типа Delphi (язык объектно-ориентированного «визуального» программирования, обладает мощностью и гибкостью языков Си и Си++, простой интерфейс при разработке приложений, обеспечивающих взаимодействие с базами данных и поддержку различного рода работ в рамках корпоративных сетей и сети Интернет) и Visual Basic.

Одно из правил языка Си: функция не может содержать в себе другую функцию, а переменные делятся на глобальные и локальные. В языке Си создается много объектов выполняющих свою определенную функцию, как отдельные независимые компьютеры[29].

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

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

Языки вебпрограммирования можно условно разделить на две пересекающиеся группы: клиентские и серверные[31].

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

• HTML

• CSS

• JavaScript

• VBScript

• ActionScript

• Java

Серверные языки. Когда пользователь дает запрос на какую-либо страницу (переходит на неё по ссылке или вводит адрес в адресной строке своего браузера[33]), то вызванная страница сначала обрабатывается на сервере, то есть выполняются все программы, связанные со страницей, и только потом возвращается к посетителю по сети в виде файла. Этот файл может иметь расширения: HTML, PHP, ASP, ASPX, Perl, SSI, XML, DHTML, XHTML.

Работа программ уже полностью зависима от сервера, на котором расположен сайт, и от того, какая версия того или иного языка поддерживается[34].

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

• PHP

• Perl

• Python

• Ruby

• любой .NET язык программирования (технология ASP.NET)

• Java .

2. Составляющие и выбор среды программирования

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

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

В текстовом редакторе программист пишет текст программы, программный код. Транслейтор может быть представлен в виде интерпретатора и компилятора.[36] Интерпретатор переводит ЯП по частям в промежуточный язык, а потом в машинный код. Если интерпретатор найдет ошибку в части кода, то следующую часть переводить не будет. Компилятор, сканирует код программы полностью, а потом переводит язык программирования на язык понятный машине, машинный код[37]. Компилятор так же проверяет текст программы на наличие синтаксических ошибок. Компилируемые языки: C, C++, C#, Fortran, Pascal, Ada. Интерпретируемые языки: Lisp, ML, Perl, Prolog, Smalltalk[38].

Отладчик, судя из названия, нужен для отладки программ. Ошибки могут быть синтаксическими, тогда компилятор выявляет их, и логическими. Для тестирования на логические ошибки программного языка и нужен отладчик. Для экономии времени программиста, среды программирования содержат части программного кода, со ссылкой на внешний источник[39]. Отладчик связывает объектный код с кодами отсутствующих функций, чтобы создать исполняемый загрузочный модуль (без пропущенных частей)[40]. Внешним источником может быть личная библиотека группы программистов в одной компании, или в стандартные общедоступные библиотеки. Например, файл с расширением .exe (для Windows), либо .out (для Linux). После загрузки программы, отладчик начинает тестирование и выполнение программы.

Среды разработки изначально подготавливались под определенный язык. В основном, после выбора языка для разработки, долго выбирать среду реализации не потребуется, они уже разработаны для основных задач, которые могут потребоваться. Для языка программирования Basic подходит среда программирования (реализации) Quick Basic, для Pascal – Virtual Pascal. Среда реализации занимается поиском и выявлением ошибок в коде, редактирует исходные данные, отлаживает и генерирует тексты в программном коде. Но существуют среды разработки, предназначенные для нескольких языков, такие как Eclipse или Microsoft Visual Studio.

С развитием объектно-ориентированного программирования широкое распространение получили среды визуального программирования. Среды визуального программирования- среды реализации, где самые распространённые блоки кода выражены в виде графических объектов[41]. Одним из результата развитий, появились среды программирования ориентированных систем на быструю разработку[42] (RAD системы). Rapid Application Development — среда быстрой разработки приложений. Среда быстрой разработки позволяет программисту создавать только логику приложения, последовательность и функции, RAD система же доделывает рутинную работу, типа интерфейса и кнопок. Благодаря данным новшествам, производительность программиста очень выросла. Например, среда программирования Delphi позволяет легко и быстро создавать законченные приложения для Windows, так же является RAD[43].

Наиболее часто используемыми являются визуальные среды Delphi, Borland C++Builder, Visual C++, Visual Basic фирмы Microsoft, Visual Ada фирмы IBM и др. C++Builder, использует большую библиотеку готовых частей кодов, которую постоянно обновляют и увеличивают в зависимости от потребностей и задач программистов. Данная среда использует язык С++, библиотека VCL (Visual Component Library). Конкурентом, является Microsoft Visual Studio, быстродействующая и мощная система RAD, уже без такой мощной поддержки постоянно обновляемой библиотеки данных.

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

Как и в языках программирования современные гении стремятся создать универсальные среды программирования. У современных программистов популярна среда программирования Microsoft .NET Framework[45]. Ее можно использовать для создания обычных программ и веб-приложений. Неоспоримым преимуществом совместимость к разным языкам программирования, например, к С++, Delphi, C#, причем работать одновременно с ними, в одной программе[46].

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

2.1. Популярные языки программирования

Так как разновидностей ЯП больше сотни, в данной курсовой работе, рассмотрим наиболее популярные, а также те что находятся на слуху. Например, последние годы наиболее популярными и востребованными считаются Java, C, C++, Python, C#, которые входят в топы языков программирования. Именно они составляют основу современных программ и используются при написании любого крупного проекта. Для начала рассмотрим семейство Си.

Несмотря на то, что язык Cи появился в 1972 году, он остается актуальным и по ныне. На первый взгляд язык Си слишком прост по составу, слишком детализированный, старый и вообще не работоспособный. Однако, именно он оказался в основе разработке таких языков программирования как C++, C#, Java[47]. Язык Си: Машинно-ориентированный; Использует Императивную парадигму; Компилируемый язык. Синтакцис императивных языков в целом имеет вид:

Оператор_1:

Оператор_2:[48]

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

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

Си сочетает в себе черты как языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не обеспечивают такие языки, как Бейсик и Паскаль[50].

У Си как у ЯП существует много отличий от других языков программирования, далее рассмотрим некоторые из них с ЯП Паскаль. Фигурные скобки {} в Си обрамляют тело функции, объединяют несколько операторов в один составной, а в Pascal их заменяют begin и end. Вызов функций имеет вид, например,

Тип <Имя функции> (Список параметров)

{

Операторы тела функции

}[51].

Из отличий символы перевода строки Pascal writeln(`Hello, world`) и Си “Hello, world\n”, в одном случае это writeln и в другом \n[52]. Круглые скобки в ЯП Си обозначают разделение условия и тела, у Pascal do, then, of. В ЯП С++ скобки являются частью имени функции[53]. В языке Basic при описании операторов необязательные параметры в [], а альтернативные параметры используют {}[54].

Детализация языка Си является и плюсом, и минусом. Из минусов: - большое затрачивание усилий программиста для написания программы (времени и процесса написания); - сложность изучения отталкивает к изучению данного языка; - долгий язык на написание программы из-за высокой детализации; - транслятор может пропускать много мелких ошибок. И плюсов: - конкретность проставления задачи/задач, нет «лишних» процессов, грузящих ЭВМ.

В долгосрочной перспективе, язык Си, наиболее выгодный язык для написания ПО, как наиболее надежный и высокопроизводительный[55]. В современном мире все ресурсы измеряемы и условно ограничены: у программиста это время и затраченные усилия, у машины, например, производительность. Для написания грандиозно сложной программы, с экономией ресурсов и энерго-затрат, потребуются знания языки Си. Си – это язык общения программистов. Это единственный язык, компилятор которого есть на всех платформах: от встроенных систем до суперкомпьютеров.

C++

Появился он в 1973 году, так же как и Cи предназначен для общего пользования. Его можно использовать в таких областях как: создание операционных систем, для функций аппаратного ускорения, мобильные приложения, игры, микроконтроллеры, IoT, роботы, веб, системы моделирования, прогнозирования, обработки статистики и в нейронных сетях.

Разработан от языка программирования Си. Для уровня уверенного пользователя потребуются понимание языка Си[56]. Язык программирования С++ сохранил от языка Си быстроту на исполнения кода и универсальность. Написание же самого кода на С++ времязатратный процесс, по сравнению с интерпретируемыми языками (C# , Java, Python[57]), у которых скорость написания кода будет выше и визуально займет больше места . В чистом виде в программах не используется, но нет крупномасштабной программы без использования С++.

Программа в языке С++ может состоять из одной или более функций. Функция – подпрограмма, которую вызывает основной код, и эта функция может повторятся сколько угодно раз. С++ поддерживает множественное наследование классов. Каждый класс содержит данные и функции, которые работают с этими данными[58]. Скобки выделяют функцию, например[59],

Void main () - заголовок функции

{

Int num;

Num=1;

Cout<<” “<<num

} - тело функции.

В языке С++ в начале каждой программы или функции требуется привести список имен (идентификаторов) всех используемых переменных, а во-вторых, указать тип каждой из них. С++ использует логические и отношения операции имеющих только два значения, например, больше или меньше к нулю операнд, оценивается путем его эквивалентности к нулю. Разработчики языка Си вкладывают усилия в детальное написание каждой функции от и до (детализация), разработчики С++ прописывают классы и их взаимоотношения, не вдаваясь в детали, функций, которые находятся внутри классов (объектно-ориентированное программирование). В ЯП С++ окончание строки, как и в С с помощью последовательности \n, а так же с помощью манипулятора endl (end line – окончание строки)[60]. С++ является объектно-ориентируемым языком программирования[61]. Объектно-ориентируемые программы легче понять и редактировать. Благодаря изолированности классов в объектно-ориентированном программировании, неполадки в одном объекте не повлияют на работу программы в целом. Особенность выполнения операций в языке С++, выполняются поочередно, как и у других языков, но уже с учетом заданных разработчиком приоритетов.

Транслейторы (компиляторы) с языка С++ есть на каждой операционной системе, большинство программ переносится с одной платформы на другую. Компилятор с С++ различает заглавные и маленькие буквы в отличие от других языков. Среды разработки и библиотеки данных для С++ в широком доступе, с этим не возникнет проблем[62]. Наиболее широкие возможности языка проявляются в C++ Builder, в котором поддерживается возможность создания VCL компонентов. Имеется реализация VC++.Net, которая также позволяет создавать компоненты (для платформы .Net Framework).

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

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

Из плюсов: -использует объектно-ориентированное программирование, что повышает производительность разработчиков[63].

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

C#

С# был разработан благодаря усилиям Андерса Хейлсберга - создателя компилятора, который лег в основу Turbo Pascal[64] и языка программирования Delphi. Первая версия языка увидел свет в июне 2000 года, а окончательная версия вышла в 2002 году вместе с Visual Studio. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio, Одна из сред разработки для C# CLR и основные сборки.NET Framework[65].

Язык C# многое унаследовал от С++[66] и Java. Как и в предшественниках использует объектно-ориентированный подход в программировании, используются готовые конструкции. Один из недостатков языка заключается в том, что он позволяет создавать приложения только для операционной системы Windows, и кроме того, является весьма тяжеловесным, а значит, программы, написанные на нем, занимают немало места.

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

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

-разработка обычных приложений для компьютера -среда WinForms Application[67] (в основе графическая технология GDI/GDI+). Графика красивее –WPF (DirectX). Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX. DirectX - API для программирования под Windows, чаще всего используется при программировании игр.

- приложения для магазина – библиотеки данных Windows Store;

- для Веб-приложения + платформа ASP.NET[68].

-мобильное приложение – XamarinStudio (проект Mono) сделает сразу под все платформы. На основе Mono была создана XamarinStudio, которая позволяет создавать мобильные приложения на C#, не используя родные(нативные) для языков платформы (Java[69] и Objective-C).

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

Из плюсов: -все так же широкодоступные среды и библиотеки; -универсальность; - легче для понимания и изучения чем Си и С++; - можно разрабатывать мобильные приложения под Android и iOS .

Из минусов: - программы на С# занимают не мало места; - компилятор грузит производительность компьютера.

Можно отметить, что во многом Си, С++ и С# - языки программирования не для начинающих. Но освоив их, можно быть уверенным в том, что изучение нового языка займет минимум времени. Познакомиться с ними и написать свои первые приложения можно в специальной среде Borland[70] или Visual Studio.

Java

В начале 90-х, команда ученых разработали улучшенную версию С++. Цель команды была создать язык, который сможет использовать начинающий разработчик с автоматическим управлением памятью и независимую от конкретной платформы[71]. В Java была придумана следующая концепция - всё, что написал программист сначала компилируется в байт код, который не зависит от платформы. Затем байт код выполняется при помощи интерпретатора, называемого JVM (виртуальная машина Java)[72]. Виртуальная машина должна быть установлена на устройство заранее и зависит от платформы. В этом языке имеется строгая типизация, наличие множества встроенных классов, предоставляющих широкие возможности создания как клиентской, так и серверной частей приложения.

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

Java язык активно продвигается компанией Oracle[73]. Java программы можно разделить по сфере применения: Java SE(стандартная версия); Java EE( для бизнес приложений, от SE для веб программирования); Java ME(для мобильных устройств, от SE более короткая).

Примеры программ и сервисов с использования языка программирования Java: Ebay, Amazon, Yahoo, Юлмарт, Однокласники. Java FX - платформа, которая чаще всего используются для программ, работающих с анимацией и мультимедиа, например, при создании игр. JSP - позволяет создавать веб-странички одновременно со статичными элементами (HTML, SVG) и динамичными. Spring - один из самых известных фреймворков для Java. Используется для создания сложных корпоративных приложений и сильно упрощает для программиста работу c JavaEE. Среда разработки для ЯП Java – Java Development Kit (JDK).

Java, это язык высокого уровня; компилированный; объектно-ориентированный язык; платформо-независимый[74]. Высокие языки программирования проще для изучения программистов, например, чем языки низкого программирования Assembler или Си и С++, но менее мощные[75]. Как у любого языка высокого уровня у Java снижена производительность за счет компиляции. А также приложение по очистки памяти снижает производительность.

Впоследствии, многие методы из Java были успешно переняты другими языками, такими как С#, Ruby, Python и прочими.

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

Плюсы: - простота изучения; - автоматизированное управление памятью; -простые средства создания сетевых приложений; - не зависит от компьютерной архитектуры.

Java язык сегодня является лидером у программистов для разработки современных веб-приложений. Если вы собрались создать масштабируемое мобильное приложение для Android и iOS, будь то смартфон или планшет, то нет ничего лучше, чем Java. Язык программирования Java упрощенный с С++[76].

Предпочтительно выбрать Java если вы разрабатываете: - Android приложение; -Коммерческое программное обеспечение; -ПО для научных вычислений; -ПО для анализа Big Data; -ПО общего назначения или инструменты безопасности; -Серверные программы.

JavaScript

Стоит отметить, что, несмотря на схожесть в названии, JavaScript и Java – это два совершенно разных языка[77]. Главная особенность Java, написать код один раз и использовать его под разные платформы, цель JavaScript языка получение динамичного языка. Он был создан для использования внутри HTML (язык гипертекстовой разметки)[78]. В отличие от Java который компилируется, что снижает производительность, JavaScript полностью интерпретируется «на лету» с помощью движка под браузер который сделал запрос. Выполнения параллельного выполнения последовательности инструкция в JavaScript медленнее чем у Java. В JavaScript отсутствуют классы[79], есть только объекты, наследование может происходить от других объектов напрямую, в противоположность предшественнику. Как скриптовый язык, он ориентирован на повышение гибкости, скорости разработки, локализацию и динамическую (в период выполнения) проверку[80].

Данный язык подойдет тем, кто ориентирован на создание браузеров и скриптов, приложений и дополнений к ним. Если вы планируете создавать собственные сайты, вам также необходимо познакомиться с ним поближе[81]. Сравнительно молодой язык программирования, появился в 1995 году. Данный, объектно-ориентированный, язык понадобиться разработчику для создания вебстраниц, он работает в основных браузерах (Internet Explorer,Google Chrome, Firefox, Opera) как язык сценариев для создания интерактивности сайта[82]. Различные механизмы компоновки могут отображать JavaScript по-разному, что приводит к несогласованности с точки зрения функциональности и интерфейса. Большая часть JavaScript зависит от манипуляции элементами DOM браузеров. И разные браузеры предоставляют разные типы доступа к объектам, в частности Internet Explorer.

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

Плюсы: - простота в создании и реализации; - интерпретируется, что освобождает нагрузку на сервер.

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

Предпочтительно использовать JavaScript в таких сферах: -Динамические одностраничные приложения (SPA); -Форт-энд приложения (Query, AngularJS, Backbone.js, Ember.js, ReactJS); -Серверные приложения (Node.js, MongoDB, Express.js и так далее); -Мобильные приложения (PhoneGap, Ract Native и т д)[83].

Python

Python – высокоуровневый язык программирования, основная задача которого повысить производительность разработчика, сделать код более простым для человека. Разработка языка началась в 90-е годы и происходит по сей день[84].

Python является приемником Java, С, Lisp, C++ языков программирования. Использует функциональные и объектно-ориентированные принципы программирования[85]. Программы на языке Python предназначены справляться с такими задачами как разработка различных проектов и приложений, анализ и проверка данных, статистика, для обработки больших массивов данных.

Сам по себе язык программирования Python обладает низкой скоростью выполнения задач, если сравнить с Java и C++, но при переводе в байт-код (код С) и использованием виртуальных машин эта проблема решаема.

Язык Python: высокоуровневый, использует структурное, функциональное, императивное и объектно-ориентированное программирование. Использует большие стандартные библиотеки функций[86]. В коде языка нет фигурных скобок, вместо них используется пробелы или табуляция.

Python универсален для многих задач:

- для программирования микроконтроллеров - Micro Python (одноименная плата и язык на котором работает).

-для веб-программирования + фреймворки (готовые конструкции/библиотеки) Django[87], Flask и Tornado;

- для тестирования сайтов автоматическом режиме с помощью Selenium;

- для программирования игр есть Pygame[88] (набор библиотек для игр и приложений) и Kivy(библиотека с открытым кодом для быстрой разработки межплатформенных пользовательских интерфейсов, Linux, Windows, OS X, Android и iOS);

- для работы с 3D моделированием – PyOpenGL (платформо-независимый интерфейс для написания дву- и трехмерной графики);

- для разработки межплатформенных приложений для компьютера - фреймворк PyQt (расширение графического интерфейса; Linux, UNIX, Mac, Windows);

-для обработки изображений разработан Python OpenCV (библиотека алгоритмов компьютерного зрения и обработки изображений с открытым исходным кодом);

-для трейдинга (автоматизации сбора данных на рынке ценных бумаг)

Python используют при написании плагинов к таким известным программам как Blender (ПО для создания трёхмерной графики), Autodesk Maya (редактор трехмерной графики; Windows, Mac, Linux).

Благодаря удобству использования Python язык используется учеными разных отраслей с получением инженерных расчетов, удобных графиков. (Библиотеки NumPy, SciPy, MatPlotLib), а так же для генерации больших списков[89]. Биоинформатиками используется вебсайт со свободным доступом где способ с анализа от Python, помогает обрабатывать данные в области молекулярной биологии.

Модно использовать на Python машинное обучение и нейросети (например, самостоятельное опознавание спама в эл. почте на основании основных слов, используемых в подобных сообщениях).

Существует мнение что Python это аналог С#, но для Linux. Данное мнение возможно при изначальной разработке и было верно, но теперь не является проблемой, перенос с системы Lunix в Windows заключается просто в копировании файлов с одной машины в другую[90]. Для разработки ПО в Windows, дополнительно используется система управления пакетами Pip, для упрощения установки и управлением программными пакетами, иногда идет в комплекте с интерпретатором или со средой разработки. Веб-фреймворк (готовая конструкция) Django (основной принцип отсутствие повторений в коде), на языке Python, используется на известных сайтах YouTube, Google, Mozila[91], Instagram.

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

Objective –C, Swift.

Objective–C - компилируемый язык объектно-ориентированного программирования, основанный на таких языках как Си и парадигм Smalltalk[92], используемый компанией APPLE для своих продуктов. В 2104 году APPLE показала свой новый язык программирования Swift, несмотря на это, все приложения для iOS/Mac до 2014 года написаны на языке Objective–C. При условии разработки или работы с продуктами Apple или приложениями AppStore потребуется знание Objective–C и Swift[93]. При изучении Objective–C языка программирования, поможет знания языков группы Си. Apple допустила совместимость Objective-C внутри проектов, написанных на Swift, что позволит применять отдельные ключевые моменты в новом языке программирования[94].

Минусы Objective-C: -сложный язык к прочтению; -низкая производительность, у Swift выше; - ограничен и создан iOS/Mac.

Плюсы Objective-C: - легко к изучению после группы языков Си; - широкая доступность библиотек с файлами, анимацией, аудио, графикой, фреймворков, игровые движки.

Swift –высокоуровневый язык, наследник идей Objective-C, Rust, Haskell, Ruby, Python, C# и CLU. Swift язык программирования, который прост в изучении, в процессе компиляции предотвращает массу ошибок, чем его предок, этим ускоряет процесс разработки ПО. Основанная задача Swift максимальная простота для разработчиков, язык постоянно обновляется и улучшается. За пять лет с выхода нового языка появилось достаточное количество библиотек и расширений.

Плюсы Swift: - прост к изучению; - совместим с Objective-C; - в Playground есть возможность сразу проверить часть кода на ошибки; - производительность выше, чем Objective-C; - повышена читабельность языка и снижено общее количество кода; -Apple всячески развивает язык и предлагает курсы по изучению.

Минусы Swift: - ограниченность продуктами Apple; - большое количество проектов написаны на Objective-C и переписывать их никто не собирается из-за энергозатратности, это тормозит популяризацию языка.

SQL

Для выборки записей согласно условий, по определённым признакам из больших массивов данных (в основном таблицы), был разработан язык структурированных запросов –SQL[95]. Язык управления данными[96], SQL используется для написания СУБД (система программ для управления базами данных).

Практически в каждой СУБД имеется свой универсальный язык, ориентированный на ее особенности. Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server[97]), IBM (DB2), Oracle, Software AG (Adabas), Informix и Sybase. Их продукты предназначены для совместной параллельной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах. Несмотря на разделение по профилям ведущими производителями, язык SQL стандартизирован международными организациями, что позволяет переносить базу данных с одной СУБД на другую без больших доработок. SQL, структурированный язык программирования с функциональным назначением, позволяет структурировать и записывать данные на диск, а так же считывать данные с диска, использует иерархические структуры. Характерные задачи, которые выполняет язык: создание, изменение, удаление записей и таблиц; поиск, отбор, сортировка среди баз данных[98].

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

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

Минусы: - для работы с определенной СУБД придётся затратить дополнительное время для изучения созданного диалекта языка к данному СУБД; -язык не прост для читабельности в своих иерархичных структурах; - присутствует проблема, дублирующийся строки, колонки.

Ruby

Ruby- высокоуровневый, объектно-ориентированный, скриптовый язык разработанный в Японии в 1995 году для Lunix, взявший лучшее из таких языков как Perl, Smalltalk, Eiffel, Ada и Lisp. Как скриптязык, Ruby интегрировал в себя новейшие концепции, например, объектную модель Smalltallk[100] и сечение массивов Fortran[101].

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

Язык программирования Ruby удобный и гибкий в использовании. Язык снял ограничение на использование в тексте обозначения, обычно использующиеся в операциях и запретных для использования в тексте кода. Например, определить, что сложение чисел будет работать при вводе слова plus (1 plus 2), а не символа (1+2). Возможность переименования облегчает процесс написания кода многим разработчикам. В языке Ruby любые типы данных считаются объектами и для них можно задавать переменные и методы, это подчерпнуто из языка Smalltalk[102]. Ruby устранил неудобство от С++, где требуется прежде задать тип данных прежде чем их использовать.

Наследование в Ruby обозначается знаком < , в отличии от С++ где наследование использует символ двоеточие. Например, class child < parent[103].

Ruby позволяет в сжатые сроки создать мощный проект. Используется для разработки веб-приложений и программного обеспечения. Для баз данных современные разработчики используют интерфейс запросов Active Record, извлечения данных без SQL. В 2004 году вышел фреймворк (шаблон\конструктор) Ruby on Rails (RoR) для веб-приложений, который принес большую популярность Ruby.

На этом языке написаны такие системы, программы, приложения, сайты как: Diaspora, Кикстартер, Гитхаб, Твиттер. Используют крупные компании: Моторолла, НАСА[104].

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

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

Минусы: - за счет повышения удобства написания кода снижена производительность; - при росте нагрузки на сайт некоторые проекты переписываются на другие языки, например, Java; - востребованность языка останавливается на Ruby on Rails[105]; - мало литературы для изучения на русском языке; - плохая поддержка для Windows, не в Unix-подобной системе будет сложнее работать с IDE, устанавливать дополнительные библиотеки.

PHP

PHP (Hypertext Preprocessor) – широко распространенный объектно- ориентированный язык скриптовый язык программирования, применяемый для веб-программирования. Язык изначально был создан из набора скриптов написанных на Perl языке. Следующая версия, PHP/FI, была написана на С языке, что упростило синтаксис языка, с сохранением стиля обозначения переменных из Perl. В отличии от Perl, где все конструкции являются глобальными по умолчанию, в PHP все данные локальные, а глобальные данные должны быть импортированы[106]. В 2004 году представлена версия с улучшенной производительностью и измененными функциями объектно-ориентированного программирования, а модель позаимствовали у Java[107]. В последующих версиях присутствуют проблемы с Юникодом.

PHP код можно вставить в html-страницу или создать отдельной страницей, в этом схожесть с JavaScript. Отличие в том, что для PHP необходим веб сервер для выполнения, кода JavaScript можно запускать локально в браузере[108].

Доступность для большинства платформ - Windows, Linux, Unix, MacOS[109]. Также стоит отметить, что ядро языка автоматически управляет памятью, возвращая её системе после выполнения скрипта, поэтому программисту не нужно заботится об этом при написании кода.

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

-Вконтакте, Facebook (используют свои версии языка KPHP и HPHP);

-Движок Википедии (MediaWiki);

- Системы управления контентом и новостными сайтами (Bitrix, Prestashop, Joomla, WordPress и Drupal );

- редко, но используется и для создания графических GUI-приложений (библиотеки PHP-GTK и PHP-Qt,[110]).

Язык имеет простую и понятную структуру и считается одним из самых простых[111], позволяет работать с большими объемами данных, широко распространены фейворки, библиотеки, инструменты для PHP.

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

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

Perl

Perl- скриптовый язык программирования созданный 1987 году, предназначен для работы с текстами. До появления PHP веб программирование велось на данном языке. Данный ЯП называют «склеивающим», потому что создавался для склеивания существующих программ в интересах создания большой системы[112]. Для Perl была создана библиотека PCRE[113], которая сейчас применяется в PHP и большинстве современных языков.

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

Цель создания языка, получение лучшего из низкоуровневых и высокоуровневых языков программирования. Упростить процесс написания кода, как у высокоуровневых, но повысить производительность и расширить возможности за счет сочетания элементами низкоуровневых языков. Создатель, Ларри Уолл, снизил нагруженность кода, за счет возможности удаления из кода лишних символов кавычек, скобок, при этом программа понимала, что от нее требовалось[114]. Синтаксис языка сложнее чем у PHP. В версии 2000 года, код программы при компиляции преобразуется в байт код и запускается на виртуальной машине (как в Java). Очень большую программу можно вместить в несколько строк, но придётся потратить время для запоминания принятых сокращений и обозначений, в итоге, получился язык сложный для изучения, но простой для пользования.

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

Минусы: - мало литературы для изучения; - сложный для изучения; - не распространены библиотеки, фаерворды.

Pascal, Delphi

Pascal- высокоуровневый компилятивный язык программирования созданный в 60-е годы как учебный. Популярность получил благодаря Turbo Pascal (среда программирования)[115]. Для работы с данным языком требуется изучение не большого количества команд. Использовалось для написаний утилит (узкоспециализированных вспомогательная программа), в промышленном программировании, в 90-е годы Mac DOS[116] написана на Паскале и использовала Object Pascal в качестве основного системного языка.

Компилятор не различает строчных и прописных букв, пробелы игнорируют, что позволяет сделать код легко читаемым[117]. Например, для Pascal одинаковы – name, NAME, Name. А для ЯП Си, С++, Java три разных идентификатора.

В 80е и 90е года Паскаль и Си конкурировали. Основные ОС (Microsoft, Unix[118], Mac) использовали язык Си, итог, Си стал доминирующим языком. При помощи Object Pascal (высокоуровневый строго типизированный язык, который поддерживает структурное и объектно-ориентированное проектирование[119]) были созданы проигрыватель The KMPlayer, Skype, Total Commander, почтовый клиент The Bat! Как самостоятельный язык не востребован, но в совокупности со знаниями SQL, Python и другими языками программирования ситуация меняется.

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

Минусы: - громоздкие конструкции языка; -устаревший, малоиспользуемый.

Delphi - императивный, структурированный, объектно-ориентированный, высокоуровневый язык программирования со строгой статической типизацией переменных, приемник Pascal. Не самостоятельный язык, а лишь комплекс вспомогательных библиотек, программа и огромного объема надстройка над языком Object Pascal[120].

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

Плюсы: - быстрый к выполнению язык[121]; - удобные среды программирования. Минусы: - меньше библиотек, чем у семейства Си; - не гибкий язык; - ограничен по функциональности.

И Delphi , и Pascal относятся к объектно –ориентированным языкам в которых требуется, что бы каждый класс наследовал от существующего родительского класса. Преимущество том, что все классы наследуют от существующего класса, являющимся корневым предком всех подклассов. Каждый объект обладает общим минимальным уровнем функциональности, гарантированным корневым классом[122]. Что одновременно является и плюсом, и минусом из-за обреченной зависимости объектов. Так же оба языка обладают мощностью и гибкостью языков Си И С++, при этом интерфейс для разработки гораздо проще и удобнее[123].

В настоящий момент языки программирования можно разделить на универсальные и специализированные. Учитывая наличие разнообразных обширных современных фреймфорков, библиотек, сред, возможностей совместимости, ограничения между ЯП сглаживаются. Например, на C++ можно разрабатывать приложения не только под Windows. В Visual Studio можно также скомпилировать код C++ под Mac os, Linux, а также под мобильные платформы. Даже в Android Studio появилась возможность разрабатывать мобильные приложения Android на C++. Также на C++ можно разрабатывать серверную часть сайта. Например, серверная часть поискового движка google (Основное высоконагруженное ядро) написана на C++. Возможности C++ практически безграничны. Все будет зависеть от уровня владения языком.

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

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

Проанализировав один из крупнейших интернет рынков с вакансиями трудоустройства hh.ru, количество вакансий требующих знания языков более 2000: SQL, HTML, CSS, JavaScript, Java, Python.

Присутствие такого количества ЯП SQL, HTML, CSS говорит о том, что требуется детальное понимание в веб разработке сайтов, хотя изначально цель развития современных ЯП была в сокращении и снижении детального вникания разработчика для экономии времени[124].

Количество вакансий со знанием языка от 1000 до 2000: Си, С++, С#, PHP. Python востребован как язык расширения, который позволяет пользователю настраивать или расширять функциональные возможности скриптовых утилит[125]. Одним из толчков популяризации ЯП C# инфраструктура Xamarin с ее возможностью межплатформенной разработки не только на Windows[126].

Языки с присутствием вакансий от 500-100: Basic, Assembler, Delphi, Perl, Ruby, Objective-C. Присутствуют и языки, которые считаются устаревшими, не модными, не востребованными, но судя по количеству вакансий и заработной плате которую готовы платить работодатели, можно не согласиться с данным мнением. Даже Objective-C, которому на замену пришел Swift, востребован и Assembler низкоуровневый язык.

Присутствуют и несколько вакансий с требованием знаний: Lisp, Pascal, Fortran, Ada. Несмотря на то что Lisp был появился в 1960 году, в рамках проекта по искусственному интеллекту, как первый функциональный язык[127]. Lisp и сейчас используется, например, он удобен для обучения студентов, для научных исследований в области естественных языков и для задач искусственного интеллекта.

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

Стоить добавить сюда, что у программистов на Java одни из самых высоких зарплат - они начинаются от 60-80 тысяч рублей, в зависимости от региона, и могут доходить до 150-200, если вырастете с junior до middle developer и выше. Количество вакансий 2500. Одни из причин популярности в области серверных приложений ЯП Java состоит в том, что он поддерживает работу в сети и организовывает многопоточную обработку[128], способствует сокращению ошибок, связанных с указателями[129].

Ко всем прочему, стоит отметить, что редко встречается вакансии для программирования на чистом Ruby. 90 процентов из них будут, скорее всего, для Ruby on Rails. Программисты на RoR, на сегодняшний день, одни из самых востребованных в IT отрасли[130]. К высокой зарплате стоит прибавить высокий статус принадлежности к элите и зависть со стороны других программистов, например, php-шников, пишущих сайты-визитки за 100 рублей. Количество вакансий с Ruby, 300.

В России вакансии для Perl-программистов встречаются довольно часто и зарплаты у них намного выше, чем у многих других айтишников потому, что знающих Perl не так-то просто найти. Поэтому, если хотите высокую зарплату при отсутствии конкурентов, то можете смело отправлять заявку на должность Perl программиста в Yandex (Яндекс.Директ использует Perl), Mail.ru, Reg.ru и многие другие известные в России и за рубежом компании. Количество вакансий, 300.

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

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

С 2003 по 2018 года языками года по поисковым запросам выбирались: Python, C, Go, Java, JaScript, SQL, Objective-C, Ruby, PHP, C++. Несколько раз выбирались победителями года: Python, C, Go, Objective-C. Существует много критики по поводу критериев оценки данного рейтинга и других.

Если выделить основной язык для компьютерных игр, несомненно это С++, для профессиональной разработки игр потребуется знание данного ЯП[131].

Причинами популярности ЯП Python являются большое количество программного обеспечения, высокая скорость разработки, переносимость программ, большое количество библиотек поддержки, высокая интеграция компонентов, просто изящество языка[132]. Есть мнение, что если требуется мощная, гибкая и лучшая платформа для разработки веб-приложений и нет желания заниматься ее поддержкой то выбор ЯП Python[133].

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

Заключение

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

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

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

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

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

Список использованных источников

  1. Албахари Джозеф, Албахари Бен. С# 7.0. Справочник. Полное описание языка. – Спб.: Альфа-книга, 2018.- 1024 с.
  2. Андреева Т. А. Программирование на языке Pascal. - Электрон. текстовые данные. - М.: Интернет-Университет Информационных Технологий : ИНТУИТ, 2016. - 277 c.
  3. Арнольд К., Гослинг Д.Язык программирования Java. – Спб.: Питер, 1997. -2002 с.
  4. Блох Д. Java. Эффективное программирование. − М: Лори, 2002. – 224 с.
  5. Бузыкова Ю.С., Жданова Т.А., Шувалова М.А. Языки и технологии программирования// Тестовые задания к изучению курса «Языки программирования высокого уровня и технологии программирования» для обучающихся по всем программам бакалавриата и специалитета всех форм обучения.-Хабаровск: Изд-во Тихоокеан. Гос.ун-та, 2014. – 5-6 с.
  6. Васильев А.Н. Python на примерах. Практический курс по программированию. – Спб.: НиТ, 2016. – 429 с.
  7. Валейд Д. PHP для чайников. - М.: Вильямс, 2005. – 317 с.
  8. Гедранович В.В. Основы компьютерных информационных технологий : учеб.-метод. Комплекс / В.В. Гедранович, Б.А. Гердранович, И.Н. Тонкович. – Минск: МИУ, 2009. – 344 с.
  9. Голицына О.Л. Языки программирования: Учебное пособие. - М.: ИНФРА-М, 2008. – 400 с.
  10. Доусон М. Изучаем С++ через программирование игр. – Спб.: Питер, 2016. – 352 с.
  11. Желонкин А.В. Основы программирования в интегрированной среде DELPHI. – М.: Бином. Лаборатория знаний, 2004. − 240 с.
  12. Кадырова Г.Р. Основы алгоритмизации и программирования: Учеб. пособие. – Ульяновск: УлГТУ, 2014.- 95 с.
  13. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 924 с.
  14. Легалов А.И., Швец Д.А. Процедурный язык с поддержкой эволюционного проектирования// Научный вестник НГТУ.– Новосибирск, 2003. - №2 (15). – С. 25 – 29.
  15. Лекции. Основы алгоритмизации и программирования – МФПА Университет -49 с.
  16. Лутц Марк. Изучаем Python.- Спб.: Символ –Плюс, 2011. 1280 с.
  17. Мазуркевич А. М. Еловой Д.С. PHP: настольная книга программиста. - Спб.: Новое знание, 2003. – 480 с.
  18. Малыхина М.П., Частиков А.П. Языки программирования Фортран и Алгол // Новое в жизни, науке, технике. Серия: Вычислительная техника и ее применение. – 1988. №8, 9.
  19. Метц С. Ruby. Объектно-ориентированное проектирование. – Спбю: Питер, 2017. – 304 с.
  20. Могилев А.В., Пак Н.И., Хённер Е.К. Информатика: Учеб. пособие. – М.: Центр Академия, 2003. – 816с.
  21. Монкур М. Освой самостоятельно JavaScript за 24 часа. – М.: Вильямс, 2001.- 320 с.
  22. Моррисон М.Изучаем JavaScript. –Спб.: Питер, 2012, - 608 с.
  23. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 688 с.
  24. Основы Алгоритмизации и программирования: Учебн. пособие / Т.А. Жданова Ю.С. Бузыкова: Под ред. В.В. Стригунова. – Хабаровск : Изд-во Тихоокеан.гос.ун-та, 2011. – 56 с.
  25. Павловская Т.А. Программирование на языке высокого уровня C#. – Национальный открытый Университет: ИНТУИТ, 2016. – 246 с.
  26. Паппас К. Мюррей У. Visual C++ 6. Руководство разработчика. 2000– 451 с.
  27. Пильщиков В. Н. Assembler. Программирование на языке ассемблера IBM PC. – М.: ДИАЛОГ-МИФИ, 1999. – 288 с.
  28. Поляков Д.Б,. Круглов И.Ю. Программирование в среде Турбо Паскаль.- М.:МАИ, 1992. – 577 c.
  29. Прасти Нараян. Введение в ECMAScript 6. – М.: ДМК Пресс, 2016. – 349 с.
  30. Программирование: Введение в профессию. В 2-х т. Т.1: Азы программирования. Столяров А.В. – М.: МАКС Пресс, 2016. – 464 с.
  31. Программирование и основы алгоритмизации: Учеб. Пособие для инженерных специальностей технических университетов и вузов/ А.Г. Аузяк Ю.А. Богомолов А.И. Маликов Б.А.Старостин. – Казань: КАИ, 2013. – 153 с.
  32. Программирование и основы алгоритмизации: Учеб. пособие/ А.А. Яковлев. – Волгоград. гос. техн. ун-т.- Волгоград, 2004. – 80 с.
  33. Программирование и основы алгоритмизации: Учеб. пособие / В.Л.Макаров. –– Спб.: СЗТУ, 2003. – 110 с.
  34. Программирование на С++ / В.П. Аверкин, А.И. Бобровский, В.В. Веснич и др.; Под ред. А.Д. Хомоненко. - СПб.: Корона принт, 1999. - 252 с.
  35. Прохоренок Н.А. HTML, JavaScript, PHP и MySQL. Джентельменский набор Web-мастера. – Спб.: БВХ-Петербург, 2010. – 912 с.
  36. Рубанцев В. Большой самоучитель Delphi XE3.- Я + R, 2012. – 1274 с.
  37. Руководство по Swift Версия 5.0/ перев. Югай С., Махатма А. – Apple Inc., 2014. – 430 с.
  38. Скляр Д., Трахтенберг А. PHP. Сборник рецептов. – Спб.: Символ-Плюс, 2005.- 672 с.
  39. Уинвист Г., Маккарти М. Swift для детей. Самоучитель по созданию приложений для IoS. – М.: Манн, Иванов и Фербер, 2018. – 368 с.
  40. Федоров Д.Ю. Основы программирования на примере языка Python:.Учеб..пособие. – Спб., 2016.- 176 с.
  41. Форсье Д., Биссекс П., Чан У. Django. Разработка веб-приложений на Python. – Спб.: Символ-Плюс, 2010. – 456 с.
  42. Хабибулин И.Ш. Разработка Web-служб средствами средствами Java. – Спб.: БВХ-Петербург, 2003. – 400 с.
  43. Черный А,А. Вычислительная техника в инженерных расчетах и моделировении: Учеб. пособие. – Пенза: Пенз.гос. ун-та, 2010. – 268 с.
  44. Шварц Р., Феникс Т., Фой Б. Д. Изучаем Perl. - Спб.: Символ-Плюс, 2009. -–384 с.
  45. С#. / Ватсон К., Беллиназо М., Корнс О., Эспиноза Д. и др. – М.: Лори, 2005. – 862 с.
  46. Java. Библиотека профессионала: В 2-х т. Т.1. -. Кей С. Хорстманн. – М.: Вильямс, 2016. – 864 с.
  47. PHP5 для начинающих./ Мерсер Д.У., Кент А., Новицки С., и др. -М.: Вильямс, 2006. - 848с.
  1. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 24 с.

  2. Голиков В.А. Теория программирования. / Московская финансово-промышленная академия. – М., 48 с.

  3. Лекции. Основы алгоритмизации и программирования – МФПА Университет – 6 с.

  4. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 62 с.

  5. Программирование и основы алгоритмизации: Учеб. пособие/ А.А. Яковлев. – Волгоград. гос. техн. ун-т.- Волгоград, 2004. – 7 с.

  6. Лекции. Основы алгоритмизации и программирования – МФПА Университет – 7с.

  7. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 40 с.

  8. Программирование и основы алгоритмизации: Учеб. пособие/ А.А. Яковлев. – Волгоград. гос. техн. ун-т.- Волгоград, 2004. – 7 с.

  9. Легалов А.И., Швец Д.А. Процедурный язык с поддержкой эволюционного проектирования// Научный вестник НГТУ.– Новосибирск, 2003. - №2 (15). – С. 25.

  10. Основы Алгоритмизации и программирования: Учебн. пособие / Т.А. Жданова Ю.С. Бузыкова: Под ред. В.В. Стригунова. – Хабаровск : Изд-во Тихоокеан.гос.ун-та, 2011. – 31 с.

  11. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 33 с.

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

  13. Бузыкова Ю.С., Жданова Т.А., Шувалова М.А. Языки и технологии программирования// Тестовые задания к изучению курса «Языки программирования высокого уровня и технологии программирования» для обучающихся по всем программам бакалавриата и специалитета всех форм обучения.-Хабаровск: Изд-во Тихоокеан. Гос.ун-та, 2014. – 5 с.

  14. Пильщиков В. Н. Assembler. Программирование на языке ассемблера IBM PC. – М.: ДИАЛОГ-МИФИ, 1999. – 3 с.

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

  16. Могилев А.В., Пак Н.И., Хённер Е.К. Информатика: Учеб. пособие. – М.: Центр Академия, 2003. – 211с.

  17. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 125 с.

  18. Малыхина М.П., Частиков А.П. Языки программирования: Алгол // Новое в жизни, науке, технике. Сер. “Вычислительная техника и ее применение”, № 9/88.

  19. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. –175 с.

  20. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 28 с.

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

  22. Черный А,А. Вычислительная техника в инженерных расчетах и моделировении: Учеб. пособие. – Пенза: Пенз.гос. ун-та, 2010. – 15 с.

  23. Голиков В.А. Теория программирования. / Московская финансово-промышленная академия. – М., 48 с.

  24. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 49 с.

  25. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 67 с.

  26. Лекции. Основы алгоритмизации и программирования – МФПА Университет – 6 с.

  27. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 38 с.

  28. Программирование на С++ / В.П. Аверкин, А.И. Бобровский, В.В. Веснич и др.; Под ред. А.Д. Хомоненко. - СПб.: Корона принт, 1999. - 87 с.

  29. Голиков В.А. Теория программирования. / Московская финансово-промышленная академия. – М., 48 с.

  30. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 30 с.

  31. Монкур М. Освой самостоятельно JavaScript за 24 часа. – М.: Вильямс, 2001.- 9 с.

  32. Моррисон М.Изучаем JavaScript. –Спб.: Питер, 2012, - 16 с.

  33. PHP5 для начинающих./ Мерсер Д.У., Кент А., Новицки С., и др. -М.: Вильямс, 2006. - 848с.

  34. Монкур М. Освой самостоятельно JavaScript за 24 часа. – М.: Вильямс, 2001.- 19 с.

  35. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 26 с.

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

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

  38. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 50 с.

  39. Монкур М. Освой самостоятельно JavaScript за 24 часа. – М.: Вильямс, 2001.- 265 с.

  40. Паппас К. Мюррей У. Visual C++ 6. Руководство разработчика. 2000– 3 с.

  41. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 30 с.

  42. Хабибулин И.Ш. Разработка Web-служб средствами средствами Java. – Спб.: БВХ-Петербург, 2003. – 11 с.

  43. Желонкин А.В. Основы программирования в интегрированной среде DELPHI. – М.: Бином. Лаборатория знаний, 2004. − 8 с.

  44. Васильев А.Н. Python на примерах. Практический курс по программированию. – Спб.: НиТ, 2016. – 13 с

  45. С#. / Ватсон К., Беллиназо М., Корнс О., Эспиноза Д. и др. – М.: Лори, 2005. – 12 с.

  46. Павловская Т.А. Программирование на языке высокого уровня C#. – Национальный открытый Университет: ИНТУИТ, 2016. – 5 с.

  47. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 66 с.

  48. Лекции. Основы алгоритмизации и программирования – МФПА Университет – 6 с.

  49. Доусон М. Изучаем С++ через программирование игр. – Спб.: Питер, 2016. – 31 с.

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

  51. Программирование и основы алгоритмизации: Учеб. пособие / В.Л.Макаров. –– Спб.: СЗТУ, 2003. – 23 с.

  52. Программирование: Введение в профессию. В 2-х т. Т.1: Азы программирования. Столяров А.В. – М.: МАКС Пресс, 2016. – 244 с.

  53. Программирование и основы алгоритмизации: Учеб. Пособие для инженерных специальностей технических университетов и вузов/ А.Г. Аузяк Ю.А. Богомолов А.И. Маликов Б.А.Старостин. – Казань: КАИ, 2013. – 33 с.

  54. Основы Алгоритмизации и программирования: Учебн. пособие / Т.А. Жданова Ю.С. Бузыкова: Под ред. В.В. Стригунова. – Хабаровск : Изд-во Тихоокеан.гос.ун-та, 2011. – 30 с.

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

  56. Доусон М. Изучаем С++ через программирование игр. – Спб.: Питер, 2016. – 29 с.

  57. Васильев А.Н. Python на примерах. Практический курс по программированию. – Спб.: НиТ, 2016. – 13 с.

  58. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 40 с.

  59. Программирование и основы алгоритмизации: Учеб. Пособие для инженерных специальностей технических университетов и вузов/ А.Г. Аузяк Ю.А. Богомолов А.И. Маликов Б.А.Старостин. – Казань: КАИ, 2013. – 33 с.

  60. Программирование и основы алгоритмизации: Учеб. пособие / В.Л.Макаров. –– Спб.: СЗТУ, 2003. – 26 с.

  61. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 30 с.

  62. Доусон М. Изучаем С++ через программирование игр. – Спб.: Питер, 2016. – 33 с.

  63. Программирование и основы алгоритмизации: Учеб. Пособие для инженерных специальностей технических университетов и вузов/ А.Г. Аузяк Ю.А. Богомолов А.И. Маликов Б.А.Старостин. – Казань: КАИ, 2013. – 32 с.

  64. Поляков Д.Б,. Круглов И.Ю. Программирование в среде Турбо Паскаль.- М.:МАИ, 1992. – 9 c.

  65. Албахари Джозеф, Албахари Бен. С# 7.0. Справочник. Полное описание языка. – Спб.: Альфа-книга, 2018.- 29 с.

  66. Павловская Т.А. Программирование на языке высокого уровня C#. – Национальный открытый Университет: ИНТУИТ, 2016. – 19 с.

  67. С#. / Ватсон К., Беллиназо М., Корнс О., Эспиноза Д. и др. – М.: Лори, 2005. – 217 с.

  68. Албахари Джозеф, Албахари Бен. С# 7.0. Справочник. Полное описание языка. – Спб.: Альфа-книга, 2018.- 29 с.

  69. Арнольд К., Гослинг Д.Язык программирования Java. – Спб.: Питер, 1997. -3 с.

  70. Программирование и основы алгоритмизации: Учеб. Пособие для инженерных специальностей технических университетов и вузов/ А.Г. Аузяк Ю.А. Богомолов А.И. Маликов Б.А.Старостин. – Казань: КАИ, 2013. – 3 с.

  71. Хабибулин И.Ш. Разработка Web-служб средствами средствами Java. – Спб.: БВХ-Петербург, 2003. – 7 с.

  72. Монкур М. Освой самостоятельно JavaScript за 24 часа. – М.: Вильямс, 2001.- 195 с.

  73. Java. Библиотека профессионала: В 2-х т. Т.1. -. Кей С. Хорстманн. – М.: Вильямс, 2016. – 29 с.

  74. Блох Д. Java. Эффективное программирование. − М: Лори, 2002. – 6 с.

  75. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 29 с.

  76. Java. Библиотека профессионала: В 2-х т. Т.1. -. Кей С. Хорстманн. – М.: Вильямс, 2016. – 29 с.

  77. Монкур М. Освой самостоятельно JavaScript за 24 часа. – М.: Вильямс, 2001.- 22 с.

  78. Моррисон М.Изучаем JavaScript. –Спб.: Питер, 2012, - 17 с.

  79. Прасти Нараян. Введение в ECMAScript 6. – М.: ДМК Пресс, 2016. – 195 с.

  80. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 84 с.

  81. Прохоренок Н.А. HTML, JavaScript, PHP и MySQL. Джентельменский набор Web-мастера. – Спб.: БВХ-Петербург, 2010. – 2 с.

  82. Прасти Нараян. Введение в ECMAScript 6. – М.: ДМК Пресс, 2016. – 17 с.

  83. Прасти Нараян. Введение в ECMAScript 6. – М.: ДМК Пресс, 2016. – 128 с.

  84. Федоров Д.Ю. Основы программирования на примере языка Python:.Учеб..пособие. – Спб., 2016.- 9 с.

  85. Васильев А.Н. Python на примерах. Практический курс по программированию. – Спб.: НиТ, 2016. – 20 с.

  86. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 87 с.

  87. Форсье Д., Биссекс П., Чан У. Django. Разработка веб-приложений на Python. – Спб.: Символ-Плюс, 2010. – 17с.

  88. Лутц Марк. Изучаем Python.- Спб.: Символ –Плюс, 2011. - 51 с.

  89. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 279 с.

  90. Лутц Марк. Изучаем Python.- Спб.: Символ –Плюс, 2011. - 42 с.

  91. Прохоренок Н.А. HTML, JavaScript, PHP и MySQL. Джентельменский набор Web-мастера. – Спб.: БВХ-Петербург, 2010. – 164 с.

  92. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 463 с.

  93. Руководство по Swift Версия 5.0/ перев. Югай С., Махатма А. – Apple Inc., 2014. – 4 с.

  94. Уинвист Г., Маккарти М. Swift для детей. Самоучитель по созданию приложений для IoS. – М.: Манн, Иванов и Фербер, 2018. – 10 с.

  95. С#. / Ватсон К., Беллиназо М., Корнс О., Эспиноза Д. и др. – М.: Лори, 2005. – 485 с.

  96. Голицына О.Л. Языки программирования: Учебное пособие. - М.: ИНФРА-М, 2008. – 400 с.

  97. PHP5 для начинающих./ Мерсер Д.У., Кент А., Новицки С., и др. -М.: Вильямс, 2006. – 375c/

  98. С#. / Ватсон К., Беллиназо М., Корнс О., Эспиноза Д. и др. – М.: Лори, 2005. – 550 с.

  99. PHP5 для начинающих./ Мерсер Д.У., Кент А., Новицки С., и др. -М.: Вильямс, 2006. – 16 с.

  100. Метц С. Ruby. Объектно-ориентированное проектирование. – Спбю: Питер, 2017. – 13 с.

  101. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 250 с.

  102. Метц С. Ruby. Объектно-ориентированное проектирование. – Спбю: Питер, 2017. – 37 с.

  103. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 499 с.

  104. Метц С. Ruby. Объектно-ориентированное проектирование. – Спбю: Питер, 2017. – 29 с.

  105. Метц С. Ruby. Объектно-ориентированное проектирование. – Спбю: Питер, 2017. – 31 с.

  106. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. –81 с.

  107. Скляр Д., Трахтенберг А. PHP. Сборник рецептов. – Спб.: Символ-Плюс, 2005.- 672 с.

  108. PHP5 для начинающих./ Мерсер Д.У., Кент А., Новицки С., и др. -М.: Вильямс, 2006. - 848с.

  109. Мазуркевич А. М. Еловой Д.С. PHP: настольная книга программиста. - Спб.: Новое знание, 2003. – 480 с.

  110. Скляр Д., Трахтенберг А. PHP. Сборник рецептов. – Спб.: Символ-Плюс, 2005.- 672 с.

  111. Валейд Д. PHP для чайников. - М.: Вильямс, 2005. – 317 с.

  112. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 79 с.

  113. PHP5 для начинающих./ Мерсер Д.У., Кент А., Новицки С., и др. -М.: Вильямс, 2006. - 848с.

  114. Шварц Р., Феникс Т., Фой Б. Д. Изучаем Perl. - Спб.: Символ-Плюс, 2009. -–384 с.

  115. Рубанцев В. Большой самоучитель Delphi XE3.- Я + R, 2012. – 1274 с.

  116. Поляков Д.Б,. Круглов И.Ю. Программирование в среде Турбо Паскаль.- М.:МАИ, 1992. – 6 c.

  117. Андреева Т. А. Программирование на языке Pascal. - Электрон. текстовые данные. - М.: Интернет-Университет Информационных Технологий : ИНТУИТ, 2016. - 277 c.

  118. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 66 с.

  119. Голицына О.Л. Языки программирования: Учебное пособие. - М.: ИНФРА-М, 2008. – 400 с.

  120. Желонкин А.В. Основы программирования в интегрированной среде DELPHI. – М.: Бином. Лаборатория знаний, 2004. − 5 с.

  121. Рубанцев В. Большой самоучитель Delphi XE3.- Я + R, 2012. – 1274 с.

  122. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 452 с

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

  124. Лафоре Р. Объектно-ориентированное программирование в С++. – М.: Питер, 2004. - 49 с.

  125. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 79 с.

  126. Албахари Джозеф, Албахари Бен. С# 7.0. Справочник. Полное описание языка. – Спб.: Альфа-книга, 2018.- 35 с.

  127. Орлов С.А. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. – Спб.: Питер 2013. – 33 с.

  128. Арнольд К., Гослинг Д.Язык программирования Java. – Спб.: Питер, 1997. -2 с.

  129. Java. Библиотека профессионала: В 2-х т. Т.1. -. Кей С. Хорстманн. – М.: Вильямс, 2016. – 28 с.

  130. Метц С. Ruby. Объектно-ориентированное проектирование. – Спбю: Питер, 2017. – 31 с.

  131. Доусон М. Изучаем С++ через программирование игр. – Спб.: Питер, 2016. – 29 с.

  132. Лутц Марк. Изучаем Python.- Спб.: Символ –Плюс, 2011. - 41 с.

  133. Форсье Д., Биссекс П., Чан У. Django. Разработка веб-приложений на Python. – Спб.: Символ-Плюс, 2010. – 17 с.