Свои языки программирования: зачем компании изобретают колесо заново

ej-ydvkva7dyv99vqorv1qswrte.png

Кажется, языков программирования уже предостаточно, но IT-гиганты продолжают плодить свои. Google, Apple, JetBrains — готовых решений хватает до отказа, а им все равно хочется иметь что-то свое, эксклюзивное. Дело в технологической необходимости, гордыне или «синдроме NIH», когда чужое не берут? Может, это попытка захватить контроль над всем технологическим стеком или хитрый маркетинговый ход для завоевания умов разработчиков? Давайте копнем глубже, чтобы разобраться.

Когда старые языки мешают бизнесу


Программирование — это гонка не только за функциональностью, но и за простотой. Когда старые языки начинают тормозить миллиардные проекты, компании идут на радикальные шаги. Немного окунемся в детали и посмотрим, почему Google, Apple и JetBrains решили похоронить C++, Objective-C и Java. И разберемся, как рождались Go, Swift и Kotlin — и что это изменило.

В колонке Mvmt (Movement) показано, насколько язык изменил свою позицию в рейтинге по сравнению с прошлым годом: рост, падение или без изменений. Abs Incr (Absolute Increase) отражает процентный прирост популярности языка в период с 2021 по 2022 годы.
hxcceuitlkjusrkaitjviygjias.png

Рейтинг языков программирования в 2022 году: рост популярности и динамика изменений. Источник.
1sxtzb65h1hqc3lijs6g7tbwvb0.png

Анализируя текущие рейтинги популярности ЯП, можно отметить, что тенденции, наблюдаемые в 2022 году, сохранились и в 2025 году. Источник.
dieiksvcuar3umm3kjj24s37br8.png

Google vs C++: почему облака потребовали нового языка


В начале 2000-х Google оказался в ловушке собственного успеха. Поисковик, YouTube и облачные сервисы росли как на дрожжах, а C++, несмотря на производительность, стал проблемой. Компиляция проектов занимала десятки минут даже на кластерах из тысяч серверов. Ручное управление памятью превращало код в минное поле: один неверный шаг — и приложение падало с ошибкой сегментации. Новые разработчики тратили месяцы, чтобы понять тонкости шаблонов и исключений.

Спасением стал Go — язык, который Роб Пайк и Кен Томпсон создали как антипод C++. Горутины заменили сложные потоки, сборщик мусора избавил от ручного управления памятью, а компиляция ускорилась в десятки раз. Представьте: вы пишете код для облачного сервиса, нажимаете «собрать» — и через секунду он уже работает. Именно так сейчас живут Kubernetes и Docker, а согласно опросу JetBrains, Go входит в число пяти самых быстрорастущих языков и 17% разработчиков использовали его в последние годы.

В самой корпорации Google язык Go используют для поддержки инфраструктуры, включая сервисы индексации веб-страниц и оптимизации Chrome, а также в команде Firebase Hosting для управления статическим веб-хостингом. Кроме того, Go активно применяют инженеры Site Reliability Engineering (SRE) для автоматизации развертывания, обновления конфигураций и масштабирования сервисов. Это обеспечивает стабильность и эффективность глобальных продуктов Google.

Apple и Objective-C: как Swift перезапустил экосистему


Apple создала Swift в 2014 году, чтобы заменить Objective-C в разработке для iOS и macOS. На тот момент язык напоминал старый фамильный особняк: полон истории, но с протекающей крышей. Синтаксис с квадратными скобками пугал новичков, а ручное управление памятью приводило к ошибкам nil, которые обрушивали каждое второе приложение. Apple понимала: чтобы удержать лидерство, нужен язык, который объединит безопасность и простоту.

С момента своего появления Swift прошел значительную эволюцию. В 2015 году был выпущен Swift 2.0, представивший улучшенную обработку ошибок и повышение производительности. В 2016 году Swift 3.0 принес значительные изменения в дизайне API, сделав его более ясным и последовательным. Swift 4.0 в 2017 году сосредоточился на оптимизации производительности и улучшении работы со строками. В 2018 году Swift 4.2 внедрил протоколо-ориентированное программирование, улучшив опыт разработки. В 2019 году Swift 5.0 обеспечил стабильность ABI, позволяя бинарную совместимость между версиями. А в 2021 году Swift 5.5 представил асинхронное программирование, значительно упростив работу с параллельными задачами.

