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

Современные языки программирования ( История развития языков программирования)

Содержание:

ВВЕДЕНИЕ

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

В настоящий момент количество языков программирования с трудом поддаётся подсчёту. К примеру “The Language List” - интернет ресурс, содержащий перечень языков программирования с кратким описанием и областью применения - нассчитывает две с половиной тысячи наименований[1]. При таком многообразии сложно ожидать даже от, к примеру, Full Stack вэб-разработчика[2], что он сможет написать сервис на любом из языков, ведь владение даже одним-двумя требует времени на изучение и постоянной практики.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • машинные;
  • машинно-оpиентиpованные (ассемблеры);
  • машинно-независимые (языки высокого уровня).

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

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

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

Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполняемом файле (обычно такому файлу присваивается расширение .exe).

Системы объектно-ориентированного программирования содержат программу-транслятор и позволяют работать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки проекта используется режим интерпретатора, а для получения готовой программы уже режим компилятора[6].

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

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

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

  • компилируемые;
  • интерпретируемые;
  • компилируемые на основе псевдокода;
  • совмещенные.

Компилируемые языки. К этой группе можно отнести такие языки программирования, у которых исходный код преобразуется специальной программой-компилятором в объектные модули. Затем эти модули собираются при помощи программы сборки (линковщика) в единый загружаемый модуль. Это представляет собой выполняемую программу. К компилируемыми относятся: C, C++, Object Pascal.

Интерпретируемые языки. Как видно из названия, к интерпретируемым языкам относят языки, исходный код которых считывается и выполняется специальной программой-интерпретатором. Интерпретируемыми являются значительная часть версий языков Basic и Forth.

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

Совмещенные языки. В совмещенных языках исходный код проходит две стадии обработки. На первой стадии происходит компиляция исходного кода до уровня промежуточного языка (байт-код в Java или язык MSIL в технологии .NET). На второй стадии происходит либо интерпретация промежуточного кода (в Java этим занимается виртуальная машина Java) либо докомпиляция промежуточного кода до выполняемого машинного кода (в технологии .NET такую функцию осуществляет среда выполнения CLR).

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

  • создающие процесс;
  • сценарные.

Языки создающие процесс. После запуска программы создается отдельный процесс выполнения этой программы. Это характерно для языков: C, C++, Object Pascal.

Сценарные языки. Сценарий (скрипт) - это программа, которую выполняет другая программа. В качестве примеров можно привести скрипты оболочки в UNIX, программы на языках PHP, Python, Ruby.

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

  • автономные;
  • встроенные.

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

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

  • VBA (Visual Basic for Application), который используется только внутри приложений Microsoft Office для автоматизации и расширения их функциональности;
  • Язык программирования системы 1С;
  • Язык Lua – мультипарадигменный динамический язык.

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

  • низкоуровневые;
  • высокоуровневые.

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

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

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

  • императивные (процедурные);
  • функциональные;
  • логические;
  • объектно-ориентированные.

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

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

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

Объектно-ориентированные языки способны определять абстрактные типы данных и реализовывать основные парадигмы объектно-ориентированного программирования (ООП): инкапсуляцию, наследование и полиморфизм. Сейчас объектно-ориентированные языки достаточно широко распространены. Объектно-ориентированной парадигме следуют, к примеру, программисты на C++, Java, Object Pascal и др.[7].

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

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

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

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

1. Появление машинного языка (40е-50е г.г. XX в.).

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

2. Ассемблер (начало 50-ых годов XX в.).

Вместо 1 (единиц) и 0 (нулей) программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т.д.), которые походили на английские слова. Программы на ассемблере также являются машинно-зависимыми. Для преобразования в машинный код используется компилятор (специальная программа осуществляющая перевод команд в машинный код).

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

