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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

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

Теоретическая основа работы – исследования известных авторов, освещающих проблему программирования в целом и языков программирования – в частности. Например, такие авторы как Рак И. П,, Финогенов К. Г. и др.

1. Язык программирования

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

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

  • алфавит допустимых символов и служебных (ключевых) слов;
  • синтаксические правила построения из алфавита допустимых конструкций языка;
  • семантику, объясняющую смысл и назначение конструкций языка [4].

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

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

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

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

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

Можно писать программы непосредственно на машинном языке, хотя это и сложно. На заре компьютеризации(в начале 1950–х г.г.), машинный язык был единственным языком, большего человек к тому времени не придумал. Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (т.е. немашинные языки), которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят «исходный код» (гибрид английских слов и математических выражений, который считывает машина), и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке. Существует два основных вида трансляторов: интерпретаторы, которые сканируют и проверяют исходный код в один шаг, и компиляторы, которые сканируют исходный код для производства текста программы на машинном языке, которая затем выполняется отдельно [19].

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

Первые программы писались на машинном языке, т.к. для ЭВМ того времени еще не существовало развитого программного обеспечения, а машинный язык – это единственный способ взаимодействия с аппаратным обеспечением компьютера, так называемым «железом». Каждую команду машинного языка напрямую выполняет то или иное электронное устройство. Данные и команды записывали в цифровом виде (например, в шестнадцатеричной или двоичной системах счисления). Понять программу на таком языке очень сложно; кроме того, даже небольшая программа получалась состоящей из множества строк кода. Ситуация осложнялась еще и тем, что каждая вычислительная машина понимает лишь свой машинный язык [11].

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

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

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

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

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

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

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

2. Языки программирования высокого уровня

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

За 60 с лишним лет развития ЭВМ были разработаны сотни языков программирования, многие из которых используются и сейчас (например Бейсик и Фортран были впервые применены уже в конце 1950–х годов), ежегодно появляется несколько новых языков промышленного применения (не считая десятков экспериментальных). Для того чтобы разобраться в них, языки классифицируют по важнейшим признакам:

  • эволюционным – поколения языков (1GL, 2GL, 3GL, 4GL, 5GL...);
  • функциональным – по назначению, исполняемым функциям (описательные, логические, математические);
  • уровню языка – то есть уровню обобщения в словах–операторах языка (низкого, среднего, высокого...);
  • области применения – то есть где применяется язык (системные, сетевые, встроенные и пр.

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

Рассмотрим классификацию относительно поколений языков программирования

Поколение 1GL.

Машинные языки, языки низкого уровня – двоичные языки процессоров, представляющие собой набор (алфавит) команд, записанных в двоичном коде (0,1), которые данный процессор может выполнить непосредственно, если эти команды ввести в его память в виде последовательности или сразу подать в арифметическо–логическое устройство процессора. Примеры: язык процессора IBM–PC, язык ARM–процессора [19].

Поколение 2GL.

Ассемблеры, автокоды, системные языки, языки среднего уровня – текстовые языки, понятные человеку и однозначно переводимые (транслируемые) в языки низкого уровня, то есть машинный двоичный код. Программирование на 2GL на порядок производительнее, чем на 1GL, так как более удобны для человеческого восприятия. Примеры: Макроссемблер, С, PL/1.

Поколение 3GL.

Языки высокого уровня – текстовые языки, приближенные по словарю и синтаксису к человеческому языку (обычно утрированному английскому, пиндосу), позволяющие записывать программные конструкции в форме, удобной для человеческого мышления и подобные обычному тексту – конспекту, стенограмме. Программирование на 3GL на порядок производительнее, чем на 2GL, так как более удобны для человеческого восприятия и на порядок короче ассемблерных. Примеры: бейсик, фортран, PHP и практически все сетевые языки.

Поколение 4GL.

Языки визуального программирования – языки блок–схем, позволяющие отображать алгоритмы в программных проектах, что облегчает создание и анализ алгоритмов. Программирование на 4GL на порядок производительнее, чем на 3GL. Примеры: RAD–системы, CAD–пакеты, OLAP–системы.

Поколение 5GL.

Интеллектуальные языки программирования – позволяют передать функцию создания алгоритмов компьютеру, а за человеком оставить лишь постановку задачи. Программирование на 5GL на порядок производительнее, чем на 4GL. Примеры: система MatCAD, экспертные системы [19].

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

Хотя поколения языков, естественно, сложились исторически, это не означает, что ранние поколения себя изжили. Они применяются в своих нишах, например, для программирования простейших устройств, имеющих минимум памяти, типа банковских карт, микроконтроллеров бытовых и промышленных устройств применим только машинный код, ибо языкам высоких уровней там «не развернуться». В системном программировании наилучшие результаты дают языки 2GL, ибо в этой сфере важна скорость выполнения и компактность кода. Для обработки текста и сетевых задач оптимальными являются языки 3GL.

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

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

Декларативные языки программирования – это языки объявлений и построения структур. К ним относятся функциональные и логические языки программирования. В этих языках не производится алгоритмических действий явно, то есть алгоритм не задается прграммистом, а строится самой программой. В декларативных языках задается, производится построение какой–либо структуры или системы, то есть декларируются (объявляются) какие–то свойства создаваемого объекта. Эти языки получили широкое применение в системах автоматизированного проектирования (САПР), в так называемых CAD–пакетах, в моделировнии, системах исккусственного интеллекта [16].

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

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

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

Машинный язык

Отдельный компьютер имеет свой определенный Машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM–370 и др.) имеют единый МЯ для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции. В новых моделях ЭВМ намечается тенденция к повышению внутренних языков машинно – аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования [1].

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