Так Swift стал культурным шоком. Опциональные типы исключили null-ошибки, автоматическое управление памятью сократило код на 40%, а синтаксис, вдохновленный Python, превратил разработку в удовольствие. Но главное — совместимость с Objective-C. Компании вроде LinkedIn и Uber смогли переписывать приложения постепенно, без остановки бизнеса. Сегодня Swift — это не только iOS. На нем пишут серверные приложения (Vapor) и даже экспериментируют с машинным обучением.

Эти улучшения сделали Swift предпочтительным выбором для разработки под платформы Apple. По состоянию на октябрь 2024 года, около 80% новых iOS-приложений разрабатываются на Swift, что демонстрирует явный тренд в сообществе разработчиков. Кроме того, исследования показывают, что приложения, созданные с использованием Swift, содержат на 30% меньше ошибок по сравнению с теми, что написаны на Objective-C. Интеграция с Xcode значительно упростилась с момента появления Swift: около 70% разработчиков сообщают об улучшении эффективности рабочего процесса благодаря синтаксису и инструментам Swift.

JetBrains и Java: как Kotlin стал спасителем Android


Java к 2010-м стала символом рутины. Геттеры, сеттеры, анонимные классы — все это превращало код в многословную прозу. А NullPointerException был кошмаром для Android-разработчиков: одно неосторожное обращение к объекту — и приложение крашится. JetBrains, создатель IntelliJ IDEA, решил не ждать милостей от Oracle.

Kotlin, представленный JetBrains в 2011 году, стал тихой революцией в мире программирования. Его ключевые особенности, такие как null-безопасность на уровне типов, data-классы, сокращающие объем кода, и корутины для асинхронных операций, сделали разработку более предсказуемой и эффективной. Полная совместимость с Java позволила компаниям постепенно мигрировать на новый язык без значительных рисков.

В 2017 году Google официально объявил Kotlin предпочтительным языком для разработки Android-приложений, что стало поворотным моментом для сообщества разработчиков. По состоянию на 2020 год, около 70% из 1 000 лучших приложений в Play Store были написаны на Kotlin, а Google использует его в 60 своих приложениях, включая Maps и Drive.

Однако популярность Kotlin выходит за рамки мобильной разработки. С выпуском версии 5.0 в 2017 году, Spring Framework официально добавил поддержку Kotlin, что сделало его привлекательным выбором для разработки микросервисов и серверных приложений. Кроме того, с помощью Kotlin Multiplatform разработчики могут создавать приложения для различных платформ, включая iOS, web и desktop, используя общий код.

Сегодня, в 2025 году, Kotlin продолжает укреплять свои позиции как универсальный и современный язык программирования. Кстати, этот язык был назван в честь острова Котлин, на котором расположен город Кронштадт.

zz7lafibhomtz0yzpcvsc1_iwuk.png

Динамика популярности ЯП с 2001 по 2025 год. Видно, что Python за последние годы значительно вырос, заняв лидирующую позицию, в то время как Java и C потеряли свои прежние позиции. C++ продолжает сохранять стабильную популярность, а Go и JavaScript укрепляют свои позиции. Источник.

Что дальше


Go, Swift и Kotlin родились из боли. Они убрали рутину, предотвратили целые классы ошибок и дали разработчикам суперсилу — писать меньше, а делать больше.
История учит: языки устаревают, когда перестают отвечать вызовам времени. Сегодня Rust бросает вызов системному программированию, TypeScript доминирует в вебе, а Julia конкурирует с Python в Data Science. Тренд ясен — будущее за языками, которые сочетают простоту, безопасность и гибкость. Компании, которые вовремя меняют инструменты, остаются в лидерах. Остальные рискуют отстать навсегда.

И если ваш язык больше мешает, чем помогает, может, пора задуматься о смене парадигмы?
1hdqmj1bvguax5hnugdz0ci_jbw.jpeg

Кастомные языки, о которых мало кто слышал


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

Slang: алхимия Goldman Sachs


Хоть он и был создан более 30 лет назад, но до сих пор активно используется в компаниях. Например в Goldman Sachs он стал языком, который превращает финансовые модели в графы зависимостей и интегрирован в их систему SecDB. Каждый узел — опцион или своп, каждое ребро — риск. Статическая типизация проверяет не только синтаксис, но и соответствие Basel III. Компилятор отклоняет код, нарушающий нормы, как синтаксическую ошибку — это исключает человеческий фактор в соблюдении регуляций.

Этот код на Slang демонстрирует объявление модуля, структуру программы и вывод текста в консоль:

module factorial;
start
    function fact(n: int): int is
        if n <= 1 then
            return 1;
        else
            return n * fact(n - 1);
        end if;
    end function;
    var num: int = 5;
    var result: int = fact(num);
    output "Factorial of ", num, " is ", result;
