Перейти к основному содержимому

Классификация языков в IT — итоги

Всем

Кратко — что стоит унести из раздела "Классификация языков в IT". Если пункт кажется туманным — откройте указанную главу или оглавление.


FAQ — Часто задаваемые вопросы

Типичные путаницы и ситуации, с которыми сталкиваются новички при выборе инструментов и чтении документации. Ниже также — формулировки как в поиске ("чем отличается…", "что такое…", "как выбрать…") с коротким ответом и ссылкой на главу. Определения для самопроверки — в чек-листе.

Вопрос. Хочу "написать программу", открыл HTML — почему страница статична и "ничего не считает"?

Ответ. HTML — язык разметки: он описывает структуру и смысл блоков, но не содержит алгоритмов. Логику добавляют языки программирования (JavaScript, Python и др.) или серверный код. Подробнее здесь — глава 4, глава 6.

Вопрос. Добавил стили в HTML через атрибут style, а потом подключил CSS — правила конфликтуют. Кто главнее?

Ответ. Работает каскад и специфичность селекторов: inline-стили, порядок подключения файлов и "вес" селектора решают, какое правило применится. Для поддерживаемых проектов стили выносят в отдельный CSS. Подробнее здесь — глава 5.

Вопрос. В конфиге Kubernetes "сломался" YAML после одного пробела — это баг редактора?

Ответ. YAML чувствителен к отступам — они задают вложенность так же строго, как скобки в коде. JSON и YAML — форматы данных и конфигураций, у них нет циклов и ветвлений. Подробнее здесь — глава 1, глава 4.

Вопрос. Написал длинный SQL с десятками JOIN — запрос тормозит. Может, "переписать на Python"?

Ответ. Языки запросов заточены под выборку и агрегацию в СУБД; тянуть миллионы строк в приложение и фильтровать там — типичная ошибка. Сначала проверьте индексы, план запроса и границы данных; логику бизнес-правил оставляйте в коде приложения. Подробнее здесь — глава 3.

Вопрос. GraphQL и SQL — "одно и то же, только для API"?

Ответ. SQL работает с реляционными таблицами внутри СУБД. GraphQL описывает, какие поля клиент запрашивает у API-сервера; за ним может стоять SQL, NoSQL или несколько источников. Подробнее здесь — глава 3, глава 1.

Вопрос. Выбрал язык из топа рейтинга — проект всё равно "не взлетает". Почему популярность не помогла?

Ответ. Рейтинг отражает массовый спрос, а не вашу задачу, платформу и экосистему библиотек. Мобильное приложение, встраиваемая система и веб-сервис требуют разных стеков. Подробнее здесь — глава 6, глава 1.

Вопрос. "Низкоуровневый язык = сложный для новичка" — так ли это?

Ответ. Уровень языка — это близость к машинному коду, а не "сложность для человека". Python высокоуровневый, но требует понимания runtime; C ближе к железу и даёт прямой контроль над памятью. Подробнее здесь — глава 2, глава 6.

Вопрос. Скопировал пример на C++ в проект на Python — синтаксис "похож", но интерпретатор ругается.

Ответ. Семейства языков (C, Python, JVM, .NET) имеют разные модели выполнения, типов и библиотек. Переносить нужно идею алгоритма, а не строки буквально. Подробнее здесь — глава 6, глава 2.

Вопрос. Markdown-файл в репозитории выглядит иначе на GitHub и в редакторе — где "правильная" версия?

Ответ. Markdown — лёгкая разметка для документации; рендер зависит от движка преобразования (GitHub, VS Code, Docusaurus). Для строгой структуры данных берут XML или JSON. Подробнее здесь — глава 4.

Вопрос. XML-конфиг "валится" из‑за одной незакрытой скобки — зачем такая строгость?

Ответ. XML требует валидной вложенной структуры — это плата за однозначный разбор машиной и обмен между системами. Для ручных конфигов часто выбирают YAML или JSON с менее многословным синтаксисом. Подробнее здесь — глава 4.

Вопрос. Подключил Sass, а в браузере "не видно" переменных $color — что не так?

