четверг, 7 мая 2020 г.

[prog.c++.fantasy] А что, если кто-то возьмет и форкнет C++?

И будет развивать свой диалект независимо от комитета. Причем вменяемый диалект, с преферансом и куртизанками прямо сейчас, а не после принятия C++26 или C++29?

Звучит вроде бы дико. Но вот мне давеча попалась ссылка на экспериментальный язык Circle. Это форк C++17 с дополнительными возможностями по метапрограммированию, но не только. Поскольку сейчас в C++ мне больше всего не хватает паттерн-матчинга для удобной и надежной работы с optional, variant и expected, то я пробежался по описанию того, что в Circle сделано в плане поддержки паттерн-матчинга.

И знаете что? Выглядит впечатляюще.

Вот пример:

#include <cstdio>

int main() {

  struct foo_t {
    int x, y, z;
  };
  foo_t obj { 345 };

  int Z = 6;
  @match(obj) {
    // Test an expression against the initializer.
    [_, _, 3]    => printf(".z is 3\n");  // structured binding
    [  .z: 4]    => printf(".z is 4\n");  // designated binding

    // Is Z a test/expression or a binding? If the clause fails, it's got to
    // be a test.
    [_, _, Z]    => printf("Z must be a binding\n");
    _            => printf("Z must be an expression\n");
  };

  return 0;
}

И вот какая мысль внезапно посетила мою голову: а вот что, если автора Circle возьмет "под крыло" какой-нибудь крупный игрок на рынке? Типа Facebook-а, Amazon-а, Bloomberg-а или IBM... И проект превратится из усилий энтузиаста-одиночки во вполне себе живой OpenSource продукт с солидной финансовой поддержкой за плечами.

Понятно дело, что C++ силен своей совместимостью и возможностью, при необходимости, перевести на свеживе стандарты даже старые кодовые базы. И поэтому форки C++ как бы обречены, потому что мало кому хочется потерять это свойство C++.

Но вот если форк обещает совместимость с C++17 (т.е. старые кодовые базы на него перетащить не проблема) и, при этом, более оперативное и гладкое развитие в будущем? Развитие под управлением "мягкого диктатора", а не в результате компромиссов комитета? Когда вещи, типа метапрограммирования, паттерн-матчинга и дешевых исключений в нем появляются с темпом в 6-9 месяцев, а не спустя 4-5-6 лет обсуждений в комитете?

Лично я сильно сомневаюсь, что найдется кто-то, кто вложится в поддержку Circle. Но, думаю, если бы такой нашелся, то перспективы бы открылись интересные.

7 комментариев:

Stas Mischenko комментирует...

Наверное просто надо, чтобы языком начали пользоваться, необязательно крупные конторы. Революция может происходить и снизу.

eao197 комментирует...

Я вижу это так: мелкая организация гораздо сильнее зависит от наличия стабильного и кем-то поддерживаемого инструмента, чем крупная. Грубо говоря, если компания в 10 разработчиков заложится на какой-нибудь zig и разработка zig заглохнет, то продукт маленькой компании окажется на грани жизни и смерти. Наверняка у этих 10 разработчиков не будет ресурсов на самостоятельное сопровождение оставшегося zig-а.

А вот крупная компания вполне может заложиться на экспериментальный проект, поскольку даже если этот проект заглохнет, то у крупной компании либо будут ресурсы на его возобновление собственными силами, либо они могут просто списать написанный с его помощью код в убыток (или переписать все на другом языке).

У мелкой компании таких вариантов нет в принципе.

Stas Mischenko комментирует...

Любой продукт, если он действительно нужен людям, в состоянии выжить. Если условным инструментом пользуется только одна компания, то, да, шансы не велики. Но если вокруг продукта сложилось комьюнити, то шансы есть. Да, никто не хочет в одиночку на себе что-то ташить. Но я и не говорю в одиночку. Любому проекту помимо "технаря" нужен ещё и человек, который умеет общаться с людьми, и, например, организовать тот же краудфандинг. То есть, грубо говоря, эпл случиться, если у вас есть и Джобс, и Возняк.

eao197 комментирует...

@Stas Mischenko

> Любой продукт, если он действительно нужен людям, в состоянии выжить.

Мне вот интересно, вы это сейчас говорите на основании собственного опыта по продвижению какого-то продукта?

> То есть, грубо говоря, эпл случиться, если у вас есть и Джобс, и Возняк.

Плюс некая толика везения. Т.к. и Джобсов и Возняков много, но известными становятся единицы из них.

Stas Mischenko комментирует...

>Мне вот интересно, вы это сейчас говорите на основании собственного опыта по продвижению какого-то продукта?
Нет, у меня нет своего продукта. Но речь ведь не идёт о продвижении продукта с целью получения выгоды. Речь идёт просто об установлении контакта с людьми, для которых вы что-то делаете, а вовсе не о комерции.
>Плюс некая толика везения. Т.к. и Джобсов и Возняков много, но известными становятся единицы из них.
А вы хотите дорогу из "жёлтого кирпича"? Естественно будет очень много неудач. Но если вы к этому не готовы, то лучше и не начинайте.

eao197 комментирует...

> А вы хотите дорогу из "жёлтого кирпича"?

Нет, всего лишь хочу сказать, что вовсе не обязательно "случится эппл, если у вас есть Джобс и Возняк".

Stas Mischenko комментирует...

Я не верю в везение. Я согласен с Энштейном - Бог не играет в кости. Тут речь скорее об интуиции. Когда вы точно знаете, что поступаете правильно, хотя всё против вас. Да, это не объяснимо, но у Джобса получилось. Догадываюсь, что с вопросами "веры" и "метафизики" я не по адресу, так что не судите строго.