end factorial.

Почему не C++ или Java? JVM-сборщик мусора — это рулетка в часы пика торгов: его пиковые задержки могут сорвать сделку. Шаблоны C++ хотя и гибки, но неэффективны для графов в миллионы узлов. Slang же компилируется в LLVM IR, минуя накладные расходы, и работает напрямую с регистрами процессора. Это критично для пересчета портфеля из миллиона опционов за 100 мс. На Java это заняло бы секунды — и прибыль ушла бы конкурентам.

Sawzall: Google и рождение Big Data


До Hadoop и Spark Google уже обрабатывала петабайты логов с помощью Sawzall — языка, который превращал сырые данные в структурированные инсайты. Его скрипты описывали, что считать, а не как, а компилятор генерировал код, оптимизированный под распределенные кластеры.

В этом примере программа на Sawzall подсчитывает общее количество слов во входных данных. Она разбивает каждую строку на слова и увеличивает счетчик для каждого слова:

count: table sum of int;
word: string;
for line in input {
    words = split(line, " ");
    for word in words {
        emit count <- 1;
    }
}

Protocol Buffers здесь были не форматом данных, а частью языка: логи парсились как бинарные структуры, что исключало ошибки интерпретации. Когда Google перешла на Go, Sawzall устарел, но его идеи легли в основу MapReduce. Именно он показал, что Big Data — это не объемы, а умение превратить хаос в порядок.

Современное применение MapReduce сохраняет его актуальность, несмотря на появление более быстрых решений вроде Apache Spark. Например, PayPal использует Hadoop MapReduce для анализа исторических транзакций и выявления мошенничества: функция Map фильтрует подозрительные операции, а Reduce группирует их по паттернам, таким как частые платежи с одного IP-адреса. Это позволяет банку обнаруживать аномалии в больших данных, оставаясь верным принципам Sawzall — описания задачи, а не деталей реализации.

P4: сети как программный код


Современные маршрутизаторы — это не просто железо, а программируемые системы. P4 позволяет программировать маршрутизаторы так, будто вы пишете микропрограммы для процессора. Через match-action таблицы инженеры задают правила обработки пакетов «если пакет имеет VLAN-тег 100 — перенаправь в облако», а компилятор транслирует их в инструкции для ASIC-чипов.

В этом примере на P4 определяется заголовок Ethernet и парсер, который извлекает этот заголовок из входящего пакета:

header ethernet_t {
    macAddr_t dstAddr;
    macAddr_t srcAddr;
    bit<16> etherType;
}
parser MyParser(packet_in packet) {
    state start {
        packet.extract();
        transition accept;
    }
}

Например, парсинг VLAN-тегов в P4 — это не абстракция, а прямое указание железу, как биты должны течь через конвейер. Когда Netflix стримит 4K на миллионы устройств, именно P4 гарантирует, что пакеты не потеряются в пути. А если нужно внедрить новый протокол — вы не ждете вендора, а пишете код и деплоите его через CI/CD, как в софтверной компании.

Mu: банкинг на стероидах


Standard Chartered взял Haskell, добавил к нему монады для транзакций — и получил Mu. Здесь типы — это не подсказки для разработчика, а формальные контракты: код, который компилируется, уже соответствует MiFID II и требованиям FATF. И это не «предупреждение» — это автоматический аудит, который исключает ошибки.

А раз Mu считается минималистичным ЯП, пример будет соответствующий:

main = putstr "Hello, World!"

Почему не блокчейн? Потому что он подразумевает децентрализацию и открытость, что противоречит конфиденциальности в финансовом секторе. Mu интегрирован с мейнфреймами 1980-х через FFI, работающий на уровне машинного кода. Это как научить COBOL-систему проверять криптографические подписи: под капотом — легаси, но для регуляторов это выглядит как современный аудит.

Проблемы, о которых не говорят


Миграция стека упирается в триаду проблем: сопротивление команды, скрытые операционные издержки и долгосрочные риски поддержки экосистемы. Преодоление сопротивления разработчиков требует фокуса на решении конкретных инженерных проблем. Например, если возвращаться к Kotlin из начала статьи, то внедрение в Android-экосистему стало успешным благодаря обратной совместимости с Java и сокращению шаблонного кода на 40%, что подтверждено метриками Google.