С середины 50-ых гг. XX в. начали появляться первые языки программирования высокого уровня (high-level language). Эти языки были машино независимыми (то есть не были привязаны к определённому типу ЭВМ). Однако для каждого языка разрабатывались собственные компиляторы.

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

  • FORTRAN (FORmula TRANslator, 1954 г.) был предназначен для научных и технических расчетов;
  • COBOL (Common Business-Oriented Language, 1959 г.) предназначался в основном для коммерческих приложений и служил для обработки больших объемов нечисловых данных;
  • BASIC (Beginner's All Purpose Instuction Code, 1964 г.) – является универсальным языком символьных инструкций для начинающих.

4. Алгоритмические языки программирования.

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

К этим языкам относятся:

  • язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля, 1970 г.);
  • язык Си (1971 г.), позволяющий быстро и эффективно создавать программный код.

5. Языки объектно-ориентированного программирования (90-ые г. XX в.).

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

  • язык С++ (1983 г.) - продолжение алгоритмического языка Си;
  • язык Object Pascal (1989 г.) был создан на основе языка Pascal после создания среды программирования - Delphi (1995 г.);
  • язык Visual Basic (1991 г.) был создан корпорацией Microsoft на основе языка Qbasic (1975 г.) для разработки приложений с графическим интерфейсом в среде ОС Windows.

6. Языки программирования для компьютерных сетей.

В 90-ые годы XX в. в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными операционными системами (Windows, Linux, Mac OS и др.) необходимо было иметь возможность выполнять одни и те же программы. Для этих целей исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной. К языкам, позволяющим создавать подобные программы относятся:

  • язык Java (1995 г.) - объектно-ориентированный язык был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения;
  • язык JavaScript (1995 г.) - язык сценариев Web-страниц (компания Netscape).

7. Языки программирования на платформе .NET.

Интегрированная среда программирования Visual Studio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:

  • на языке Visual Basic .Net ( на основе Visual Basic) - 2003 г.;
  • на языке Visual C# (С-шарп) - на основе языков С++ и J - 2003 г.;
  • на языке Visual J# (J-шарп) - на основе Java и JavaScript - 2003 г.

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

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

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

ГЛАВА 2. ЯЗЫКИ ПРОГРАММИРОВАНИЯ В СОВРЕМЕННОМ МИРЕ

2.1. Распространённость языков программирования

Как видно из Параграфа 1.2. Главы 1 - некоторые языки программирования создавались для написания программ для различных, особенных сред, другие же подходят для создания программ схожего функционала в смежных областях применения.

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

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

Stack Overflow[8] в 2017 году для составления рейтинга самых поулярных языков опросил 64 000 разработчиков. Голоса распределились следующим образом:

  • JavaScript - 62.5%
  • SQL - 51.2%
  • Java - 39.7%
  • C# - 34.1%
  • Python - 32.0%
  • PHP - 28.1%
  • C++ - 22.3%
  • C - 19.0%
  • TypeScript - 9.5%
  • Ruby - 9.1%
  • Swift - 6.5%
  • Objective-C - 6.4%
  • VB.NET - 6.2%
  • Assembly - 5.0%
  • R - 4.5%
  • Perl - 4.3%
  • VBA - 4.3%
  • Matlab - 4.3%
  • Go – 4.3%
  • Scala - 3.6%
  • Groovy - 3.3%
  • CoffeeScript - 3.3%
  • Visual Basic 6 - 2.9%
  • Lua - 2.8%
  • Haskell - 1.8%

Здесь лидером стал JavaScript — на нем программирует 62,5% опрошенных. Однако стоит учесть, что 72,6% респондентов занимаются веб-разработкой[9], а это, в свою очередь, значительно влияет на результаты, ведь языки наиболее подходящие для веб-разработки окажутся далеко не столь востребованными для мобильных разработчиков.

Другие крупные ресурсы иначе подошли к составлению рейтинга. GitHUB[10] (крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки) представил собственное исследование за 2018 год. В опубликованном рейтинге самых популярных языков программирования GitHUB приводит различную статистику.

Например, можно найти оценку по числу pull-запросов (учли даже первый pull-запрос Линуса Торвальдса). В этом рейтинге с большим отрывом лидирует опять-таки JavaScript (2,3 миллиона запросов). За ним следует Python — 1 миллион. Также в пятерку входят Java, Ruby и PHP.

