Ответ на вопрос, на каком языке написаны игры, браузеры и мессенджеры: почти никогда не на одном. Производительное ядро, интерфейс, мобильные клиенты, web-версия, backend и инструменты сборки используют разные стеки. Unreal активно использует C++ и Blueprint, Unity использует C# для scripting, Chromium сочетает большую C++ базу с JavaScript и растущим Rust-слоем, а клиенты мессенджеров зависят от платформы.
Фраза «на каком языке написан продукт» требует уточнения компонента и версии. Открытый репозиторий показывает текущий исходный код, но не всегда серверную часть. Документация движка описывает поддерживаемый язык проекта, а не внутреннюю реализацию всего движка. Магазин приложений не раскрывает архитектуру. Надёжный ответ связывает утверждение с конкретным репозиторием, каталогом или официальной документацией.
Движок, gameplay scripts, shaders, tools и backend.
Engine, UI, sandbox, codecs, JavaScript и build tools.
iOS, Android, desktop, web, server и protocol.

На каком языке написаны игры, браузеры и мессенджеры по слоям
Вместо одного ответа нарисуйте архитектурную карточку. Пример для игры разделяет движок, gameplay, shaders, инструменты и онлайн-сервис. Языки выбирают по ограничениям слоя. Это не означает, что каждый проект Unreal обязан использовать одинаковую комбинацию.
Game product
├─ Engine and native modules: C++
├─ Gameplay layer: C++ + visual Blueprint
├─ Shaders: engine shader language
├─ Tools and content pipeline: C++, Python or scripts
├─ Online backend: project-specific stack
└─ Web site and account: HTML, CSS, JavaScript + backend
Verification checklist:
1. official documentation
2. official source repository
3. build configuration and extensions
4. component and version
5. date of inspection- Ответ разделяет продукт на проверяемые компоненты
- Язык связан с источником и назначением, а не с догадкой по интерфейсу
Epic рекомендует сочетать C++ и Blueprint в большинстве проектов Unreal. Unity scripting использует C#. Chromium публикует C++ исходники и официальную инфраструктуру Rust с FFI. Firefox также является многоязычным проектом. Telegram Desktop имеет открытый C++ репозиторий, а iOS и Android клиенты используют свои нативные стеки и общие библиотеки. Сервер Telegram при этом не опубликован полностью, поэтому не выводите его язык из клиента.
Типичные языки по продукту и слою
| Элемент | Что означает | Что делать |
|---|---|---|
| Unreal-игра | C++ плюс Blueprint | Gameplay и engine integration |
| Unity-игра | C# scripts плюс native engine | Игровая логика поверх движка |
| Chromium-браузер | C++, JavaScript, Rust и инструменты | Разные процессы и компоненты |
| iOS-мессенджер | Swift, Objective-C, C/C++ библиотеки | Нативный UI и общие протоколы |
| Android-мессенджер | Kotlin, Java, C/C++ библиотеки | Нативный UI и media |
Таблица показывает типичный слой, а не полный language census конкретного commit. Один репозиторий содержит generated code, vendor libraries, tests и build scripts, которые искажают простую статистику. Строки кода тоже не равны архитектурной важности. Лучше найти точку входа, систему сборки, публичные API и границы процессов. Для закрытого продукта формулируйте только подтверждённое.