Использование символических адресов – первый шаг к созданию ЯСК. Команды ЭВМ вместо истинных (физических) адресов содержат символические адреса. По результатам составленной программы определяется требуемое количество ячеек для хранения исходных промежуточных и результирующих значений. Назначение адресов, выполняемое отдельно от составления программы в символических адресах, может проводиться менее квалифицированным программистом или специальной программой, что в значительной степени облегчает труд программиста [1].

Автокоды

Есть также языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд – они называются Автокоды. В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования, доступный программисту. Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием. В постановочной системе содержатся «остовы» – серии команд, реализующих требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу.

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

Макрос

Язык, являющийся средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму – называется Макрос (средство замены). В основном, Макрос предназначен для того, чтобы сократить запись исходной программы. Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает макроопределяющий и исходный текст. Реакция макропроцессора на вызов–выдача выходного текста. Макрос одинаково может работать, как с программами, так и с данными [20].

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

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

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

Проблемно – ориентированные языки

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

Проблемных языков очень много, например:

  • Фортран, Алгол – языки, созданные для решения математических задач;
  • Simula, Слэнг – для моделирования;
  • Лисп, Снобол – для работы со списочными структурами [21].

Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол–68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ. Программы в Пл/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти [21].

Диалоговые языки

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

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

Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами [11].

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

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

2.2. Языки программирования высокого уровня

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

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

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

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

C++ – универсальный объектно–ориентированный язык, реализации которого существуют практически для всех популярных операционных систем (Unix, Windows, MacOS); программы, написанные на C++ отличаются высокой производительностью, надежностью и масштабируемостью; язык обладает развитой системой библиотек для решения практически любых задач;

Objective C – версия Си для разработки программ, запускаемых на платформах Apple (MacOS, iOS);

C# – язык, применяемый преимущественно для разработки программ для работы в операционной системе Windows;

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

JavaScript – интерпретируемый язык для написания веб–приложений; пригоден для решения широкого круга задач благодаря активно развивающемуся в последние годы фреймворку Node.js. [6]

К семейству Си–подобных языков относятся и другие средства разработки: PHP, Perl, Bash и др. Python Одним из самых популярных и востребованных ЯП в последние годы является интерпретируемый язык Python. Круг его возможностей чрезвычайно широк: от написания прошивок для встраиваемой техники до систем искусственного интеллекта. При этом Python обладает простым синтаксисом, низким порогом вхождения, широким коммьюнити, обширной коллекцией библиотек и модулей. Он хорошо документирован и обладает широкой образовательной базой для обучения новичков.

Haskell Haskell — популярный универсальный язык, ориентированный на функциональное программирование. Его сильной стороной является полноценная поддержка т.н. отложенных вычислений. Erlang Erlang — язык программирования функционального типа, направленный на создание распределённых вычислительных систем. Развивается усилиями корпорации Ericsson.

Новые языки программирования

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