А также по количеству репозиториев. Здесь самыми популярными языками стали JavaScript, Java, Python, PHP и Ruby. (см. График 1. Изменения количества репозиториев языков программирования по годам)

A close up of a map

Description automatically generated

График 1. Изменения количества репозиториев языков программирования по годам

По числу программистов вновь лидирует JavaScript, Java, Python. Сильно потерял позиции Ruby — он упал с пятой на десятую строку, а Objective-C вообще вылетел из десятки. Его место занял TypeScript, который за год поднялся с 10 на 7 место. (см. График 2. Изменение количества программистов по языкам программирования)

A close up of text on a white background

Description automatically generated

График 2. Изменение количества программистов по языкам программирования

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

  • Java
  • C
  • C++
  • C#
  • Python
  • JavaScript

Другой рейтинг – IEEE[12] учитывает количество поисковых запросов, проектов на GitHub, а также упоминания в твиттере, на Stack Overflow, Reddit, Hacker News, CareerBuilder, Dice и IEEE Xplore. Интересно, что в нем на пятом месте расположился язык R, а JavaScript оказался на 8 месте[13]. (см. Диаграмму 1. Топ-10 языков по рейтингу IEE)

A screenshot of a cell phone

Description automatically generated

Диаграмма 1. Топ-10 языков по рейтингу IEE

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

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

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

Приведём список наиболее распространённых языков, с описанием областей их применепния:

C (Cи)

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

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

C++

Название этого языка программирования не зря так похоже на C. C++ — это «улучшенный C», но в результате такого улучшения получился достаточно непростой в изучении и, как многие считают, и в применении язык, который, тем не менее, остается востребованным уже очень много лет. «Си плюс плюс» — это пропуск в мир разработки всего, что должно работать максимально быстро. Игры, поисковые системы, антивирусы – это только очень краткий список того, что сегодня разрабатывают с помощью C++.

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

C#

Еще один потомок языка C, разработанный корпорацией Microsoft для своей платформы .NET. В отличие от C++, курсы C# подойдут и тем, кто только начинает программировать. На C# (си-шарп) сегодня создают программы для Windows, пишут Web-приложения, также на нём разрабатывались и мобильные приложения для Windows Phone, хотя в настоящее время Microsoft скорее забросила свою мобильную операционную систему.

Objective C

Четвертый (только в данном списке) язык программирования, авторы которого вдохновлялись языком Си. Но при этом он стоит особняком от остальных «наследников Си», ведь когда-то его выбрала в качестве основного инструмента корпорация Apple. Поэтому Objective C применяется практически только для программирования под MacOS и iOS, но в связи с популярностью продуктов данной компании спрос на разработчиков, использующих Objective C, довольно высок. Впрочем, относительно недавно Apple выпустила новый язык, и, вероятно, в недалёком будущем он сможет заменить Objective C. К тому же сложность написания программного обеспечения на нем довольно высока.

Swift

На смену не всегда удобному и вызывающему немало нареканий у разработчиков Objective C компания Apple выпустила новый язык программирования – Swift. Пока что нельзя сказать, чтобы он совсем уж заменил своего предшественника в разработке под iOS и MacOS, но популярность Swift во всех рейтингах стабильно растет, в то время как популярность Objective C так же стабильно падает. Можно сделать вывод, что для разработчика, желающего в будущем программировать приложения для Apple-устройств, вполне можно сразу садиться за изучение Swift, не тратя время на Objective C.

PHP

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

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

Java

Второй по популярности язык программирования в мире, который применяется так же широко, как C++, но не имеет большинства его недостатков. На Java ведётся и разработка больших высоконагруженных продуктов для гигантских транснациональных компаний, и небольших приложений и даже мобильных игры для платфомры Android. Программисты, пишущие код на Java, востребованы во всем мире. Также Java уже много лет остается одной из самых хорошо оплачиваемых массовых специальностей для разработчиков. При этом вероятность того, что в обозримом будущем Java исчезнет из списка востребованных специальностей, ничтожно мала. С другой стороны, изучение Java требует гораздо больше времени и усилий, чем изучение вышеназванного же PHP.