Практика: разберите Chromium и Telegram Desktop по слоям
Возьмите два открытых продукта и заведите на каждый архитектурную карточку из пяти компонентов со ссылкой на источник. Успех проверяется просто: на вопрос «на каком языке написан Telegram» вы отвечаете не одним словом, а строками про desktop, iOS, Android, web и сервер. Всё, что не подтверждено официальным источником, помечайте отдельно.
- Назвать компонент точно. Запишите в файле languages.md формулировку вида «Telegram Desktop, официальный репозиторий, клиент под Windows, macOS и Linux». Пока компонент не назван, спор о языке продукта бессмысленный.
- Найти официальный репозиторий. Ссылку на исходники берите с официального сайта или из документации, а не из случайной статьи. Для Telegram Desktop это открытый C++ репозиторий, для Chromium публичные исходники проекта; серверную часть Telegram так найти не получится, и это тоже результат.
- Открыть файлы сборки. Посмотрите конфигурацию сборки и расширения файлов в основных каталогах: там видно, какие языки реально собираются и какие зависимости подключены. Это надёжнее процентов на странице репозитория.
- Сверить с документацией. Проверьте каждое утверждение по официальным docs: Unreal описывает связку C++ и Blueprint, Unity документирует C# для scripting. Документация говорит о языке вашего проекта, не переносите это на внутреннюю реализацию движка.
- Зафиксировать дату проверки. Допишите к каждой строке дату и версию или коммит, на котором смотрели. Chromium наращивает Rust-слой постепенно, поэтому ответ без даты устаревает молча.
Проверьте карточку на слабом месте: попробуйте подтвердить строку про сервер мессенджера. Официального источника для закрытой серверной части не найдётся, и в карточке должно остаться «не подтверждено», а не язык, угаданный по клиенту. Затем посмотрите проценты языков на странице репозитория и прикиньте, как они изменятся, если убрать vendor-библиотеки, сгенерированный код и тесты.
Сделайте такую же карточку для движка, с которым работаете сами, и добавьте строки про shaders и content pipeline. Полезно сравнить два браузера: у Chromium и Firefox набор слоёв похож, а языковой состав отличается. Готовая карточка легко превращается в ответ на собеседовании: компонент, язык, источник, дата.
Частые ошибки и почему они появляются
Утверждение «Telegram написан на X» часто смешивает desktop-клиент, мобильные приложения и сервер. Вторая ошибка: считать язык страницы языком браузера. JavaScript выполняется внутри браузера, но сам engine имеет другие слои. Третья: переносить язык движка на каждую игру и забывать gameplay scripts, shaders и backend.
Разделите client, server, engine, UI и tools.
Ищите официальные docs и repositories с датой.
Отделяйте vendor, generated, tests и основное ядро.
Самопроверка
На каком языке написаны компьютерные игры?
У игры нет одного языка: движок и нативные модули обычно пишут на C++, gameplay в Unreal делают на C++ вместе с Blueprint, а в Unity на C#, шейдеры на языке шейдеров движка, инструменты и backend на своём стеке. Ответ имеет смысл только вместе с названием слоя.
Unity-игра целиком написана на C#?
Unity-игра не написана целиком на C#: на нём делают scripting, то есть игровую логику поверх движка. Сам движок и его библиотеки собраны из других слоёв, часть кода приходит из плагинов и нативных модулей.
На каком языке написан браузер Chrome?
Chrome построен на Chromium, где опубликована большая C++ база, есть JavaScript в интерфейсных частях и официальная инфраструктура Rust с FFI. Одним языком браузер не описывается: engine, UI, sandbox и кодеки разведены по разным компонентам и процессам.
Язык сайта совпадает с языком браузера?
Язык страницы и язык браузера не связаны: JavaScript выполняется внутри браузера, а сам браузер собран на других языках. Страница для движка это входные данные, а не его исходный код.
На каком языке написан Telegram?
У Telegram разные клиенты: desktop-версия имеет открытый C++ репозиторий, iOS собирают на Swift и Objective-C с C/C++ библиотеками, Android на Kotlin и Java с теми же общими библиотеками. Сервер опубликован не полностью, поэтому его язык не выводят из клиента.
Можно ли доверять процентам языков на странице репозитория?
Проценты языков считаются по файлам репозитория, куда попадают vendor-библиотеки, сгенерированный код, тесты и скрипты сборки. Для вывода об архитектуре смотрите точку входа, систему сборки, публичные API и границы процессов.
Что делать дальше
Выберите один открытый продукт и сделайте карту пяти компонентов со ссылками на исходники. Начать с базового кода можно на курсе Java. Игровой scripting разобран в статье про Lua, а выбор первого языка в сравнении Python и JavaScript.