Согласно исследованию Stripe«s Developer Coefficient, адаптация новых инструментов съедает до 30% времени разработчиков в первые полгода. Для команды из 50 инженеров это эквивалентно потере 15 человеко-лет ежегодно. Инфраструктурные затраты включают перенастройку CI/CD под новые тулчейны (например, переход с Gradle на Bazel для мультиязычных проектов), интеграцию линтеров (ESLint → Rust«s Clippy) и обновление container-образов. Частичная миграция усугубляет техдолг: симбиоз легаси и нового кода повышает сложность поддержки. Для мидл-разработчика переход на Rust оценивается более чем в полмиллиона долларов при 6–12 месяцах адаптации.

Риски «смерти» языка напрямую связаны с отсутствием якорных проектов и слабой экосистемой. Dart, несмотря на поддержку Google, не смог конкурировать с TypeScript в вебе из-за доминации npm и готовых решений для статической типизации. Его выживание в нише Flutter обусловлено глубокой интеграцией с Google«s UI-тулингом.

Успешные языки, такие как Rust, укрепляются через инфраструктурные проекты: внедрение в ядро Linux (LKML) и поддержку WASM. Ключевой фактор — независимость от одиночного вендора, как в случае Python с его PSF-управлением.

Миграция оправдана при выполнении трех условий: язык решает конкретную проблему (например, безопасность памяти в Rust), он имеет гарантированную LTS-поддержку (как Python через PEP 596), в команде есть достаточная экспертиза. Пример успеха — Airbnb, где переход на TypeScript сократил runtime-ошибки на 38%.

Решение о миграции требует анализа TCO (Total Cost of Ownership), включая потерю velocity, инфраструктурные изменения и риски экосистемы. Язык выживает только через интеграцию в критически важные проекты и поддержку сообщества. Как показано в кейсе Dart, даже «неудачные» языки находят ниши, но их ROI зависит от четкого соответствия инженерным требованиям, а не хайпу.

Ждать ли нам новых языков программирования от корпораций


Создание языков программирования — это как мемы в интернете
Кажется, что их уже миллион, но каждый месяц появляется новый. А ты либо следишь за трендами, либо сидишь как ждун.

OpenAI и Tesla, конечно, могут попробовать создать что-то в духе «ChatGPTScript» — язык, где каждая функция генерирует код сама, пока вы пьете кофе. Или «TeslaLang» с синтаксисом, который запрещает печатать if, чтобы избежать «ветвления» в автономном вождении. Но шансы, что это станет мейнстримом, примерно как у моей статьи — 12 просмотров, из них 10 моих.

А если серьезно, то главный тренд — языки-ниндзя: узкие, незаметные и смертоносные для конкретных задач. Tesla уже использует Rust для firmware, но для симуляции ИИ-водителя может создать DSL, который будет проверять каждую строку кода на соответствие законам физики.

OpenAI, скорее, встроит оптимизации в PyTorch, чем станет изобретать новый синтаксис. Зачем? Потому что экосистема Python — это как метавселенная: все уже внутри, даже если там тесно и иногда пахнет легаси-кодом.

Но фантазировать можно. Допустим, лет через пять Илон Маск таки выпустит «MarsScript» — язык для программирования марсоходов, где каждая переменная обязана иметь юнит-тест на выживание в вакууме. А OpenAI ответит «GPT++» — языком, где вы описываете задачу на английском, а компилятор дописывает за вас код, пока вы мило щуритесь в камеру. Но даже тогда эти языки останутся нишевыми, как Scala для фанатов функциональщины или VHDL для инженеров, которые любят боль.

Но реальность скучнее и умнее. Новые языки будут рождаться не «от скуки», а как ответ на аппаратные прорывы и экосистемную усталость. Например, если квантовые компьютеры все же когда-нибудь выстрелят, появится язык, где qubit станет базовым типом, а ошибка в коде вызовет коллапс Вселенной (или хотя бы вашего кластера).

Если нейроморфные чипы заменят GPU, нам понадобится язык, который описывает нейросети не как графы, а как «потоки импульсов» — что-то между Assembler и медитацией.

А когда ИИ начнет писать код лучше нас, языки станут «диалоговыми»: вы говорите «сделай мне интернет-магазин», а система отвечает: «Собираю из React, Rust и 15 микросервисов. Одобряете?».

Да, новые языки будут. Но они либо спрячутся под капот фреймворков, как Triton от OpenAI, либо займут узкие ниши, где без них нельзя. А главные «языки» будущего, возможно, окажутся вообще не языками — это будут интерфейсы между ИИ и железом, невидимые как Wi-Fi. И оставляйте свое мнение в комментариях!

© Habrahabr.ru