Языки программирования: что нужно знать и как выбрать?
Время на прочтение: 6 минут(ы)Разбираем, какие бывают языки программирования и как сделать выбор новичку.
Что такое язык программирования
Язык программирования — это своеобразный набор команд, с помощью которого пишут программы. Разработчики создают на языках программирования инструкции, а электронные системы понимают, что от них хочет пользователь. Как и в обычных человеческих языках, в программировании есть своя лексика и синтаксис, а помимо них — функции и операторы. Разработчик — это «переводчик», который использует запросы, которые должны как можно более точно выполнять команды пользователя.
Языков программирования более 8 000, а по некоторым данным уже около 9 000. Все они используются для разных задач, платформ, даже операционных систем. Среди них есть устаревшие, а есть совсем свежие. Есть более или менее универсальные, те, с которыми комфортнее работать разработчику или те, что более понятны для компьютеров. Так как количество очень большое, изучать все языки не нужно. Пригодятся только те, что помогут разработчику заниматься тем, что ему больше всего нравится в IT.
Чем язык программирования отличается от алгоритма
Алгоритмом обычно называют какой-то строго установленный порядок действий и принципов их обработки, что не зависит от инструмента, исполняющего их. Поэтому алгоритмы не зависят от языков, на которых они написаны, потому что алгоритмы содержат саму логику, последовательность действий. А представить эту логику можно как угодно, главное — сохранить в точности.
По сути, язык программирования — это то, что используется, чтобы правильно представить уже продуманный алгоритм.
Как компьютер понимает разные языки программирования
Из школьного курса информатики многие помнят, что компьютеры работают с данными, представленными в двоичном коде, который состоит из нулей и единиц. Поэтому и программы, с которыми должен работать ПК, должны быть предложены ему в двоичном коде. Человек не может написать программу на двоичном коде, но он может использовать разнообразные языки программирования. С помощью языка программирования разработчик создаёт набор команд, а после программа пропускается через компилятор или интерпретатор, чтобы процессор смог обработать эти команды.
Компилятор — это программа-переводчик. Он получает команды на языке программирования, который можно компилировать, переводит всё на язык процессора. Интерпретатор работает так же, но переводит команды сразу же, в момент их выполнения, в то время как компилятор сначала переводит всё, а уже потом начинает исполнять прочитанные команды.
Сами компиляторы — это тоже программы, которые тоже написаны на языках программирования. Здесь используют низкоуровневые языки, которые наиболее понятны процессору. К примеру, интерпретатор для Python сделан на C, а для правильного восприятия C нужен переводчик, написанный на Ассемблере.
Какие бывают языки программирования
Программирование — широкая область знаний. Разработчики решают все более сложные задачи, ищут способ писать код быстрее и проще. Создаются новые языки, которые решают новые задачи или оптимизируют старые.
Интерпретируемые и компилируемые
Компилируемые языки программирования так называются из-за необходимости использовать компилятор для их запуска. Программа, написанная на одном из таких языков, сначала должна быть обработана компилятором. В итоге получается исполняемый модуль с правильным расширением. В ОС Windows это, например, файлы .exe. Только получив исполняемый модуль, программой можно полноценно пользоваться.
Среди компилируемых языков: C, C++, Pascal и другие.
У интерпретируемых языков всё иначе. Текстовая программа запускается с помощью интерпретатора, а текст в команды переводится прямо в процессе пользования. Наиболее популярные интерпретируемые языки — это PHP, Python, JavaScript.
Обычно компилируемые языки позволяют программе выполняться быстрее. Но сама работа над программой, её написание, тестирование, проще при использовании интерпретируемых языков, так как разработчик пропускает шаг с компиляцией.
Высокоуровневые и низкоуровневые
Уровень языка увеличивает понятность для разработчика. Чем более понятен синтаксис, тем уровень выше.
Многие «старые» языки сделаны так, чтобы процессор понимал их без лишних сложностей. Например, Ассемблер. Разработчику его понять нелегко, зато процессор, не тратя время на расшифровку, обработает код быстро. А значит, производительность будет высокой.
Но несмотря на то, что код на низкоуровневом языке быстрее обрабатывается, а значит вся программа работает быстрее, ими стараются не пользоваться. Java или Python обрабатываются не так быстро, но зато работать с кодом гораздо проще. А чем быстрее можно редактировать код, искать причины багов (что еще важнее), тем лучше. Так увеличивается скорость разработки. Время, которое команда потратит на отладку кода на низкоуровневом языке, не стоит его производительности.
Производительность ПК тоже растёт. Разработчики меньше переживают о том, чтобы код был быстрым. Поэтому самые популярные языки сегодня высокоуровневые — они хорошо понятны разработчикам, но обрабатываются не настолько быстро. Такие языки — Python, Java, JavaScript, Pascal, PHP, C.
Универсальные и специализированные
Ничего сложного. Есть языки, на которых можно написать практически какую угодно программу, а есть те, что используются только для конкретных платформ или задач.
Python или Java относятся к универсальным, на них можно написать почти любую программу, а вот Swift, Kotlin, например, используются только для написания приложений для iOS и Android.
R применяется в обработке данных в Data Science, PHP полезен только в бэкенде, а JavaScript часто используется во фронтенде.
Самым универсальным, несмотря на «атаку» Python, всё ещё считается С++.
По сферам применения
Языки программирования можно поделить по сферам разработки, где они применяются. В числе этих сфер:
- Data Science — здесь требуется искать, обрабатывать, организовывать хранение данных.
- Веб-разработка, то есть создание приложений, которыми пользуются из браузера.
- Системная разработка, где нужно делать программы для того, что ПК выполнял задачи пользователя. Сюда включено всё, от простых драйверов до целых ОС.
- Десктопная разработка — здесь работают только над теми приложениями, которые запускаются на ОС, например Windows или MacOS.
- Мобильная разработка — в этой сфере создают приложения для смартфонов и планшетов.
- Геймдев — разработка игр на ПК, консолях или мобильных.
Посмотрим на сферы более подробно.
Веб-разработка
Веб-разработка объединяет в себе две сферы: фронтенд и бэкенд. Фронтенд помогает разработчикам правильно получить запросы от пользователя, а бэкенд отвечает за выдачу нужных данных после обработки запроса.
Чтобы в веб-разработке работать с фронтендом, нужно знать JavaScript и немного PHP. Также стоит быть знакомым с TypeScript, сделанном на базе JavaScript. Но основная работа во фронтенде ведётся с помощью HTML и CSS. С помощью HTML-тегов задаётся структура веб-страницы, а с помощью каскадной таблицы стилей CSS эта система визуально подстраивается под уже созданный макет.
Потом все визуализированные блоки оживляются с помощью JavaScript, так как мало сделать красивый сайт или приложение, нужно добиться правильного сбора данных пользователя, а после передачи их в область бэкенда для обработки.
JavaScript — единственный основной язык программирования во фронтенде, так как HTML, CSS считаются языками разметки.
В бэкенд-разработке выбор шире: Python, Java, PHP, C++, C#, Ruby. В основном требуется знание Java, PHP или Python.
Десктоп разработка
Чтобы работать с десктопными приложениями, одного языка программирования будет мало. Чтобы заниматься разработкой программ под Windows, пригодятся C++, C#. Эти же языки программирования пригодятся тем, кто хочет разрабатывать игры на Unity.
А чтобы работать с MacOS, надо писать на Swift. Эко система Apple довольно ограничена даже в разработке ПО.
Если захочется больше свободы, то кроссплатформенные приложения, которые подойдут для Windows, MacOS, Linux, обычно создаются на Java.
Мобильная разработка
Сегодня мобильные приложения создаются под iOS или Android.
Работа с Android гибче, так как система открытая. ОС позволяет работать с программами для смартфонов, планшетов, умных часов, телевизоров, навигаторов, другой бытовой техники, которая поддерживает Андроид. А таких становится всё больше. Всем, кто планирует работать с Android, нужно знать Java, Kotlin. Google в 2019 году объявили, что программистам нужно использовать Kotlin, ведь этот язык современнее, но так как все старые мобильные приложения написаны для Java, с этим языком тоже нужно уметь работать.
Если же захочется заниматься разработкой программ для iOS, это будет сложнее, так как экосистема очень закрыта. Раньше здесь использовался только один язык, Objective-C, но сегодня он потерял актуальность и устарел, поэтому его стоит знать только на базовом уровне. А вот заниматься разработкой предстоит на Swift.
Анализ данных и Data Science
Для тех, кто работает с большими данными, необходимы R или Python. На них обучают нейросети, строят сложные вычислительные модели, настраивают обработку больших объёмов данных.
Для работы с Big Data важно, чтобы язык программирования был простым, позволял делать код визуально понятным, компактным. Python подходит идеально, но и с R очень комфортно работать.
Почему появляются новые языки программирования
Сфера IT развивается, появляются новые устройства, технологии. Например, за последние 30 лет распространился интернет, мобильные устройства, а сейчас зарождается интернет вещей. С новыми технологиями появляются новые задачи, которые тяжело решить старыми инструментами. Поэтому разработчики создают новые языки программирования: пишут команды под новые устройства или решают специфические задачи.
Плюс, разработчики ленивые. Они оптимизируют свою работу, чтобы писать код быстрее и упростить сложные задачи. Иногда изменений так много, что появляется новый язык.
Как оценит перспективы?
Языки живут долго — примерно столько же сколько живут технологии и устройства, для которых их создавали. Выбрать «неперспективный» — сложно, так как под существующие технологии есть спрос от компаний. А при смене технологий создатели сделают специальный гайд, поэтому перейти на новый язык — не то же самое, что учить с нуля.
Если вы изучаете Python или Java — вы точно не пропадете. Они универсальны и применяются как в веб-разработке, так и в администрировании серверов.
В 2021 году Хабр Карьера провела исследование зарплат разработчиков:
Источник: Хабр Карьера.
Как видно, вилка зарплат схожа. Разница в зарплате может достигать 20 тысяч на начальном уровне, а вот на уровне senior — 60+ тысяч. В остальном, все популярные языки достойно оплачиваются, переживать о зарплате не стоит.
Какой язык программирования выбрать новичку?
Новички обычно начинают с Python, так как этот язык программирования самый популярный и специалисты, знающие его, требуются во многих компаниях. Можно посмотреть в сторону классических C++ или Java. Зная один из них, имея базовые навыки работы с алгоритмами, изучать другие языки гораздо проще, так как синтаксис, логика будут узнаваемы.
Сначала выберите сферу. Писать мобильные приложения на PHP не получится, как и создавать игры на R. Если больше интересно работать с приложениями для смартфонов и планшетов, стоит также обучиться Swift или Java/Kotlin. А вот для разработки сайтов будут полезны Ruby, PHP, JavaScript.
Далее, стоит смотреть на вакансии. Работа в веб-разработке в 90% случаев потребует Javascript, а знание PHP будет скорее плюсом. Язык — ваш инструмент на работе, поэтому выбирайте прагматично. Чем больше востребован — тем больше возможностей для вас. Чаще всего такие языки проще осваивать: компаниям проще выводить новых сотрудников, поддерживать читаемый код. Поэтому, новички традиционно начинают с Python или Java.