Программирование  •  10 февраля 2022  •  5 мин чтения

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

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

В сфере IT есть разные направления разработки, вот самые распространенные:

  1. Веб-разработка — это разработка сервисов и инструментов, которыми мы пользуемся в интернете;
  2. Системная разработка — разработка программ, с помощью которых компьютер выполняет задачи: операционных систем, драйверов;
  3. Десктоп-разработка — разработка программ для запуска под управлением операционной системы;
  4. Геймдев — разработка игр;
  5. Мобильная разработка — разработка приложений для телефонов и планшетов;
  6. Data Science и анализ данных — хранение, обработка и анализ больших объемов данных.

Веб-разработка

Мир веб-разработки — если говорить только о программистах без околоайтишных специальностей — делится на две категории: фронтенд и бэкенд. Фронтенд (англ. frontend — «внешняя часть») — это всё, что видит пользователь на экране или чего касается курсором мыши, например кнопка на сайте. Когда пользователь нажимает на кнопку, в игру вступает бэкенд (англ. backend — «внутренняя часть»). Его задача — организовать взаимодействие с базами данных и другими серверами, настроить поиск нужной информации и отправить её обратно пользователю.

Фронтенд – визуальная сторона, бэкенд – все, что под капотом.

Фронтенд-разработчики создают интерфейс для взаимодействия с приложением, задают структуру веб-страницы на языке разметки HTML, определяют её внешний вид с помощью CSS, а на языке программирования JavaScript (JS) добавляют динамический контент, например всплывающие окна. Помимо JavaScript используют язык TypeScript, расширяющий возможности JavaScript, и фреймворки: React, Vue или Angular.

Двадцать лет назад, чтобы называть себя полноценным фронтендером, достаточно было знать HTML и CSS. Сегодня из-за обилия фреймворков и технологий фронтенд по сложности догнал бэкенд.

Бэкенд-разработчики отвечают за логику работы сервера: сохранение данных в базу, хранение файлов, механика авторизации. Бэкенд-разработчики пишут на разных языках программирования: JavaScript, C#, Go, PHP, Python, Java.

В 2009 году появилась среда Node.js, позволяющая разрабатывать бэкенд на JavaScript. Зная один язык, программист способен выполнять задачи как фронтенда, так и бэкенда. Такой специалист-универсал называется фулстек-разработчиком.

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

Материал по теме:
Серьёзный язык для backend: что такое Python и как стать Python-разработчиком

HTML и CSS

HTML (Hyper Text Markup Language) — язык разметки, который задаёт структуру веб-страницы с помощью тегов. Теги указывают браузеру, как отображать содержимое: «это заголовок», «это абзац», «это картинка», «это ссылка».

CSS (Cascading Style Sheets) — каскадные таблицы стилей, которые описывают внешний вид страницы: шрифт, фон, цвета, видимость элементов и многое другое. К каждому элементу страницы может применяться несколько стилей, а каскадность определяет порядок применения стилей к элементу — например, сначала увеличить размер шрифта, потом сделать текст курсивом, а в конце покрасить его в синий цвет.

HTML – скелет веб-страницы, CSS – отвечает за внешний вид

JavaScript

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

JavaScript — язык фронт- и бэкенда одновременно.

Чтобы каждый раз не писать с нуля базовую логику приложения, разработчики используют фреймворки — заранее написанный код или шаблоны, задающие архитектуру приложения. JS-фреймворки, которые чаще всего используют разработчики: React, Angular и Vue.js

Преимущества языка:

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

Особенности языка:

  • Слабая типизация, которая позволяет складывать строку с числом. Эта особенность породила огромное количество мемов.
  • Запутанный синтаксис.

Python

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

Философия Python: красивое лучше, чем уродливое, явное лучше, чем неявное, простое лучше, чем сложное, а сложное лучше, чем запутанное.

Преимущества языка:

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

Особенности языка:

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

C/C++

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

Если С по скорости — Флэш, то С++ — Супермен на втором месте.

Плюсы вездесущи. Питонисты, тренирующие нейронные сети, используют библиотеки, написанные на низкоуровневых языках С и С++. Плюсы дали жизнь таким играм, как Fortnite, Borderlands, Mass Effect, и сейчас на нём разрабатывают S.T.A.L.K.E.R. 2. Часть игрового движка Unity написана на плюсах, а браузер Google Chrome — целиком. С помощью C++ пишут драйверы и сложные программные интерфейсы.

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

Преимущества языка:

  • С++ совмещает в себе качества как низкоуровневых, так и высокоуровневых языков.
  • Для С++ разработчиков написано множество библиотек.
  • С++ можно использовать в разработке чего угодно: от беспилотных автомобилей до веб-браузеров, видеоигр и микроконтроллеров.
  • После изучения C++ другие языки будут казаться проще.

Особенности языка:

  • Более сложный для изучения язык, чем Python или Go.
  • Сложный синтаксис.

C#

