Классификация языков в 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.yaml — Docker 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, не являются языками программирования, но часто используются для конфигураций и обмена данными. Также важно помнить, что популярность языка не всегда отражает его применимость — выбор зависит от контекста задачи, платформы, экосистемы и требований к производительности, безопасности и поддержке.
Понимание этих категорий помогает правильно подходить к изучению технологий, а также грамотно строить архитектуру и документацию проектов.
Куда идти дальше
| Тема | Раздел |
|---|---|
| Фронтенд и бэкенд | Фронтенд и бэкенд |
| Раздел "Языки" | Раздел "Языки" |
Проверьте себя: Чек-лист самопроверки.