logo
Ещё

Языки программирования – какие бывают и какой выбрать

Языки программирования бывают самыми разными, и просто с ходу ответить, какой из них лучше остальных и какой вам сразу же стоит учить – нельзя, потому что сам вопрос поставлен некорректно: во-первых, серьезное программирование нередко предполагает использование нескольких языков/фреймворков (расширений для языка); во-вторых, «лучший» язык во многом зависит от того, в какой сфере вы хотите работать; в-третьих, через год все может поменяться, и популярный на данный момент язык начнет «скатываться». Вместо того, чтобы составлять какие-либо ТОПы сомнительной полезности, мы возьмем основные языки программирования для каждой сферы и составим список по значимости. 


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

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

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

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

Языки бывают разными, и на то есть 3 причины: историческая; коммерческая; практическая. Историческая причина разделения языков: «я художник, я так вижу». Все языки программирования, которые существуют сейчас, возникли по той причине, что где-то кого-то когда-то не устраивало качество существующих языков. Линус Торвальдс, разработчик операционной системы Linux, взял язык C в основу операционной системы потому, что его не устраивали другие языки программирования. А разработчики языка C создали его потому, что их не устраивал существовавший на тот момент язык B. Коммерческая причина разделения языков – в том, что крупные компании заинтересованы в развитии «своих» ЯП. Apple решила, что ее программисты должны быть особенными, и вместо устоявшейся на тот момент Java заставила «своих» программистов работать на Swift; Google поощряет разработку на Go и так далее. Практическая причина разделения языков состоит в том, что некоторые языки «заточены» под ту или иную работу: C/C++/Rust незаменимы для разработки операционных систем и высоконагруженных приложений, PHP/Ruby/Python отлично справляются с серверной частью web-разработки, Java вообще старается покрыть все сферы программирования.

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

  • По уровню. Даже когда вы пишете print(“Hello world!”) в Python, на самом деле вы даете процессору команды вроде «Перемести из ячейки памяти номер 10394857 в регистр процессора A11 находящееся там значение, а затем…», просто компилятор «переводит» текст с «человеческого» на язык процессора. Вопрос – в том, насколько похожим на человеческий является язык, который компилятор будет переводить. Чем язык дальше от машинного (и ближе к человеческому), тем больше усилий надо, чтобы перевести текст (и тем медленнее работает программа). По этому критерию языки делят на высокоуровневые и низкоуровневые. Высокоуровневые – это когда код программы похож на обычный человеческий язык (Python, Java, Swift, JavaScript, PHP и так далее). Низкоуровневые – это когда код написан еще не на машинном языке, но и человеческим это уже назвать непросто (C, C++, Rust). Есть еще языки ассемблера – это когда вы пишете инструкции непосредственно для процессора.
  • По парадигме. Парадигма – это набор устоявшихся практик. 3 основные парадигмы: императивная, объектно-ориентированная, функциональная. Императивная – это когда вы последовательно перечисляете команды, которые нужно сделать; объектно-ориентированная – это когда вы пакуете данные + действия в объект и позволяете объектам взаимодействовать друг с другом; функциональная – это когда вы описываете вообще все действия функциями, в том числе и математическими. Раньше эта классификация была модной, сейчас же любой популярный язык программирования в той или иной степени располагает инструментами всех основных парадигм. Например, в Java можно писать императивы (команды), создавать объекты и применять лямбда-функции из функционального программирования.
  • По типизации. Любимая классификация новичков. Если в языке нужно объявлять типы переменных – строгая типизация, не нужно – нестрогая типизация. На практике вопросы типизации начинают играть роль только при очень высоких нагрузках на приложение.
  • По сферам применения. Одни языки устоялись для web, другие – для игры, третьи – для бэкенда. 
