Если вы читаете этот текст, значит, вы только начинаете разбираться в том, чем отличаются языки программирования друг от друга. А раз так, давайте для начала разложим всё по полочкам.
Язык программирования — это просто способ объяснить компьютеру, что именно он должен сделать. В самые ранние времена программисты буквально пробивали дырочки в перфокартах, и компьютер понимал: взять значение из одной ячейки памяти, сложить с другой и напечатать результат. Сейчас всё сложнее, но суть та же — мы описываем действия, а компьютер их выполняет.
Почему языков так много
На самом деле причин три.
Историческая. Кто-то когда-то подумал: «А сделаю-ка я свой язык, потому что существующие меня не устраивают». Например, Линус Торвальдс создавал Linux на C, потому что другие языки ему не подходили. А создатели C в своё время были недовольны языком B. Так и пошло.
Коммерческая. Крупные компании продвигают свои языки. Apple заставила разработчиков учить Swift вместо Java. Google активно поддерживает Go. Бизнес есть бизнес.
Практическая. Одни языки лучше подходят для одних задач, другие — для других. C и C++ незаменимы для операционных систем. PHP, Python и Ruby хороши для веб-серверов. Java пытается закрыть сразу все направления.
Как классифицируют языки программирования
Вариантов несколько, и все они имеют право на жизнь.
По уровню. Когда вы пишете на Python даже простую строчку кода, компилятор превращает её в кучу инструкций для процессора. Вопрос в том, насколько ваш код похож на человеческую речь. Чем сильнее похож — тем язык выше уровнем, но тем медленнее работает программа. Высокоуровневые языки — Python, Java, JavaScript, PHP. Низкоуровневые — C, C++, Rust. А есть ещё ассемблер — это уже почти машинный язык.
По парадигме. Парадигма — это просто набор правил и подходов. Основных три: императивная (команды одна за другой), объектно-ориентированная (данные и действия упакованы в объекты), функциональная (всё через функции). Раньше это было важно, сейчас же любой популярный язык умеет всё понемногу.
По типизации. Если нужно объявлять тип переменной — строгая типизация, нет — нестрогая. Но это начинает иметь значение только при высоких нагрузках.
По сфере применения. Одни языки для веба, другие для игр, третьи для бэкенда. И это самый важный критерий для выбора.
Какие языки нужны для веб-разработки
Веб-разработка — это очень широкое понятие. Сайты, приложения, серверы — всё это веб. И внутри есть разделение на фронтенд (то, что видит пользователь) и бэкенд (внутренняя кухня).
Для фронтенда сайтов выбор однозначный — JavaScript. Это единственный язык, который браузеры понимают «из коробки». Вдобавок понадобятся HTML и CSS — они отвечают за расположение блоков и внешний вид.
Для бэкенда сайтов выбор шире:
JavaScript (через Node.js) — если хотите стать универсалом и писать и фронт, и бэк
PHP — не самый красивый, но очень популярный
Python — постепенно набирает обороты
Go и Ruby — тоже варианты, но Ruby довольно сложный для новичков
Для приложений обычно фронт и бэк пишут на одном языке. Лидер здесь — Java, за ним плетётся C#. Для iOS — Swift.
И да, в любом случае пригодится SQL.
Языки для игр
Тут четыре основных варианта:
C# — для Unity
C++ — для Unreal Engine
Java — для игр на Android
Swift — для игр на iOS
Но важнее другое: в 99% случаев игры делают на движках — Unity или Unreal. Главное — освоить движок, а язык выучится по ходу дела.
Языки для системного программирования
Здесь два направления. Первое — разработка системных приложений: тут нужны C, C++, Rust. Второе — создание окружения для разработки (DevOps): тут пригодятся Bash, PowerShell, Python, Go.
И снова SQL.
Языки для системных администраторов
Сисадминам обязательно нужно знать Bash для Linux и PowerShell для Windows. Если планируете уходить в DevOps — добавьте Python или Go. И, конечно, SQL и YAML.
Языки для тестировщиков
Обычно тесты пишут на том же языке, что и само приложение. Для автоматизации часто берут Python и Java. А SQL знать обязательно.
Какие языки учить не стоит
В разных подборках попадаются откровенно устаревшие или слишком узкоспециализированные языки. Вот их список:
Pascal и Delphi — безнадёжно устарели
F# — слишком специфичный
C — не начинайте с него, если вы новичок, он сложный и отобьёт желание
Visual Basic — почти мёртв
R — хорош для статистики, но если вы не аналитик, не начинайте
Ассемблер — даже не пытайтесь, программа из 30 строк для вывода Hello World, и работает только на одном семействе процессоров
Итог простой: сначала решите, чем вы хотите заниматься, и уже исходя из этого выбирайте язык. А если сомневаетесь — начните с JavaScript или Python, они прощают ошибки и дают быстрый результат.