C#, или «си-шарп», — объектно-ориентированный язык c автоматическим управлением памятью, разработанный компанией Microsoft для платформы .NET. На C# пишут программы для экосистемы Microsoft и веб-приложения. Для машинного обучения используют фреймворк ML.NET, а игры создают на движке Unity. Написали код и теперь нужно перенести на другую платформу? Фреймворк Mono поможет с переездом на все популярные платформы: Windows, macOS, Linux, Android и iOS.

C# – уверенный середнячок с большим потенциалом.

Преимущества языка:

  • Наличие ООП;
  • Кроссплатформенность;
  • Автоматическая сборка мусора и управление памятью;
  • Много библиотек и готовых решений;

Особенности языка:

  • C# менее гибкий, так как в основном зависит от платформы .NET.

Java

Java — кроссплатформенный язык с поддержкой ООП. Код на Java одинаково запускается и на умном холодильнике, и на микроконтроллере, и на кнопочном телефоне. Всё дело в Java Virtual Machine (JVM) — посреднике между кодом и железом.

Java работает по принципу: «Код один, платформы разные».

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

Преимущества языка:

  • Кроссплатформенность — Java работает на большом количестве операционок.
  • Наличие ООП.
  • Большое сообщество.

Особенности языка:

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

Go

В 2009 году компания Google создала язык Go (или Golang, сокращение от Google Language). Он должен был заменить С++ и Java в разработке бэкенда веб-приложений и сетевых сервисов. Разработчики сохранили скорость «плюсов» и сделали синтаксис более выразительным и лаконичным: в языке всего 25 ключевых слов.

Основная фишка Golang — многопоточность. На Go можно дёшево (всего за несколько килобайт памяти) и быстро запускать независимые друг от друга функции — горутины — и не опасаться нехватки памяти. На Golang написали Docker и Kubernetes.

Go простой, как Python, но мощный, как С++.

Преимущества языка:

  • Простота кода — всего 25 ключевых слов;
  • Низкий риск ошибок;
  • Автоматическая очистка памяти и документирование кода;
  • Поддержка Google.

Особенности языка:

  • Невозможно управлять памятью;
  • Нет тернарных операторов.
Мобильная разработка
В мобильной разработке есть два основных направления — Android-разработка и iOS. Самая популярная мобильная операционная система в мире — Android, с общим количеством пользователей в 2 млрд. На Android работают не только смартфоны, но и многие «умные» гаджеты: часы, навигаторы, системы умного дома, холодильники, телевизоры. Android-разработчики используют языки программирования Java и Kotlin.

Разработчики под iOS пишут программы для устройств Apple на языке Swift. Долгое время для этого использовали Objective-C, но сейчас Swift используется значительно чаще. Если вы хотите пробовать себя в мобильной разработке, давайте разберемся, какой же здесь язык стоит выбрать.

Kotlin

Kotlin создан на основе Java и не содержит многих библиотек, встраиваемых в разработку Android-приложений. В 2019 Google объявил Kotlin предпочтительным языком для разработки приложений под Android.

Разработала Kotlin питерская компания JetBrains и назвала его в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт. Kotlin используют в Google, Pinterest, Instagram*, TikTok.

Так как старые мобильные приложения написаны на Java, а новые создаются на Kotlin, Android-разработчики должны знать оба языка.

Преимущества языка:

  • Совместимость с Java;
  • Компактный язык без кусков избыточного кода.

Особенности языка:

  • Низкая скорость;
  • Небольшое сообщество единомышленников.

Swift

Swift — это компилируемый язык программирования, который разработала компания Apple для разработки iOS, Mac, Apple TV и Apple Watch.

Преимущества языка:

  • Высокая скорость работы программ и выполнения кода;
  • Строгая типизация данных;
  • Лаконичный синтаксис;
  • Есть среда Playground, в которой можно сразу же увидеть результат программирования.

Особенности языка:

  • Язык предназначен только для разработки под Apple.

Зарплаты

По данным исследования Хабр Карьеры, в первом полугодии 2023 года в среднем на 19% выросли зарплаты разработчиков во всех языках программирования кроме Golang ― осталась прежней и Delphi ― снизилась на 23%.

В тройке самых высокооплачиваемых языков программирования ― Objective-C, Scala и Swift

По зарплатам всё просто: больше технологий входит в стек — выше гонорар.

Что выбрать для старта

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

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

Какой стек учить?

К выбору стека лучше подойти объективно: открыть сайты с вакансиями и посмотреть, что требуется на рынке.

Направления и языки

Хочу в геймдев

С++ и C#

Хочу в Data Science

Python

Хочу программировать роботов и умные вещи

С и С++

Хочу писать мобильные приложения

Java, Objective C, Swift, Kotlin

Хочу во фронтенд

JavaScript, HTML, CSS

Хочу в бэкенд веб-приложений

JavaScript, Python, Go, C#

* сервис предоставляется организацией, признанной экстремистской на территории РФ

Статью подготовили:

Редакция Практикума

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться
Идеи новогодних подарков от нейросети + промокоды на курсы Практикума и акции от партнеров
Fri Nov 15 2024 14:23:57 GMT+0300 (Moscow Standard Time)