Популярность новых языков программирования. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Популярность новых языков программирования.

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

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

Swift – новый язык от компании Apple, призванный заменить устаревший Objective–C. Этот ЯП предназначен для разработки нативных приложений как для iOS (мобильные устройства), так и для MacOS (десктопные системы). Приложения, написанные на Swift, демонстрируют высокую производительность. Кроме того, он хорошо подходит для создания 2D–игр. На развитие Swift большое влияние оказали ЯП Ruby и Python.

Kotlin – язык, созданный на платформе Java. Он всё чаще используется для написания мобильных приложений, работающих в среде ОС Android. Kotlin обладает более низким порогом вхождения по сравнению с Java, при этом он полностью поддерживается в привычной для разработчиков мобильных программ IDE Android Studio. Вполне вероятно, что Kotlin может со временем стать основным языком разработки для этого класса мобильных устройств [1].

ЗАКЛЮЧЕНИЕ

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

  • рассмотрена сущность языков программирования;
  • кратко охарактеризована история развития языков программирования;
  • классифицированы языки программирования;
  • рассмотрены и классифицированы языки программирования высокого уровня.

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

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

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

  1. Аузяк, А. Г. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 с.
  2. Биллиг, В. А. Основы объектного программирования на C# (C# 3.0, Visual Studio 2008) / В. А. Биллиг. – М.: Интернет–университет информационных технологий, Бином. Лаборатория знаний, 2016. – 584 c.
  3. Буховец, А. Г. Алгоритмы вычислительной статистики в системе R. Учебное пособие / А. Г. Буховец, П. В. Москалев. – М.: Лань, 2015. – 160 c.
  4. Гергель, В. П. Современные языки и технологии параллельного программирования / В. П. Гергель. – М.: Издательство МГУ, 2016. – 408 c.
  5. Герман, О. Программирование на Java и C# для студента / О. Герман, Ю. Герман. – М.: БХВ–Петербург, 2014. – 512 c.
  6. Жданова, Т. А. Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. – 56 с.
  7. Истомин, Е. П. Информатика и программирование / Е. П. Истомин, A. M. Власовец. – М.: Андреевский Издательский дом, 2015. – 294 c.
  8. Ишкова, Э. А. C#. Начала программирования / Э. А. Ишкова. – М.: Бином–Пресс, 2016. – 334 c.
  9. Кадырова, Г. Р. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с. .
  10. Кетков, Ю. Л. Свободное программное обеспечение. FREE PASCAL для студентов и школьников (+ CD) / Ю.Л. Кетков, А.Ю. Кетков. – М.: БХВ–Петербург, 2017. – 376 c.
  11. Макаров, В.Л. Программирование и основы алгоритмизации.: учебн.
  12. Опалева, Э. А. Языки программирования и методы трансляции / Э. А. Опалева, В. П. Самойленко. – М.: БХВ–Петербург, 2015. – 480 c.
  13. Павловская, Т. А. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. – М.: Питер, 2016. – 464 c.
  14. Павловская, Т. А. C/C++. Процедурное и объектно–ориентированное программирование. Учебник / Т. А. Павловская. – М.: Питер, 2015. – 496 c.
  15. Рак, И. П. Основы алгоритмизации и программирования: Метод. указ. / Сост.:И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та.
  16. Рапаков, Г. Г. Turbo Pascal для студентов и школьников / Г. Г. Рапаков, С. Ю. Ржеуцкая. – М.: БХВ–Петербург, 2017. – 352 c.
  17. Семакин, И. Г. Основы программирования и баз данных. Учебник / И. Г. Семакин. – М.: Academia, 2016. – 224 c.
  18. Финогенов, К. Г. Использование языка Ассемблера. Учебное пособие / К. Г. Финогенов. – М.: Горячая линия – Телеком, 2017. – 440 c.
  19. Финогенов, К. Основы языка Ассемблера / К. Финогенов. – М.: Горячая Линия – Телеком, Радио и связь, 2017. – 963 c.
  20. Хабибуллин, И. Программирование на языке высокого уровня. C/C++ / И. Хабибуллин. – М.: БХВ–Петербург, 2016. – 512 c.
  21. Хорев, П. Б. Объектно–ориентированное программирование с примерами на С#. Учебное пособие / П. Б. Хорев. – М.: Форум, Инфра–М, 2016. – 200 c.