JavaScript

Этот язык часто путают с Java, и неудивительно – когда-то название ему выбрали на волне популярности платформы Java, и с тех под JavaScript постоянно борется за звание настоящего самостоятельного языка. Сегодня, кажется, это уже в прошлом, потому что именно JavaScript – самый популярный язык программирования в мире. Своей популярностью он обязан, конечно, развитию Web, ведь именно JavaScript используется для написания Front-end (браузерной части) интерактивных Web-приложений, делающих браузер полноценным рабочим инструментом, не уступающим таким приложениям для Windows как Word, Excel и пр.

К тому же сегодня JavaScript (часто пишут сокращенно JS) используется и для серверного программирования, и количество новых сфер применения этого языка растет буквально с каждым годом. При этом порог вхождения в профессию здесь заметно ниже, чем в случае с Java, а зарплаты могут быть часто на том же уровне. Всё это делает JavaScript сегодня – одним из самых популярных языков для старта карьеры программиста.

Python

Еще один достаточно универсальный и относительно несложный для изучения язык. Python (он же питон, хотя правильно читается как «пайтон») прочно утвердился в очень и очень перспективной области, которую называют data mining. Говоря упрощенно – это применение различных данных, накопленных в бизнесе, для поиска скрытых закономерностей спроса и возможностей развития бизнеса. Также Python активно используется для написания Web-сервисов, серверной части многопользовательских игр и многих других задач. Спрос на Python-разработчиков довольно быстро растет.

R

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

Scratch

Scratch – это даже не язык, а среда визуального программирования, придуманная для обучения программированию детей. Поэтому 99% курсов Scratch адресованы детям довольно юного возраста. Курсы Scratch – отличный вариант, чтобы заинтересовать программированием детей 7-12 лет.

Ruby

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

Delphi

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

ActionScript

Ещё один язык уходящий в прошлое - ActionScript был (да и остается) языком платформы Adobe Flash, на которой еще недавно была написана половина игр для Web. Сегодня уже Flash – это пережиток прошлого, и ActionScript тоже нужен разве что для поддержки всего того, что было раньше написано на Flash’е.

VBA

Язык программирования макросов для пакета Microsoft Office. VBA расшифровывается как Visual Basic for Applications, и используется для автоматизации рутинных действий в офисных пакетах. Программистов на VBA на рынке труда никто не ищет, и вряд ли будет искать в обозримом будущем, однако знание этого языка может оказаться весьма полезным дополнительным инструментом.

1C

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

Подытоживая изложенное выше: для начинающих изучат программирование, самыми перспективными языками являются JavaScrip, Java, Python, 1С, Swift и C#. Но, конечно, это не значит, что остальные языки второсортные или неподходящие. Главное – это стремление к цели и упорный труд, которые обязательно будут вознаграждены по достоинству, ведь высококвалифицированный специалист сможет использовать язык программирования как незаменимый инструмент в работе.

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

К примеру, обратимся к исследованию Stack Overflow — «Какие языки ассоциируются у вас с высокой зарплатой?». Вот первая десятка языков со среднегодовой зарплатой специалистов:

  • F# — 74 000 $;
  • Ocalm — 73 000 $;
  • Clojure — 72 000 $;
  • Groovy — 72 000 $;
  • Perl — 69 000 $;
  • Rust — 69 000 $;
  • Erlang — 67 000 $;
  • Scala — 67 000 $;
  • Go — 67 000 $;
  • Ruby — 64 000 $.

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

Остановимся подробнее на Российском рынке. К примеру на Хабре (крупнейший в Европе ресурс для IT-специалистов, издаваемый компанией «ТМ») каждый год можно найти рейтинг востребованности специалистов по тому или иному языку программирования, основываясь на количестве вакансий, а также на зарплатах. Рассмотрим данные за 2018 год.