Ответ. Sass и LESS — препроцессоры: их компилируют в обычный CSS до отдачи браузеру. Браузер понимает только CSS; исходники .scss нужно собирать в пайплайне. Подробнее здесь — глава 5.

Вопрос. В Scratch всё работает блоками, а в Python — ошибки с отступами. Это "другой Scratch"?

Ответ. Scratch — визуальный язык для обучения; блоки скрывают синтаксис. Текстовые языки требуют точного синтаксиса и понимания типов данных. Переход — отдельный этап, не автоматический перевод блоков. Подробнее здесь — глава 7, глава 6.

Вопрос. Регулярное выражение "сломало" строку при замене — это полноценный язык программирования?

Ответ. Regex — мини-язык поиска по шаблону, встроенный в редакторы, SQL и код. Он не заменяет программу: сложную логику пишут на языке общего назначения. Подробнее здесь — глава 1, глава 6.

Вопрос. Dockerfile и Ansible "выглядят как код" — можно ли на них писать игру?

Ответ. Это DSL — языки предметной области для сборки, деплоя и автоматизации. Они решают узкую задачу, а не произвольные алгоритмы. Подробнее здесь — глава 6.

Вопрос. JavaScript "на фронте" и Node.js "на бэке" — два разных языка?

Ответ. Это один язык с разными средами выполнения: браузер даёт DOM и Web API, Node — файловую систему и серверные модули. Синтаксис общий, доступные библиотеки различаются. Подробнее здесь — глава 6, Фронтенд и бэкенд.

Вопрос. Kotlin и Java — нужно учить оба с нуля?

Ответ. Оба — JVM-языки: компилируются в байт-код, работают на одной виртуальной машине, делят экосystem Android и enterprise. Зная Java, Kotlin осваивают быстрее и наоборот. Подробнее здесь — глава 6.

Вопрос. Сохранил .json с комментариями // — парсер падает. Разве JSON "как JavaScript"?

Ответ. Стандарт JSON запрещает комментарии и trailing comma; это строгий формат обмена. Для конфигов с комментариями используют YAML, JSON5 или отдельный README. Подробнее здесь — глава 4.

Вопрос. Excel-формула "сама считает" — значит, VBA уже не нужен?

Ответ. Формулы — встроенный язык выражений таблицы; VBA и макросы — для автоматизации, кнопок и интеграций. Для разовых расчётов хватает формул; для сценариев — скрипт. Подробнее здесь — глава 1, глава 6.

Вопрос. Шейдер "написал на GLSL", а в Unity нужен HLSL — это разные профессии?

Ответ. Шейдерные языки — специализированные DSL для GPU; синтаксис похож, но API и пайплайн рендера зависят от движка (OpenGL, DirectX, Unity). Подробнее здесь — глава 6.

Вопрос. Bash-скрипт работает на своём ПК, на Windows — "command not found".

Ответ. Shell-языки привязаны к семейству ОС и оболочки (bash, zsh, PowerShell). Кроссплатформенную логику чаще пишут на Python или переносят команды в CI под нужную среду. Подробнее здесь — глава 6.

Вопрос. TypeScript "не запускается" — только JavaScript в браузере.

Ответ. TypeScript компилируется в JavaScript перед выполнением; типы существуют на этапе разработки и помогают ловить ошибки заранее. Подробнее здесь — глава 1, глава 6.

Вопрос. Low-code платформа "собрала приложение без кода" — значит, программирование не нужно?

Ответ. Low-code ускоряет типовые формы и интеграции, но границы платформы быстро упираются в кастомную логику, производительность и безопасность — там снова нужен код. Подробнее здесь — глава 7, глава 6.

Вопрос. UML-диаграмма "не компилируется" — я что-то установил не так?

Ответ. UML и BPMN — языки моделирования: они описывают систему для людей и генераторов, а не исполняются напрямую как Python. Подробнее здесь — глава 7.

Вопрос. В вакансии "знаем 15 языков" — реально учить все подряд?

Ответ. Список в вакансии — экосистема команды, а не личный минимум. Освоите один язык программирования глубоко и научитесь читать смежные синтаксисы; остальное добирают по задачам. Подробнее здесь — глава 1, Карьера в IT.

Вопрос. Естественный язык в чат-боте "понимает меня", а компилятор — нет. Где граница?