Именно по последней категоризации мы и будем в дальнейшем рассматривать языки, потому что от нее зависит, какой язык лучше выбрать для изучения: если вы хотите разрабатывать игры, вам лучше начать с такого-то языка (C#), если хотите делать фронтенд – с такого-то (JavaScript).

Языки для web-разработки

Web-разработка – понятие очень широкое, потому что оно включает в себя сайты, приложения и серверы. Кроме того, для сайтов и приложений есть разделение на фронтенд (внешний вид сайта/приложения) и бэкенд (внутренняя логика работы). Составим небольшую таблицу:

Фронтенд

Бэкенд

Сайты

JavaScript

JavaScript, PHP, Python, Ruby, Go

Приложения

Тот язык, на котором написан бэкенд

Java, C#, Python, Swift

Если вы собираетесь создавать внешнюю оболочку для сайтов, ваш однозначный выбор – JavaScript. Это – единственный язык, который нативно поддерживается всеми браузерами. В нагрузку вам желательно знать HTML и CSS – языки, которые рассказывают браузеру, где должны располагаться блоки и как они должны выглядеть.

Если вы хотите создавать внутреннюю логику сайтов, то выбор у вас более большой:

  • JavaScript. Бэкенд реализовывается через фреймворк Node.js. Изучение JS открывает для вас путь к фулл-стэк разработчику – это когда разработчик может написать и фронтенд, и бэкенд. 
  • PHP. Не самый красивый и простой, но крайне популярный язык для серверной части сайта.
  • Python. Еще уступает PHP и JS, но постепенно захватывает нишу.
  • Go. То же, что и Python, но востребован меньше.
  • Ruby. Язык для больших и сложных сайтов. Не советуем начинать с него, потому что язык – тяжелый.

С приложениями все проще – обычно бэкенд и фронтенд написаны на одном языке. Лидер здесь – Java, его постоянно пытается догнать C#. Python не так сильно востребован, потому что имеет проблемы с производительностью. Swift – для разработки мобильных приложений под iOS.

И да, во всех случаях вам нужно будет учить SQL.

Языки для разработки игр

Здесь есть 4 варианта:

  1. С#.
  2. C++.
  3. Java.
  4. Swift.

C# – выбор тех, кто хочет создавать игры на Unity. C++ нужен тем, кто хочет создавать игры на Unreal Engine. Java – для игр на Android, Swift – для игр на iOS. Во всех случаях язык – это не главное (по крайней мере, на первых порах). Игры разрабатываются не с нуля, а на определенном движке – в 99% случаев это Unity или UE.

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

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

Системное программирование сейчас имеет 2 значения: разработка системных (не-прикладных) приложений и создание системного окружения разработки (CI/CD, Infrastructure as a Code и другие DevOps-практики). В первом случае вам нужны низкоуровневые языки программирования: C, C++, Rust. Во втором случае вам нужны языки для создания скриптов: Bash, Windows PowerShell, Python, Go. Лидируют здесь Python и Bash.

И да, здесь SQL вам тоже понадобится.

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

Сисадминам обязательно нужно знать языки командных строк: Bash (Linux), Microsoft PowerShell (Windows Server). Поскольку большинство сисадминов «перекатывается» в DevOps, вам желательно знать скриптовый язык: Python, Go. Технически скрипты можно писать и на Bash/PowerShell, но написание сложных скриптов превратится в пытку. Дополнительно системным администраторам желательно знать YAML, в обязательном порядке нужно знать SQL.

Языки для тестирования

Тестирование обычно проводится на том языке, на котором написано приложение. Для автоматизированного тестирования часто применяются Python и Java, хотя любой более-менее крупный язык имеет свои собственные фреймворки для автоматизированного тестирования.

SQL тестировщики должны знать обязательно.

Языки, которые не нужно учить

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

  • Pascal/Delphi. Еще лет 20 назад эти языки были популярны для обучения (Pascal) и разработки (Delphi). На данный момент они безнадежно устарели.
  • F#. Язык – живой, но слишком специфичный.
  • С. Да, этот язык встречался в нашей подборке, но вам не нужно с него начинать, если вы раньше с программированием не сталкивались – он настолько сложен, что отобьет у вас всякое желание программировать. Если все же хотите выучить низкоуровневый язык программирования – начните с Rust.
  • Visual Basic. Этот язык одной ногой уже в могиле, и – вполне заслуженно. 
  • R. Язык, завязанный на статистике и математическом анализе. Если не собираетесь становиться аналитиком/big data scientist, то не начинайте с него – к языку прилагается большая математическая база, которую нужно изучить.
  • Ассемблер. Даже не пытайтесь. Самая простая программа, вывод Hello World, на ассемблере занимает 30 строк – и программа будет работать только на одном конкретном семействе процессоров.


Какой выбрать – сравнительная таблица

Язык

Где используется

Насколько сложен

JavaScript

Фронтенд и бэкенд на сайтах

3/10

PHP

Бэкенд на сайтах

5/10

Python

В основном – серверы и Big Data

2/10

Go

Серверная часть сайтов

3/10

Ruby

Серверная часть сайтов

6/10

HTML/CSS

Фронтенд на сайтах, иногда – в приложениях

1/10

YAML

Системное администрирование

0/10

Java

Практически везде

5/10

C#

Серверная часть сайтов и приложений, разработка игр

5/10

C

Операционные системы, высоконагруженные приложения (в виде вставок кода для оптимизации)

9/10

C++

Операционные системы, высоконагруженные приложения, игры

8/10

Rust

Операционные системы

8/10

Swift

Разработка под iOS

5/10

Bash

Скрипты для UNIX-систем

1/10

PowerShell

Скрипты для Windows-систем

1/10

SQL

Везде, где нужно хранить данные (кроме разработки игр)

2/10

Курс «Инженер по тестированию» от Skillbox

Школа

Skillbox

Стоимость

123 225 руб

Цена в рассрочку

3 975 руб/мес

Длительность курса

10 месяцев

Программа трудоустройства

Есть

Формат

Курс «Fullstack-разработчик на Python» от Нетология

Школа

Нетология

Стоимость

162 500 руб

Цена в рассрочку

4 750 руб/мес

Длительность курса

21.5 месяц

Программа трудоустройства

Есть

Формат

Курс «Создание сайтов» от Skysmart

Школа

Skysmart

Стоимость

45 000 руб

Цена в рассрочку

4 500 руб/мес

Длительность курса

32 часа

Программа трудоустройства

Отсутствует

Формат

Курс «Веб-разработчик» от Skillbox

Школа

Skillbox

Стоимость

203 116 руб

Цена в рассрочку

5 974 руб/мес

Длительность курса

9 месяцев

Программа трудоустройства

Есть

Формат

Курс «Веб-разработчик с нуля: профессия с выбором специализации» от Нетология

Школа

Нетология

Стоимость

140 800 руб

Цена в рассрочку

4 116 руб/мес

Длительность курса

17 месяцев

Программа трудоустройства

Есть

Формат

Курс «PHP-разработчик» от Хекслет

Школа

Хекслет

Стоимость

114 000 руб

Цена в рассрочку

5 542 руб/мес

Длительность курса

10 месяцев

Программа трудоустройства

Есть

Формат

Курс «Python-разработчик» от Skillbox

Школа

Skillbox

Стоимость

173 230 руб

Цена в рассрочку

5 095 руб/мес

Длительность курса

10 месяцев

Программа трудоустройства

Есть

Формат

Курс «Python-разработчик с нуля» от Нетология

Школа

Нетология

Стоимость

82 700 руб

Цена в рассрочку

3 625 руб/мес

Длительность курса

7 месяцев

Программа трудоустройства

Есть

Формат

Курс «Minecraft программирование» от Skysmart

Школа

Skysmart

Стоимость

45 000 руб

Цена в рассрочку

4 500 руб/мес

Длительность курса

32 часа

Программа трудоустройства

Отсутствует

Формат

Курс «Go-разработчик (бесплатный курс)» от Skillbox

Школа

Skillbox

Стоимость

0 руб

Цена в рассрочку

0 руб/мес

Длительность курса

месяцев

Программа трудоустройства

Отсутствует

Формат

Курс «Go-разработчик с нуля» от Яндекс Практикум

Школа

Яндекс Практикум

Стоимость

145 000 руб

Цена в рассрочку

19 500 руб/мес

Длительность курса

8 месяцев

Программа трудоустройства

Есть

Формат

Курс «Backend-разработчик на Go» от Skillfactory

Школа

Skillfactory

Стоимость

133 200 руб

Цена в рассрочку

3 700 руб/мес

Длительность курса

12 месяцев

Программа трудоустройства

Есть

Формат

Курс «Разработчик на Ruby on Rails» от Хекслет

Школа

Хекслет

Стоимость

62 000 руб

Цена в рассрочку

5 840 руб/мес

Длительность курса

5 месяцев

Программа трудоустройства

Есть

Формат

Курс «Фронтенд-разработчик» от Skillbox

Школа

Skillbox

Стоимость

174 998 руб

Цена в рассрочку

5 147 руб/мес

Длительность курса

9 месяцев

Программа трудоустройства

Есть

Формат

Курс «Веб-разработчик с нуля: профессия с выбором специализации» от Нетология

Школа

Нетология

Стоимость

140 800 руб

Цена в рассрочку

4 116 руб/мес

Длительность курса

17 месяцев

Программа трудоустройства

Есть

Формат

Курс «Создание сайтов» от Skysmart

Школа

Skysmart

Стоимость

45 000 руб

Цена в рассрочку

4 500 руб/мес

Длительность курса

32 часа

Программа трудоустройства

Отсутствует

Формат

Курс «Инженер по тестированию» от Skillbox

Школа

Skillbox

Стоимость

123 225 руб

Цена в рассрочку

3 975 руб/мес

Длительность курса

10 месяцев

Программа трудоустройства

Есть

Формат

Курс «Java-разработчик с нуля» от Нетология

Школа

Нетология

Стоимость

131 100 руб

Цена в рассрочку

3 833 руб/мес

Длительность курса

12 месяцев

Программа трудоустройства

Есть

Формат

Курс «Java-разработчик (Самостоятельный)» от Skypro

Школа

Skypro

Стоимость

132 822 руб

Цена в рассрочку

4 439 руб/мес

Длительность курса

11 месяцев

Программа трудоустройства

Есть

Формат

Курс «Разработчик игр на Unity с нуля до Middle» от Skillbox

Школа

Skillbox

Стоимость

168 361 руб

Цена в рассрочку

5 431 руб/мес

Длительность курса

6 месяцев

Программа трудоустройства

Отсутствует

Формат

Курс «Разработчик игр на Unity» от Нетология

Школа

Нетология

Стоимость

100 500 руб

Цена в рассрочку

2 938 руб/мес

Длительность курса

13 месяцев

Программа трудоустройства

Есть

Формат

Курс «Minecraft программирование» от Skysmart

Школа

Skysmart

Стоимость

45 000 руб

Цена в рассрочку

4 500 руб/мес

Длительность курса

32 часа

Программа трудоустройства

Отсутствует

Формат

Курс «Разработчик на C++ с нуля» от Skillbox

Школа

Skillbox

Стоимость

157 500 руб

Цена в рассрочку

5 625 руб/мес

Длительность курса

7 месяцев

Программа трудоустройства

Есть

Формат

Курс «Разработчик на C++» от Нетология

Школа

Нетология

Стоимость

153 900 руб

Цена в рассрочку

4 500 руб/мес

Длительность курса

14 месяцев

Программа трудоустройства

Есть

Формат

Курс «Разработчик С++» от Яндекс Практикум

Школа

Яндекс Практикум

Стоимость

129 000 руб

Цена в рассрочку

15 500 руб/мес

Длительность курса

9 месяцев

Программа трудоустройства

Есть

Формат

Курс «iOS-разработчик с нуля» от Нетология

Школа

Нетология

Стоимость

125 400 руб

Цена в рассрочку

3 666 руб/мес

Длительность курса

12 месяцев

Программа трудоустройства

Есть

Формат

Курс «iOS-разработчик» от Яндекс Практикум

Школа

Яндекс Практикум

Стоимость

143 000 руб

Цена в рассрочку

15 500 руб/мес

Длительность курса

10 месяцев

Программа трудоустройства

Есть

Формат

Курс «iOS-разработчик c нуля» от Skillfactory

Школа

Skillfactory

Стоимость

168 840 руб

Цена в рассрочку

4 690 руб/мес

Длительность курса

13 месяцев

Программа трудоустройства

Есть

Формат

Курс «SQL-разработчик» от Skillbox

Школа

Skillbox

Стоимость

51 960 руб

Цена в рассрочку

4 330 руб/мес

Длительность курса

2 месяца

Программа трудоустройства

Отсутствует

Формат

Курс «Java-разработчик с нуля» от Нетология

Школа

Нетология

Стоимость

131 100 руб

Цена в рассрочку

3 833 руб/мес

Длительность курса

12 месяцев

Программа трудоустройства

Есть

Формат

Курс «PHP-разработчик» от Хекслет

Школа

Хекслет

Стоимость

114 000 руб

Цена в рассрочку

5 542 руб/мес

Длительность курса

10 месяцев

Программа трудоустройства

Есть

Формат

Что почитать по теме

FAQ

Что такое SQL?

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

Что начинать учить, если я просто хочу попробовать себя в программировании?

Python – его выучить проще всего, при этом на нем можно писать очень сложные вещи.

Подведем итоги

Тезисно:

  • Языков программирования – множество, и делить их можно по самым разным признакам.
  • Практичнее всего делить языки программирования по сферам применения – хотя некоторые языки настолько глубоко вклинились в мир разработки, что могут присутствовать практически во всех сферах.
  • Если вы выбираете свой первый язык программирования, то вам сначала желательно выбрать сферу разработки, к которой вас больше всего тянет.
  • У языков – разная сложность, и чем проще язык, тем быстрее вы с нуля научитесь разрабатывать полноценные приложения. Один из самых простых языков – Python, один из самых сложных – C.
  • Практически в любой сфере вам понадобится SQL, но этот язык – довольно специфичный, поэтому не стоит учить его первым.
Часто ищут