Как всегда, это история о политике, крови, грызне и скудоумных менеджерах.
Мне всегда казалось, что C# сильно лучше нашей Java (только LINQ expressions чего стоит — именно expressions, а не применения типа LINQ-to-objects). А в F# (тоже работает на .NET) есть нормальные провайдеры типов и другая функциональщина. И всё это работает чудесно, а не как Haskell, который несколько лет подряд сегфолтился на Windows, и никто это не чинил.
Но всё портит маниакальная борьба Microsoft с конкурентами и из-за этого отсутствие экосистемы вне продуктов Microsoft. Это отсутствие конкуренции и деградация. Какой дурак захочет связываться с технологией, из-за которой тебя может назавтра кинуть создатель этой технологии? Беда, C# нам тоже не подходит.
На всякий случай, «Embrace, Extend, Extinguish» (EEE, «обнять, расширить, уничтожить») — это не забавная фраза и не инструкция к анальному плагу, а реальная антимонопольная стратегия Microsoft по захвату открытых стандартов. Она описана в судебном деле правительства США против Microsoft, 1998–2001.
С Oracle в общем-то так же. Пример: фреймворк изначально назывался Javaslang, но влетел на разбирательство с Oracle из-за использования слова «Java» в своём названии. Из-за чего авторы визуально перевернули название вверх ногами и получился VAVR. И даже красивый слоган придумали: «vavr — turns java™ upside down». Что не отменяет, что Oracle — контора, которую очень сложно любить.
Но есть нюанс — был один раз в истории особый исторический момент, когда сам Oracle нагнули несколько компаний во главе с IBM, и значительный кусок власти у них забрали. И только благодаря этому ивенту Java всё ещё живая и интересная.
История там довольно простая и поучительная.
Наверное, сейчас уже мало кто помнит, но Java сделала контора Sun Microsystems. И дела у неё в последние годы шли не очень. Чтобы как-то починить эти проблемы, они пытались максимально контролировать свою власть над Java. А какому же программисту понравится, что его любимую игрушку контролируют? Это не понравилось целой индустрии.
Так была создана особая свободная и открытая реализация Java под названием Harmony. Не та, которая сейчас у Huawei, HarmonyOS, а другая :) Официально всё это проходило под эгидой Apache Foundation, но бэкалось силами разработки лидеров — например, IBM.
Важная подробность. Sun придумали хитрую систему, как нагнуть сообщество юридическим образом. Они взяли свою тестовую сюиту TCK (Technology Compatibility Kit) — очень крутую, очень нужную, очень важную технически — на самом деле. Взяли и превратили в оружие. Та штука, которая не проходит тесты из неё, не может называться словом Java. Нельзя написать какую-то опенсорсную реализацию Java и не пройти половину тестов — к тебе сразу же придут юристы.
И всё бы хорошо, ну сделай всё по красоте, пройди тесты, получи свой бейджик. Да вот только TCK — это закрытый коммерческий продукт, который Oracle раздаёт только тем, кому посчитает нужным. То есть, конкурировать можно, но только если Oracle разрешит тебе с ними конкурировать. Такие вот рыночные механизмы, понимаете?
Когда Oracle купили Sun, практику терроризировать всех через TCK они не оставили, а даже расширили и углубили.
Возвращаемся к нашим баранам — Harmony как попытке переизобрести Java. Конечно же, Oracle отказалась предоставить Apache Foundation тестовый комплект TCK, что делало Harmony «не джавой» и приводило к куче юридических последствий.
Тем не менее, двигать вперёд Harmony было вполне можно, хоть и сложно. Это вызвало конфликт: основная опенсорсная организация в мире, Apache, вышла из оракловского JCP (Java Community Process), а компании вроде IBM, Red Hat и других поддержали бойкот Oracle, требуя открытости Java.
К счастью, ещё до покупки компанией Oracle, Sun уже провела некоторую работу по превращению Java в опенсорсный проект. В результате появился проект OpenJDK — это то, что люди сейчас подразумевают, когда говорят слово «Java». Он был уже более открытый и с более нормальными лицензиями (внутри GPL, с нюансами).
Когда Oracle пошла на попятную и дала зелёный свет тотальному опенсорсингу OpenJDK, IBM присоединилась к OpenJDK, а Harmony закрыли.
OpenJDK стал эдаким псевдостандартом: его код стал стандартной (и единственной реально работающей после смерти Excelsior Jet) реализацией Java-как-рантайма, а его опенсорсные процессы стали рельсами для дальнейшей разработки Java-как-проекта.
Немного технических подробностей. Eclipse OpenJ9, Azul Zing/Zulu, Amazon Corretto — всё это живые реализации, но это всё упражнения над форком кода OpenJDK со своими фишками. И все эти организации бегают на очень коротком поводке, любая попытка в индивидуальные суперинновации — нарушение стандарта Java — добро пожаловать к юристам.
Замечание для джавистов: после почившего Excelsior, из всех них самая свободная трактовка идеи — это OpenJ9. Это отдельная реализация JVM, исторически происходящая из IBM J9, компактного рантайма, специально созданного для максимально эффективного исполнения на девайсах пониженной мощности. А самая разумная для повседневного применения, особенно вместе со Spring — это Liberica JDK. Про Либерику — это уже некое моё личное мнение, я не стану спорить, если вы найдёте преимущества у кого-то ещё.
В свете общего охлаждения индустрии к Java как технологии, этого вполне хватило. Почему охлаждение? Ну там как бы другие разработчики технологий на месте не сидели и породили множество других рантаймов. Возможно, не настолько крутых, эффективных и удобных — но там можно было не иметь дела с Oracle, и в наше безумное время это уже само по себе фича!
Процесс опенсорсинга был непростым и неприятным. Основной когда-то фреймворк, Java Enterprise Edition, Oracle зажали на 10 лет. TCK для JavaEE отправился в опенсорс в 2017. И по моим ощущениям, это был какой-то поворотный момент, когда Oracle просто перестали считать Java серьёзным бизнесом и спустили всё на тормозах. Настолько вот антиобщественные у них настроения: или это бизнес, или это сообщество, третьего не дано.
Тем не менее, Oracle кошмарить разработчиков не бросила, просто по-другому. Иск между Google и Oracle по поводу использования Java API в Android длился около 11 лет и закончился победой Google.
Вообще всё существование языка Go — это просто работа над ошибками Google про то, как не иметь дело с Oracle. Изначальный Go — это по сути Java без дженериков версии 1.4 (весна 2003 года) с нормальным компилятором в нативный код (в Java появился в 2018 в составе GraalVM, но по сравнению с Go он пока почти всем проигрывает). Как язык программирования, Go всё ещё хуже Java, хотя они пытаются пройти по её пути — например, добавили дженерики и улучшили сборщик мусора. Тем не менее, вообще никакого Go могло бы и не быть, если бы Oracle зачем-то не начала это безумное судебное разбирательство на 10+ лет длиной.
Да, кто-то может сказать, что на самом деле Go — это боль от компиляции C++ и сложность управления зависимостями в больших кодовых базах, а совсем не Oracle. Я не буду спорить про то, что Go появился бы и без проблем с Java. Я поспорю только с тем, что Go в нашей ветке мультивселенной и Go в той ветке, где Java не было — один и тот же язык.
Казалось бы, добро победило? Не совсем. Упаси тебя бог где-то использовать слово Java без согласования. Половина Oracle — это не программисты, а юристы, и ты, вот лично ты — не Google. Ты не сможешь с ними судиться 10+ лет.
Я очень сильно люблю Java, и значительная часть моей жизни была с ней связана. И вся эта грязь очень сильно портит желание людей иметь с этим дело. Есть какой-то момент, когда крови и грызни собирается настолько много, что отмыться от неё очень сложно.
Тем не менее, сейчас Java занимаются крутые, адекватные люди. И, наверное, она придёт к успеху. Будем надеяться.
А вот с Microsoft этого так никогда и не произошло. Нет никакого общественного объединения или коммерческого фронта Войск Света и Добра, которое бы умудрилось взгреть все их тёмные практики. Впрочем, и C# не то чтобы какая-то жизненно важная штука, чтобы всем этим заниматься. Когда Java только появлялась, она была единственной и поэтому жизненно важной, а C# уже нет.
А приводит это к тому, что экосистема C# — с гулькин нос. У тебя есть несколько крутых фреймворков имени Microsoft, несколько известных опенсорсных проектов... и всё. Нет такого, что как в Java или JS/Node ты сидишь и час выбираешь, какую бы библиотеку из сотен использовать, чтобы сложить два числа.
Rust тоже зашкварился о похожие проблемы. В 2023 году черновик их политики вызвал огромное бурление масс. Например, они запрещали использовать слово «Rust» в названиях crates, библиотек, репозиториев, инструментов для Rust, доменов/поддоменов и софта на Rust без лицензии. Бурление масс было настолько сильным, что заставило Rust Foundation отменить это решение.
Но самое главное, что мы из этой истории узнали: в Rust сидят примерно такие же по майндсету чуваки, как в Oracle. Да, они уже научены горьким опытом Oracle и быстрее реагируют на мнение сообщества. Но в голове-то то же самое. Кто знает, что они придумают в следующий раз?
Для меня пока что островком свободы кажутся ECMAScript, also known as JavaScript (слово «JavaScript» принадлежит Oracle, там же слово «Java»!!!!!, поэтому джаваскрипт джаваскриптом называть нельзя. Я уже говорил, что Oracle — контора, которую очень сложно любить?).
Несмотря на доминирование Google/V8 и Apple/JavaScriptCore в деле высокопроизводительного JS, вся остальная экосистема — это огромная Вавилонская башня из проектов настолько разных и никак между собой не связанных, что ты как будто бы глядишь на мир из глаз Доктора Стренджа. И тем не менее, всё это работает, причём — работает вместе! Внутри одного веб-интерфейса или внутри одного бэкенда! На всё это действительно сложно как-то повлиять корпорациям и внедрить туда свой тоталитарный контроль.
Второй островок свободы — это C++. Тут есть два нюанса.
Первый: C++ разрабатывается большими плохими зубастыми компаниями. Но их МНОГО. И они разрабатывают всё это огромным комитетом, куда входят все. Если одна компания из многих начнёт выпендриваться, то её тут же сгрызут. Это чудесно, рынок в действии.
Второй: сама природа современного C++ эклектична. По сути, почти каждый участник сообщества может делать всё, что угодно, хоть в лес, хоть по дрова. И ему ничего за это не будет ни от каких юристов. Это суперважно: чтобы разработать фичу, нужно быть гениальным инженером — и это возможно. Бороться с Oracle и Microsoft в суде — невозможно. Это огромная разница.
А ещё нет какого-то человека, который бы знал «весь C++» и мог придумать идеально совместимую фичу. После чего объявить себя диктатором, который Знает Как Правильно Нужно. Это задаёт здоровый тон анархизма.
Для меня это самое главное. Не знаю, как вам, а для меня наличие диктатуры, какого-то единого Великого Верховного Магистра, который Знает Как Надо — это настолько ужасно и чудовищно, что перекрывает примерно любые другие плюсы. Подчиняться диктатуре можно только если альтернатива — прозябание или смерть. Диктатура противна всему человеческому, а диктаторов совершенно естественно ненавидят.
И всем был бы хорош C++: и крутых фичей у него намного больше, чем в любом из популярных языков (включая C#). И разработка его ведётся круто и демократично. И работает он быстро. НО СИНТАКСИС — ПОЛНЫЙ КОШМАР. До изобретения Perplexity мы даже не могли нормально загуглить программу на C++ — гугл воспринимал это как мешанину из спецсимволов.
И вот какую мысль хочется вкинуть под конец. Мы вступаем в эпоху, в которой люди перестают писать код на Языках Высокого Уровня. Теперь всё за нас пишут роботы.
Роботу, в целом, всё равно, на чём писать. Языки типа Java и C#, основная фича которых была в том, что писать на них было комфортно и удобно, — должны потерять приоритет и уйти в тень, в тот очень небольшой загончик софта, который всё ещё будут писать люди. Банки, медицина, космонавтика — всё это будет на Java. Везде, где торгуют не столько софтом, сколько рисками и страхом. И там людям придётся продолжать мириться с загонами Oracle.
А вот все остальные в скором времени будут писать программы на обычном английском языке. А потом будет Нейролинк, и языки станут не нужны.
В какой из «языков высокого уровня» превратит нейросеть вашу спецификацию, зависит уже не от удобства этого ЯВУ для использования, а от конкретных технических характеристик: насколько качественный код генерит нейросеть, как рантайм языка управляет ресурсами, насколько быстра компиляция, насколько быстрые итерации разработки в целом.
И может оказаться, что языки будущего — это не Go и не Java, а всеми забытые C++/C. Может быть, даже ассемблер. Может быть, даже перфокарты — не обычные, а квантовые. Хорошая новость: никакой из этих языков вам не нужно будет знать сильнее, чем вы сейчас знаете ассемблер и Си. Разработчикам каких-то очень конкретных специальностей, типа «перформанс-инженер», наверное, нужно будет очень изредка забежать и поправить какой-то сложный случайный баг. Но для всех остальных всё напишет нейросеть, и это чудесно.
Для соблюдения формальной корректности нужно явно сказать, что по состоянию на начало 2026 года утверждение «роботу всё равно, на чём писать» — спорное и скорее неверное. Качество генерации кода сильно зависит от языка (объём тренировочных данных, типизация как костыли для LLM, тулинг для верификации). Например, при написании кода на C у робота точно те же проблемы, что и у человека — он не может уследить за потоком памяти, отчего пишет совершенно неработающую ерунду. Даже Claude Code, даже Grok Super Heavy. Но ситуация быстро меняется по мере того, как корпорации вкладывают триллионы денег в датацентры, позволяющие делать всё более мощный и глубокий анализ.
Всё это заслуживает отдельного разговора, но размывает скоуп статьи. Напишу отдельно.
И самое главное: написание кода через AI на разговорном языке — это настоящая свобода. Разговорный язык не принадлежит какой-то коммерческой компании, которая заставила бы вас говорить только то, что ей нужно. Сделать хорошее техническое решение — сложно, но не продолбать свою свободу может оказаться еще сложнее.
Итого: учитесь писать на английском/русском/китайском и внятно излагать свои мысли. Имейте свои мысли, чтобы было чего излагать. В самое ближайшее время это понадобится.
Источник