Ответ. Русский и английский — естественные языки с неоднозначностью; программы требуют однозначных инструкций в искусственных языках. LLM имитирует понимание статистикой, компилятор проверяет формальные правила. Подробнее здесь — глава 2.

Вопрос. XSLT превращает XML в HTML — это "веб-разработка на XML"?

Ответ. XSLT — язык преобразования разметки, часто в legacy и документообороте. Современный веб чаще строят на HTML + CSS + JS; XSLT остаётся нишевым инструментом. Подробнее здесь — глава 5, глава 4.

Вопрос. После курса знаю HTML, CSS и Python — с чего начать pet-проект, чтобы не смешать всё в одном файле?

Ответ. Разделите слои: разметка (структура), стили (оформление), скрипт (логика), при необходимости — запросы к данным отдельно. Так же устроены и production-проекты. Подробнее здесь — глава 4, глава 5, Фронтенд и бэкенд.

Вопрос. Чем отличается HTML от CSS?

Ответ. HTML задаёт структуру и смысл страницы (заголовки, ссылки, формы); CSS — оформление (цвет, шрифт, расположение). Это разные категории языков, не конкурирующие технологии. Подробнее здесь — глава 4, глава 5.

Вопрос. HTML — это язык программирования?

Ответ. HTML — язык разметки: в нём нет переменных, циклов и условий. Логику добавляют JavaScript, Python и другие языки программирования. Подробнее здесь — глава 4, глава 6.

Вопрос. SQL — язык программирования или что-то другое?

Ответ. SQL — язык запросов к реляционным базам данных: выборка, фильтрация, объединение таблиц. Сложную бизнес-логику пишут в коде приложения. Подробнее здесь — глава 3.

Вопрос. Какой язык программирования выбрать новичку в 2025–2026 году?

Ответ. Смотрите на цель: веб — JavaScript или Python; анализ данных — Python; мобильные приложения — Kotlin или Swift; системное — Rust или C. Первый язык учат глубоко, синтаксис второго осваивают быстрее. Подробнее здесь — глава 6, Карьера в IT.

Вопрос. Python или Java — что лучше для начинающего?

Ответ. Python проще стартовать и популярен в data science и автоматизации; Java — стандарт enterprise, Android (с Kotlin) и крупных банковских систем. Оба JVM-мира и Python-сообщества дают много вакансий. Подробнее здесь — глава 6.

Вопрос. Чем JSON отличается от XML?

Ответ. Оба — форматы данных, не языки программирования. JSON компактнее и доминирует в веб-API; XML строже по схеме и чаще в legacy, документообороте и конфигах enterprise. Подробнее здесь — глава 4.

Вопрос. Что такое Markdown и зачем он в IT?

Ответ. Markdown — лёгкая разметка для README, документации и заметок в GitHub, Notion, Docusaurus. Пишется как текст, рендерится в HTML. Подробнее здесь — глава 4.

Вопрос. Чем компилируемый язык отличается от интерпретируемого?

Ответ. Компилятор заранее переводит код в машинные инструкции или байт-код (C, Rust, Go); интерпретатор выполняет построчно (Python, JavaScript в рантайме). На практике границы размыты — Java и C# компилируются в байт-код виртуальной машины. Подробнее здесь — глава 2, глава 6.

Вопрос. Что такое GraphQL и чем он отличается от REST?

Ответ. GraphQL — язык запросов к API: клиент сам указывает нужные поля. REST отдаёт фиксированные ресурсы по URL. GraphQL снижает overfetching, но требует другой архитектуры сервера. Подробнее здесь — глава 3, Фронтенд и бэкенд.

Вопрос. Зачем нужен TypeScript, если есть JavaScript?

Ответ. TypeScript добавляет статические типы к JavaScript и ловит ошибки до запуска. Крупные фронтенд- и Node-проекты (Angular, NestJS) строят на TS. Подробнее здесь — глава 1, глава 6.

Вопрос. Что такое YAML и где он используется?

Ответ. YAML — формат конфигураций с отступами вместо скобок: Docker Compose, Kubernetes, CI/CD. Чувствителен к пробелам; для обмена данными чаще берут JSON. Подробнее здесь — глава 4, готовые compose.yamlDocker Compose — готовые стеки.