Ниже представлен рейтинг языков по количеству вакансий, размещённых на HeadHunter – одном из крупнейших агрегаторов вакансий в России (см. График 3. Топ-20 языков по количеству вакансий). Стоит отметить, что в количестве вакансий по JavaScript могут учитываться вакансии с названиями вида «Python-разработчик», если JS где-то в теле таких вакансий упомянут. JS и SQL в статистике ниже абсолютные лидеры, т. к. их чаще прочих указывают в дополнение с пометкой «будет плюсом».

A screenshot of a cell phone

Description automatically generated

График 3. Топ-20 языков по количеству вакансий

Несомненно не менее интересно посмотреть и на средние зарплаты специалистов по тому или иному языку (см. Таблица 1. Зарплаты разработчиков по убыванию). В таблице указаны зарплаты предлагаемые (взяты из вакансий) — без скобок, и ожидаемые (взяты из резюме) в скобках. Значения приведены в тысячах рублей, медианные. Данные отсортированы по убыванию предлагаемых зарплат. У fortran везде указано “Н/Д” — это значит, что тридцати вакансий (минимум для анализа) с указанной зарплатой по ним не нашлось в 2018 году.[14]

A screenshot of a cell phone

Description automatically generated

Таблица 1. Зарплаты разработчиков по убыванию

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

ЗАКЛЮЧЕНИЕ

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

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

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

Можно обратить внимание не на количество вакансий, а на уровень зарплат.

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

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

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

СПИСОК ИСТОЧНИКОВ

  1. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005.
  2. Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. - Москва: БИНОМ., 2005.
  3. Информатика: Учебник для вузов. Н.В. Макарова, В.Б. Волков. – СПб.: Питер, 2011.
  4. Каким должен быть Full Stack-веб-разработчик? Егор Малышев. https://jetbrains.ru/careers/requirements/full-stack-web-developer/
  5. Наиболее востребованные языки программирования - 2018. Nkvlk. - https://habr.com/ru/company/hh/blog/418079/
  6. Язык программирования. Материал из Википедии — свободной энциклопедии https://ru.wikipedia.org/wiki/Язык_программирования
  7. GitHUB Top languages over time https://octoverse.github.com/projects
  8. IEEE he Top Programming Languages 2016 - https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2016
  9. Stack Overflow Developer Survey Results. Most Popular Technologies - https://insights.stackoverflow.com/survey/2017
  10. Stack Overflow Developer Survey Results. Developer Roles - https://insights.stackoverflow.com/survey/2017
  11. The Language List. Maintained by Bill Kinnersley https://web.archive.org/web/20040612042127/http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm
  1. The Language List. Maintained by Bill Kinnersley https://web.archive.org/web/20040612042127/http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm

  2. Каким должен быть Full Stack-веб-разработчик? Егор Малышев. https://jetbrains.ru/careers/requirements/full-stack-web-developer/

  3. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005.

  4. The Language List. Maintained by Bill Kinnersley https://web.archive.org/web/20040612042127/http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm

  5. Язык программирования. Материал из Википедии — свободной энциклопедии https://ru.wikipedia.org/wiki/Язык_программирования

  6. Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. - Москва: БИНОМ.,2005.

  7. Информатика: Учебник для вузов. Н.В. Макарова, В.Б. Волков. – СПб.: Питер, 2011. (С. 557-559)

  8. Stack Overflow Developer Survey Results. Most Popular Technologies - https://insights.stackoverflow.com/survey/2017

  9. Stack Overflow Developer Survey Results. Developer Roles - https://insights.stackoverflow.com/survey/2017

  10. GitHUB Top languages over time https://octoverse.github.com/projects

  11. TIOBE Index for August 2019 - https://www.tiobe.com/tiobe-index//

  12. IEEE Top Programming Languages: Design, Methods, and Data Sources - https://spectrum.ieee.org/ns/IEEE_TPL_2016/methods.html

  13. IEEE he Top Programming Languages 2016 - https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2016

  14. Nkvlk. Наиболее востребованные языки программирования – 2018 - https://habr.com/ru/company/hh/blog/418079/