Экономика и философия языков программирования
Привет. Недавно поступил вот такой вопрос от читателей:
Никита, привет! А ты слышал про язык Hare? https://harelang.org
Если да, можешь мыслями поделиться пожалуйста)
И мне есть что сказать, но не только по этому языку, но вообще про языки программирования. Поэтому текст будет большой и немного философским нежели техническим, поэтому, если нужны технические детали конкретно языка Hare
то вам точно не сюда.
Что нужно для успешности языка
Давайте в начале поразмышляем над тем, что нужно, для успешности языка.
Идея
Первое, что нужно это идея aka killer feature, то есть, что-то (какой-то новый подход или пересборка старого), что даст выгодное отличие от конкурентов. Я бы даже пошел дальше и выразился следующим образом, что недостаточно только одной фишки или одной идеи. В языке который претендует на хоть какую-то популярность должно быть что-то, что изменит индустрию. Изменит то, как мы вообще программируем, то есть, должен быть сразу замах на масштаб, иначе ничего не выйдет. Давайте посмотрим на примеры, как положительные, так и отрицательные.
Go
Go появился в 2009 как ответ на боль конкурентного программирования. Те кто в то время программировал что-то конкуретное на Java или C++ поймут меня, остальным придется поверить мне на слово. Go показал как можно решать привычные задачи иным более легким способом. Сейчас, 15 лет спустя, можно точно констатировать факт, что Go поменял индсутрию, даже так, он предвосхетил проблемы индустрии. Что уж говорить, что даже в Java дали ход Project Loom.
Rust
Rust появился как ответ на сложность разработки больших проектов на C++ и проблему многопоточного программирования. И тут тоже можно сказать, что Rust еще не поменял, но уже начал менять индустрию. Я краешком глаза смотрю за новосятми из мира С++, но там начали появляться все чаще темы “а как бы нам сделать С++ более безопасным”/“а может как-то внести подход с lifetime и borrow checker-ом в какое-то подмножество С++”. То есть Rust, которому до популярности еще очень далеко, уже начал воздействовать на другие языки.
D
Go и Rust это были хорошие примеры (почему так случилось мы разберем ниже), а вот отрицательный пример. Язык программирования D пытался быть просто “лучше чем С++”, но он не менял парадигму программирования. Он и поддерживал GC и в тоже время это было опционально. Тут тебе и ООП и фнукциональный подход и сразу системный и скриптовый… Короче D пытался быть везде и всюду, напихав в себе кучу вещей, но нигде не был передовым и лучшим.
Но при этом всем в нем были интересные, прикольные идеи. Вот небольшой список можете ознакомиться https://bradley.chatha.dev/blog/dlang-propaganda/features-of-d-that-i-love/
Инфраструктура
Отлично, у нас есть какая-то супер гениальная идея, которая перевернет всю индустрию и заставит все корпорации перейти на наш язык. Все, этого достаточно? Как бы не так. Сейчас язык это не только компилятор или виртуальная машина, но:
- документация
- LSP сервер
- дебагер
- удобный пакетный менеджер
Перечисленный список это гигиенический минимум того, что должно быть вокруг языка, сейчас в 2025 году. Прошли те времена, когда программисты довольствовались лишь подсветкой синтаксиса, теперь без автодополнения, go to definition, go to reference никто даже не сядет за новый язык программирования.
DevRel
Developer Relations или по простому – пиар. На сколько бы прорывным язык не был, на сколько бы хорошо мы не построили вокруг него инфрасутруктуру, на сколько бы он быстрым, безопасным и легким в освоении не был – без пиара ничего не получится. Увы, такова жизнь. Поэтому для успешного языка важен индекс его цитируемости. Как сказал Страуструп
There are only two kinds of languages: the ones people complain about and the ones nobody uses.
То есть нужно поднимать активность на reddit и форумах. Выступать на митапах и конференциях. Да просто ходить в бар с хедлайнерами индустрии. И каждый раз рассказывать про язык, проталкивать и пиарить.
И на все это нужные ресурсы, нужные люди, нужны силы, потому что в одиночку все это не сделать (в какие-то более или менее адекватные временные сроки), ибо придет какой-нибудь Амазон и заберет все ваши идеи себе. В итоге сводится все к деньгам! Чтобы разработать успешный язык программирования нужны деньги. Об этом мы и поговорим дальше.
Экономика языков программирования
И так, в своих рассуждениях мы пришли к тому, что для разработки нового языка программирования нужны деньги. Так давайте поговорим про экономику языков программирования. Деньги же не появляются из воздуха… верно же? Откуда могут прийти деньги:
- корпорации – язык может выйти из недр компании: Go, Rust, Kotlin тому явные примеры
- патронаж – какой-то крупный спонср (aka корпорация). Напрмиер, Python
- донаты – очень похоже на патронаж, но у языка нет мажорного спонсора, вместо этого есть куча небольших. Тут на ум приходит Zig
- личные финансы – Hare
Тут вы можете вспомнить Scala, который вроде бы как не относится ни к одному из вариантов, но я такие языки отношу в корзину “корпорации”, ибо ничего не меняется, если вместо копорации вам за разработку платит какой-то универ или лаборатория. А ничего не меняет это, потому что язык будет развиваться в том направлении, куда нужно мажоритарию.
Для дальнейшего повествования я сожму представленные четрые типа в два: корпоративные и не корпоративные деньги. Их и разберем.
Корпоративные
Потранаж корпорации это читкод для разработчика языка программирования. Вы сразу получаете прогнозируемый доход, возможность использовать штатных юристов, бухгалтеров. А если корпорация еще какие-то свои продукты пишет на вашем языке, то это практически как IDDQD
. В этот момент язык автоматически получает цитируемость, обсуждаемость, в выступлениях на конференциях упоминают его и это все ведет к притоку новых людей в сообщество.
Если посмотреть на новые языки программирования, которые стали более или менее популярны (а под популярностью я беру то, что на языке начинают писать разные компании из разных сфер), то что мы видим:
- Go – Google
- Rust – Mozilla
- Swift – Apple
- Kotlin – Google + JetBrains (да, именно в таком порядке. Без Google Kotlin бы никогда не достиг такой популярности)
- TypeScript – Microsoft
Не корпоративные
А вот если деньги не корпоративные, то ты как разработчик попадешь на уровень nightmare
. Теперь помимо разработки самого языка тебе нужно думать и о его пиаре, то есть, стать пиарщиком и маркетологом, и о бухгалтерии, ты же не один работаешь и хорошо бы core составу платить что-то, и юристом, когда задумаешься о логотипе, торговой марке и прочее.
Давайте посмотрим на список популярных языков, которые долгое время жили не на корпоративные деньги (ибо так или иначе в итоге, если язык станет популярным, он перейдет под крыло одной из корпораций):
А их нет! Всякие Zig, D, Julia, R, Clojure это на столько нишевые языки, что если завтра со всех компьютеров, из всей сети удалится их компилятор/интерпретатор или может быть даже весь код написанный на них, то мир не остановится, никто этого даже не заметит (я утрирую конечно здесь, но мысль вы поняли).
Hare
Теперь, пройдя весь этот путь и зная что нужно для успешного языка программирования давайте посмотрим на Hare.
Hare – это язык нацеленный на системное/низкоуровневое программирование. Его главные конкруенты это C, C++, Zig и Rust. Главная идея у Hare это “сделать чуть более безопасный С”, не современный C, как например у Zig, а именно чуть безопасный.
Hare абсолютно наследует аскетизм C и следует правилу “программист знает что делает, дай ему полную свободу”. Поэтому в нем нет ни пакетного менеджера, ни LSP.
Если проанализировать философию языка, то получается, что он не привносит ничего нового и не меняет то как мы программируем. Он как D (я не просто так привел в пример именно этот язык в начале статьи), который пытался быть лучшей версией С++. Где сейчас D? Вот там же будет и Hare. Местечковый, локальный язык, на котором пишу полторы калеки. Ибо не понятно зачем программисту на С переходит на Hare, а не Zig? В котором и тесты как часть языка и есть мощная идея с comptime и наследование экосистемы LLVM и пакетный менеджер.
Знаете, мне больше нечего сказать про Hare, потому что в языке нет ничего, что можно было бы обсудить. Да и никакие большие деньги за ним не стоят. А обсуждать аскетизм… в этом конечно же есть шарм, но зачем мне Hare если есть C? Поэтому Hare это проходной язык, коих было сотни, если не тысячи.
Инвестируйте время и силы лучше в C или Rust, если так хочется выжимать каждый такт и экономить каждый байт.
P.S.
Плохо это или хорошо, но в современной разработке вырастить язык (который бы мог претендовать на популярность) вне корпорации или не под ее крылом невозможно. Просто в силу того, что сейчас язык программирвоания это сложный, маштабный проект, который требует от owner-а быть экспертом во всем от программирования и маркетинга, до бухгалтерии и юриспруденции. Что фактически невозможно.
Это можно сравнить с покорением космоса. Если раньше страны по одиночке (окей относительно небольшими блоками) могли запускать свои комсические станции – например то как СССР запустил МИР, то сейчас это на столько сложный и машстабный проект, что ни одна страна в мире не сможет его потянуть в одиночку.
Вариант с написал компилятор -> записал на дискетки -> разослал по университетам
уже не работает 😔 (это отсылка к CFront, первой реализации C++).
P.P.S
Если вы только начинаете свой путь в разработке, то есть, у вас опыты где-то между 0 и 5 годами, то не распыляйтесь на новые хайповые языки про который популярный ютубер выступил видосик, или какой-то реддитер написал блог пост. Концентируйтесь на том, что принесет вам работу и будет более или менее перспективно, потому что нет ничего хуже потратить первые свои годы в индустрии учясь чему-нибудь и как-нибудь. Ибо потом вы обнаружите себя просто не конкурентно способным на рынке.
Если вам понравился матерал, то подписывайтесь на мой Telegram канал.