Вопрос. Чем CSS отличается от Sass и LESS?

Ответ. Sass и LESS — препроцессоры CSS: переменные, вложенность, миксины. Браузер понимает только CSS после сборки. Подробнее здесь — глава 5.

Вопрос. Kotlin или Java для Android — что учить?

Ответ. Оба — JVM-языки; Google рекомендует Kotlin как основной для новых Android-проектов. Зная один, второй осваивают быстрее. Подробнее здесь — глава 6.

Вопрос. Что такое DSL в программировании?

Ответ. DSL (domain-specific language) — узкий язык под задачу: SQL, Dockerfile, Ansible, регулярные выражения. Универсальную логику пишут на Python, Java, C# и т.д. Подробнее здесь — глава 6.

Вопрос. C++ или Rust — что выбрать для системного программирования?

Ответ. C++ — зрелая экосystem, игры, embedded; Rust — безопасность памяти на этапе компиляции, растущий спрос в инфраструктуре. Оба относятся к низко- и среднеуровневым языкам семейства C. Подробнее здесь — глава 6.

Вопрос. Что такое bash-скрипт и shell-язык?

Ответ. Shell-языки (bash, zsh, PowerShell) автоматизируют команды ОС: деплой, бэкапы, CI. Привязаны к платформе; кроссплатформенную логику часто пишут на Python. Подробнее здесь — глава 6.

Вопрос. Scratch подходит только детям или можно начать с него взрослому?

Ответ. Scratch — визуальный язык для обучения алгоритмам без синтаксиса. Взрослым он даёт базу циклов и условий; для карьеры дальше переходят на Python или JavaScript. Подробнее здесь — глава 7.

Вопрос. Что такое регулярные выражения (regex)?

Ответ. Regex — мини-язык поиска по шаблону в тексте, SQL, коде и редакторах. Удобен для валидации email и парсинга логов; сложную логику лучше писать в полноценном языке. Подробнее здесь — глава 1.

Вопрос. PHP ещё актуален или уже устарел?

Ответ. PHP по-прежнему держит долю веб-серверов (WordPress, Laravel). "Устарел" — маркетинговый штамп; выбор зависит от вакансий и стека команды. Подробнее здесь — глава 6.

Вопрос. Чем язык разметки отличается от языка программирования?

Ответ. Разметка описывает структуру (HTML, XML, Markdown); программирование — алгоритмы (ветвления, циклы, вычисления). Путаница — частая ошибка новичков на старте. Подробнее здесь — глава 1, глава 4.

Вопрос. Что такое JVM и зачем Kotlin, Scala, Java на одной платформе?

Ответ. JVM — виртуальная машина, исполняющая байт-код. Разные языки компилируются в один формат и делят библиотеки. Подробнее здесь — глава 6.

Вопрос. Swift для iOS — нужно ли учить Objective-C?

Ответ. Новые iOS-проекты пишут на Swift; Objective-C встречается в legacy-коде. Для старта достаточно Swift и экосystem Apple. Подробнее здесь — глава 6.


Что запомнить

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

  • Языки запросов предназначены для извлечения и манипуляции данными в системах хранения (например, SQL, Cypher, GraphQL).
  • Языки разметки структурируют данные или текст, задавая их форму и семантику без логики выполнения (например, HTML, XML, Markdown).
  • Языки стилей определяют внешний вид и оформление содержимого, описанного на языках разметки (например, CSS, Sass, LESS).
  • Языки программирования реализуют логику поведения системы, поддерживают вычисления, ветвления, циклы и взаимодействие с ресурсами (например, Python, Java, C++, Rust).

Некоторые форматы, такие как JSON или YAML, не являются языками программирования, но часто используются для конфигураций и обмена данными. Также важно помнить, что популярность языка не всегда отражает его применимость — выбор зависит от контекста задачи, платформы, экосистемы и требований к производительности, безопасности и поддержке.

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


Куда идти дальше

ТемаРаздел
Фронтенд и бэкендФронтенд и бэкенд
Раздел "Языки"Раздел "Языки"

Проверьте себя: Чек-лист самопроверки.