0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>24 окт 2022</li>
2
<ul><li>24 окт 2022</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>В Google создали очередной язык программирования - разбираемся, где его планируют использовать и может ли он стать популярным.</p>
4
</ul><p>В Google создали очередной язык программирования - разбираемся, где его планируют использовать и может ли он стать популярным.</p>
5
<p>Журналист, коммерческий автор и редактор. Пишет про IT, цифровой маркетинг и бизнес. Сайт:<a>darovska.com</a>.</p>
5
<p>Журналист, коммерческий автор и редактор. Пишет про IT, цифровой маркетинг и бизнес. Сайт:<a>darovska.com</a>.</p>
6
<p><strong>Анонимный эксперт</strong></p>
6
<p><strong>Анонимный эксперт</strong></p>
7
<p>Инженер в инфраструктуре Google. Не занимается языками напрямую, но поддерживает огромную кодовую базу на C++. Выступал на <a>CppCon</a>, знает подробности о<a>Carbon</a>. Согласился рассказать об этом языке анонимно и без внутренних деталей.</p>
7
<p>Инженер в инфраструктуре Google. Не занимается языками напрямую, но поддерживает огромную кодовую базу на C++. Выступал на <a>CppCon</a>, знает подробности о<a>Carbon</a>. Согласился рассказать об этом языке анонимно и без внутренних деталей.</p>
8
<p>Carbon - это новый язык общего назначения от разработчиков Google. Создаётся как альтернатива C++, а его исходники уже можно полистать на <a>GitHub</a>. На мой взгляд, было две причины для создания Carbon. Первая - идейная, а вторая - бизнесовая.</p>
8
<p>Carbon - это новый язык общего назначения от разработчиков Google. Создаётся как альтернатива C++, а его исходники уже можно полистать на <a>GitHub</a>. На мой взгляд, было две причины для создания Carbon. Первая - идейная, а вторая - бизнесовая.</p>
9
<p><strong>Идейная причина.</strong>В комьюнити считают, что в C++ уже набралось достаточно легаси, а потому его довольно тяжело развивать и он с каждым днём всё больше похож на гигантскую мешанину новых и старых элементов.</p>
9
<p><strong>Идейная причина.</strong>В комьюнити считают, что в C++ уже набралось достаточно легаси, а потому его довольно тяжело развивать и он с каждым днём всё больше похож на гигантскую мешанину новых и старых элементов.</p>
10
<p><strong>Бизнес-причина.</strong>В Google всегда активно использовали C++: в книге<a>Software Engineering at Google</a>от 2020 года говорится о 250 миллионах строк, а с момента выхода книги это число значительно выросло. Логично, что Google всегда был одним из самых крупных амбассадоров экосистемы C++ (например, формат<a>Clang-Tidy</a>придумали и развивали именно в Google) и вложил в развитие "плюсов" значительное немало денег и ресурсов, а также долгое время состоял в комитете (рабочей группе) по C++.</p>
10
<p><strong>Бизнес-причина.</strong>В Google всегда активно использовали C++: в книге<a>Software Engineering at Google</a>от 2020 года говорится о 250 миллионах строк, а с момента выхода книги это число значительно выросло. Логично, что Google всегда был одним из самых крупных амбассадоров экосистемы C++ (например, формат<a>Clang-Tidy</a>придумали и развивали именно в Google) и вложил в развитие "плюсов" значительное немало денег и ресурсов, а также долгое время состоял в комитете (рабочей группе) по C++.</p>
11
<p>Google всегда хотел развивать новые возможности языка, но постоянно возникали какие-то проблемы и к общему знаменателю с остальными участниками прийти не получалось. Например, корпорация предлагала заменить unordered_map на flat_hash_map, однако сделать это было практически невозможно, потому что существует скомпилированный ещё 20 лет назад код, который пока ничем не заменить. И подобные препятствия попадались всё чаще.</p>
11
<p>Google всегда хотел развивать новые возможности языка, но постоянно возникали какие-то проблемы и к общему знаменателю с остальными участниками прийти не получалось. Например, корпорация предлагала заменить unordered_map на flat_hash_map, однако сделать это было практически невозможно, потому что существует скомпилированный ещё 20 лет назад код, который пока ничем не заменить. И подобные препятствия попадались всё чаще.</p>
12
<p>В итоге, сколько бы Google ни старался что-то менять, практически ничего не получалось. А что происходит, когда какая-то система стагнирует? Если у того, кто недоволен состоянием системы, достаточно сил, он просто разрабатывает аналоги (или это делают конкуренты). Так и появился Carbon - следствие бизнес-потребности Google в развитии C++: не смотреть на код 40-летней давности, а апдейтить его под свои нужды. С комьюнити "плюсов" договориться о развитии и поддержке нового языка не вышло, поэтому компания пытается создать что-то своё.</p>
12
<p>В итоге, сколько бы Google ни старался что-то менять, практически ничего не получалось. А что происходит, когда какая-то система стагнирует? Если у того, кто недоволен состоянием системы, достаточно сил, он просто разрабатывает аналоги (или это делают конкуренты). Так и появился Carbon - следствие бизнес-потребности Google в развитии C++: не смотреть на код 40-летней давности, а апдейтить его под свои нужды. С комьюнити "плюсов" договориться о развитии и поддержке нового языка не вышло, поэтому компания пытается создать что-то своё.</p>
13
<p>Кстати, похожая история была у Apple. У неё вообще свой путь: раньше в компании активно использовали C++, а теперь заменили его на Swift. Хотя и там всё до сих пор сложно - операционные системы продолжают писать на C++, а на Swift создают лишь клиентские приложения. Возможно, Google тоже пытается двигаться в эту сторону.</p>
13
<p>Кстати, похожая история была у Apple. У неё вообще свой путь: раньше в компании активно использовали C++, а теперь заменили его на Swift. Хотя и там всё до сих пор сложно - операционные системы продолжают писать на C++, а на Swift создают лишь клиентские приложения. Возможно, Google тоже пытается двигаться в эту сторону.</p>
14
<p>А прежде чем начнём разбираться, кому же пригодится новый язык и что у него под капотом, дам небольшой дисклеймер:</p>
14
<p>А прежде чем начнём разбираться, кому же пригодится новый язык и что у него под капотом, дам небольшой дисклеймер:</p>
15
<p>Учить Carbon пока довольно рискованно. Если вы хотите выучить что-то новое, пусть лучше это будет Rust. Carbon есть смысл учить, если всё остальное вы уже знаете. Однако даже в этом случае важно понимать, что язык ещё будет меняться сотни раз, а текущая версия будет иметь мало общего с тем, что пойдёт в продакшен.</p>
15
<p>Учить Carbon пока довольно рискованно. Если вы хотите выучить что-то новое, пусть лучше это будет Rust. Carbon есть смысл учить, если всё остальное вы уже знаете. Однако даже в этом случае важно понимать, что язык ещё будет меняться сотни раз, а текущая версия будет иметь мало общего с тем, что пойдёт в продакшен.</p>
16
<p>Целевая аудитория Carbon - большие компании. По-моему, была идея привлечь NVIDIA, Bloomberg и другие компании, которые вынуждены пользоваться C++, но устали от него и постоянной борьбы с комитетом за новые фичи.</p>
16
<p>Целевая аудитория Carbon - большие компании. По-моему, была идея привлечь NVIDIA, Bloomberg и другие компании, которые вынуждены пользоваться C++, но устали от него и постоянной борьбы с комитетом за новые фичи.</p>
17
<p>Такие компании не любят C++, потому что в нём регулярно возникают<strong>инциденты безопасности</strong>(security incidents). И менеджмент каждый раз спрашивает, что опять произошло, интересуется, можно ли наконец начать писать код без багов. А разработчики отвечают, что C++ так устроен - по-другому писать на нём просто невозможно.</p>
17
<p>Такие компании не любят C++, потому что в нём регулярно возникают<strong>инциденты безопасности</strong>(security incidents). И менеджмент каждый раз спрашивает, что опять произошло, интересуется, можно ли наконец начать писать код без багов. А разработчики отвечают, что C++ так устроен - по-другому писать на нём просто невозможно.</p>
18
<p>В итоге всё пришло к тому, что сегодня выигрыш от производительности C++ перестал покрывать потери от инцидентов безопасности. Кстати, полагаю, что это как раз та причина, по которой Rust должен обойти C++ в популярности, - ведь в Rust намного меньше багов и security incidents.</p>
18
<p>В итоге всё пришло к тому, что сегодня выигрыш от производительности C++ перестал покрывать потери от инцидентов безопасности. Кстати, полагаю, что это как раз та причина, по которой Rust должен обойти C++ в популярности, - ведь в Rust намного меньше багов и security incidents.</p>
19
<p>Итак, Google хотел привлечь к работе над Carbon крупные компании. Но что же вышло? IBM, кажется, не выразила заинтересованности, Microsoft пока тоже не горит желанием оказывать какую-то особую поддержку Carbon. Сотрудники NVIDIA, Bloomberg, Adobe поддержали идеи Carbon лишь в частном порядке.</p>
19
<p>Итак, Google хотел привлечь к работе над Carbon крупные компании. Но что же вышло? IBM, кажется, не выразила заинтересованности, Microsoft пока тоже не горит желанием оказывать какую-то особую поддержку Carbon. Сотрудники NVIDIA, Bloomberg, Adobe поддержали идеи Carbon лишь в частном порядке.</p>
20
<p>Большим компаниям вообще тяжело полностью слезть с иглы C++ - именно поэтому в Google так активно пытаются проложить мостик между C++ и Carbon.</p>
20
<p>Большим компаниям вообще тяжело полностью слезть с иглы C++ - именно поэтому в Google так активно пытаются проложить мостик между C++ и Carbon.</p>
21
<p>Этот мостик сможет брать старые файлы на C++ и автоматически импортировать их так, что ими можно будет пользоваться из Carbon. Скорее всего, мостик будет работать далеко не во всех случаях и иметь много ограничений, но главное, что он будет.</p>
21
<p>Этот мостик сможет брать старые файлы на C++ и автоматически импортировать их так, что ими можно будет пользоваться из Carbon. Скорее всего, мостик будет работать далеко не во всех случаях и иметь много ограничений, но главное, что он будет.</p>
22
<p>Пока в Google пишут код на обоих языках. Кардинально ситуация может измениться, если Google введёт у себя запрет на написание нового кода на C++. Только в этом случае начнётся медленный, но верный процесс переезда кода, старых библиотек и проектов на Carbon. Думаю, что в сумме процесс этот займёт лет десять, не меньше.</p>
22
<p>Пока в Google пишут код на обоих языках. Кардинально ситуация может измениться, если Google введёт у себя запрет на написание нового кода на C++. Только в этом случае начнётся медленный, но верный процесс переезда кода, старых библиотек и проектов на Carbon. Думаю, что в сумме процесс этот займёт лет десять, не меньше.</p>
23
<p>Есть такой известный в кругах C++ человек -<a>Чендлер Каррут</a>. Он много сделал для<a>LLVM</a>и <a>Clang</a>, но в то же время стремился совершить какой-то качественный карьерный переход. Таким переходом для него стала работа над новым языком Carbon, который он впервые представил миру в июле 2022 года на конференции<a>CppNorth</a>:</p>
23
<p>Есть такой известный в кругах C++ человек -<a>Чендлер Каррут</a>. Он много сделал для<a>LLVM</a>и <a>Clang</a>, но в то же время стремился совершить какой-то качественный карьерный переход. Таким переходом для него стала работа над новым языком Carbon, который он впервые представил миру в июле 2022 года на конференции<a>CppNorth</a>:</p>
24
Видео презентации нового языка<p>Чендлер и сам довольно талантливый инженер, и в свою команду он взял очень сильных ребят, которые давно занимаются языками программирования. Сейчас в этой команде около пяти основных участников: все очень серьёзные инженеры, и почти все успели поработать над Clang.</p>
24
Видео презентации нового языка<p>Чендлер и сам довольно талантливый инженер, и в свою команду он взял очень сильных ребят, которые давно занимаются языками программирования. Сейчас в этой команде около пяти основных участников: все очень серьёзные инженеры, и почти все успели поработать над Clang.</p>
25
<p>Например,<a>Ричард Смит</a>принимал участие в разработке стандарта C++ и долгое время отвечал за документацию, а Джош Левенберг был идейным вдохновителем переезда Google на Clang- и LLVM-инфраструктуру.</p>
25
<p>Например,<a>Ричард Смит</a>принимал участие в разработке стандарта C++ и долгое время отвечал за документацию, а Джош Левенберг был идейным вдохновителем переезда Google на Clang- и LLVM-инфраструктуру.</p>
26
<em>Кадр: code: dive conference / YouTube</em><p>Carbon - язык с более удобным, чем в C++, синтаксисом. Google, по сути, убирает всё "плюсовое" легаси, а также оказывает пользователям поддержку при переезде с C++ на свой язык. Дело в том, что C++ как экосистема совершенно против переездов - даже на уровне идеологии, а Carbon как раз будет поддерживать эту возможность. В этом одна из ключевых фишек нового языка.</p>
26
<em>Кадр: code: dive conference / YouTube</em><p>Carbon - язык с более удобным, чем в C++, синтаксисом. Google, по сути, убирает всё "плюсовое" легаси, а также оказывает пользователям поддержку при переезде с C++ на свой язык. Дело в том, что C++ как экосистема совершенно против переездов - даже на уровне идеологии, а Carbon как раз будет поддерживать эту возможность. В этом одна из ключевых фишек нового языка.</p>
27
<p>Ещё одно преимущество Carbon - в регулярных обновлениях. Здесь не будет таких проблем, как вокруг<a>ABI Compatibilities</a>, или бинарной совместимости.</p>
27
<p>Ещё одно преимущество Carbon - в регулярных обновлениях. Здесь не будет таких проблем, как вокруг<a>ABI Compatibilities</a>, или бинарной совместимости.</p>
28
<p>Что это за проблема: в C++ и в C есть давняя история, связанная с обратной совместимостью. Приложения, написанные на новых версиях языка, обязаны корректно работать со старыми версиями библиотек - это один из приоритетов в C++. Однако именно из-за этого полным ходом идёт стагнация языка: в языке куча фич, которые двадцать лет назад были ОК и выглядели вполне современно, а на новом железе просто неэффективны. Мы вроде как можем зарелизить новую фичу взамен старой, чтобы она работала гораздо лучше, но у нас есть ABI Compatibilities и мы обязаны делать фичи такими, чтобы они работали и на старом железе.</p>
28
<p>Что это за проблема: в C++ и в C есть давняя история, связанная с обратной совместимостью. Приложения, написанные на новых версиях языка, обязаны корректно работать со старыми версиями библиотек - это один из приоритетов в C++. Однако именно из-за этого полным ходом идёт стагнация языка: в языке куча фич, которые двадцать лет назад были ОК и выглядели вполне современно, а на новом железе просто неэффективны. Мы вроде как можем зарелизить новую фичу взамен старой, чтобы она работала гораздо лучше, но у нас есть ABI Compatibilities и мы обязаны делать фичи такими, чтобы они работали и на старом железе.</p>
29
<p>Конечно, можно маркировать код - это старая версия, это новая версия (как в HTML или CSS делают вёрстку под разные браузеры и устройства и помечают это в коде), однако разработчиков-плюсовиков практически невозможно вдохновить на такую работу - к тому же комитет C++ не хотел делать форк стандартной библиотеки и развивать несколько её версий параллельно.</p>
29
<p>Конечно, можно маркировать код - это старая версия, это новая версия (как в HTML или CSS делают вёрстку под разные браузеры и устройства и помечают это в коде), однако разработчиков-плюсовиков практически невозможно вдохновить на такую работу - к тому же комитет C++ не хотел делать форк стандартной библиотеки и развивать несколько её версий параллельно.</p>
30
<p>При этом гиганты вроде Google, "Фейсбука"* и Adobe утверждают, что уже прошли ту эру C++, когда приложения собираются с нуля, а потому кейсов, в которых необходима обратная совместимость, очень мало. Хотя в других компаниях, которые сидят на экосистеме C++, такая совместимость может требоваться очень часто.</p>
30
<p>При этом гиганты вроде Google, "Фейсбука"* и Adobe утверждают, что уже прошли ту эру C++, когда приложения собираются с нуля, а потому кейсов, в которых необходима обратная совместимость, очень мало. Хотя в других компаниях, которые сидят на экосистеме C++, такая совместимость может требоваться очень часто.</p>
31
<p>Комитет на фоне этого вопроса даже сильно разругался: да, игнорировать обратную совместимость невозможно, но при этом надо как-то развивать язык и идти вперёд, а что делать - всё равно непонятно. В общем, это сложный философский вопрос - и Google ответил на него с помощью Carbon. Дело в том, что языки типа Rust и Carbon никогда не обещают такой "вечной" обратной совместимости - и это заложено в них на уровне философии. Развитие - важнее.</p>
31
<p>Комитет на фоне этого вопроса даже сильно разругался: да, игнорировать обратную совместимость невозможно, но при этом надо как-то развивать язык и идти вперёд, а что делать - всё равно непонятно. В общем, это сложный философский вопрос - и Google ответил на него с помощью Carbon. Дело в том, что языки типа Rust и Carbon никогда не обещают такой "вечной" обратной совместимости - и это заложено в них на уровне философии. Развитие - важнее.</p>
32
<p>Подобную проблему уже решают в геймдеве. Каждый из нас мог сталкиваться с патчами к играм. Например, выходили регулярные патчи к Cyberpunk 2077 - и через шесть месяцев игра под капотом фактически становилась совершенно другой. При этом после каждого патча все ваши "сохранялки" должны продолжать работать, а значит, мигрироваться.</p>
32
<p>Подобную проблему уже решают в геймдеве. Каждый из нас мог сталкиваться с патчами к играм. Например, выходили регулярные патчи к Cyberpunk 2077 - и через шесть месяцев игра под капотом фактически становилась совершенно другой. При этом после каждого патча все ваши "сохранялки" должны продолжать работать, а значит, мигрироваться.</p>
33
<p>К тому же бывают и каскадные изменения - когда игрок полгода не качал обновления, а потом разом перескочил условно с версии 1.01. на 1.06. Да, языки программирования - это более открытые сущности, чем игры, но тоже вполне можно придумать механику, при которой язык не отстанет от развития железа, будет приятным, эффективным и даже, не побоюсь этого слова, модным.</p>
33
<p>К тому же бывают и каскадные изменения - когда игрок полгода не качал обновления, а потом разом перескочил условно с версии 1.01. на 1.06. Да, языки программирования - это более открытые сущности, чем игры, но тоже вполне можно придумать механику, при которой язык не отстанет от развития железа, будет приятным, эффективным и даже, не побоюсь этого слова, модным.</p>
34
Офис Google в Сиднее<em>Фото: пресс-служба Google</em><p>Carbon - язык программирования с приятным синтаксисом и фишками, которые зарекомендовали себя в других языках в последние несколько десятков лет. Вообще, вся IT-индустрия живёт всего лет семьдесят, и сорок лет из них - с C++. Поэтому, конечно же, синтаксис нужно регулярно обновлять.</p>
34
Офис Google в Сиднее<em>Фото: пресс-служба Google</em><p>Carbon - язык программирования с приятным синтаксисом и фишками, которые зарекомендовали себя в других языках в последние несколько десятков лет. Вообще, вся IT-индустрия живёт всего лет семьдесят, и сорок лет из них - с C++. Поэтому, конечно же, синтаксис нужно регулярно обновлять.</p>
35
<p>Но я не верю, что синтаксис хоть как-то влияет на продуктивность разработчика - на продуктивность гораздо больше влияет архитектура написанного кода и возможность легко его читать. C++ читать довольно легко - вы просто привыкаете к нему. Единственное, что сложно читается в C++, - это шаблонные 20 тысяч строк. В общем, в моём мире не существует более простого или более сложного синтаксиса. Да, в C++ свои болевые точки, но и в Carbon они вполне могут быть - просто я пока о них не знаю, так как этот язык ещё в разработке.</p>
35
<p>Но я не верю, что синтаксис хоть как-то влияет на продуктивность разработчика - на продуктивность гораздо больше влияет архитектура написанного кода и возможность легко его читать. C++ читать довольно легко - вы просто привыкаете к нему. Единственное, что сложно читается в C++, - это шаблонные 20 тысяч строк. В общем, в моём мире не существует более простого или более сложного синтаксиса. Да, в C++ свои болевые точки, но и в Carbon они вполне могут быть - просто я пока о них не знаю, так как этот язык ещё в разработке.</p>
36
<p>Конечно, синтаксис Carbon будет проще, чем синтаксис C++. Но я не считаю это важным. Для меня любой синтаксис нормальный, потому что при изучении языка программирования синтаксис я осваиваю в последнюю очередь. Моя позиция такова: если вы решили изучить язык программирования, то синтаксис - последнее, что вы должны учить. Сначала освойте философию. Потому что синтаксис - это как писать на русском или на английском. Вы уже умеете буковки писать? Значит, научитесь. Здесь то же самое. Клавиши нажимать все умеют, разберитесь лучше сначала с системой типов в языке.</p>
36
<p>Конечно, синтаксис Carbon будет проще, чем синтаксис C++. Но я не считаю это важным. Для меня любой синтаксис нормальный, потому что при изучении языка программирования синтаксис я осваиваю в последнюю очередь. Моя позиция такова: если вы решили изучить язык программирования, то синтаксис - последнее, что вы должны учить. Сначала освойте философию. Потому что синтаксис - это как писать на русском или на английском. Вы уже умеете буковки писать? Значит, научитесь. Здесь то же самое. Клавиши нажимать все умеют, разберитесь лучше сначала с системой типов в языке.</p>
37
<p>А вот модульная система, в отличие от синтаксиса, как по мне, - действительно неплохая причина переехать с C++ на Carbon. В стандарте C++ 20 появились новые модули: это было попыткой уменьшить потребность в одной конкретной директиве препроцессора - #include. #include позволяет разделить исходный код на логические части, но использование препроцессора для включения заголовочного файла - это способ скопировать содержимое одного файла и вставить в другой. Из-за этого возникают проблемы со временем компиляции, так как мы фактически перекомпилируем один и тот же код везде, куда дотянулся #include.</p>
37
<p>А вот модульная система, в отличие от синтаксиса, как по мне, - действительно неплохая причина переехать с C++ на Carbon. В стандарте C++ 20 появились новые модули: это было попыткой уменьшить потребность в одной конкретной директиве препроцессора - #include. #include позволяет разделить исходный код на логические части, но использование препроцессора для включения заголовочного файла - это способ скопировать содержимое одного файла и вставить в другой. Из-за этого возникают проблемы со временем компиляции, так как мы фактически перекомпилируем один и тот же код везде, куда дотянулся #include.</p>
38
<p>Но это всё ещё довольно серьёзное легаси, которое очень тяжело исправить. Поддержкой модулей могут пользоваться сейчас, наверное, только единицы. В Rust тоже используют модули. А Carbon уже из коробки предлагает модули и пакетный менеджер.</p>
38
<p>Но это всё ещё довольно серьёзное легаси, которое очень тяжело исправить. Поддержкой модулей могут пользоваться сейчас, наверное, только единицы. В Rust тоже используют модули. А Carbon уже из коробки предлагает модули и пакетный менеджер.</p>
39
<p>В Carbon попытаются сделать более приспособленную к жизни и понятную людям шаблонную систему. В C++ шаблоны довольно страшные. В Carbon сделают<a>систему шаблонов</a>, похожую на Rust. Например, generics должны описывать те операции, которые можно выполнять с типами, когда как в C++ происходит так называемый duck typing, когда только компилятор проверяет совместимость тех операций, которые используются внутри. В общем случае это называется bounded parametric polymorphism vs ad-hoc polymorphism.</p>
39
<p>В Carbon попытаются сделать более приспособленную к жизни и понятную людям шаблонную систему. В C++ шаблоны довольно страшные. В Carbon сделают<a>систему шаблонов</a>, похожую на Rust. Например, generics должны описывать те операции, которые можно выполнять с типами, когда как в C++ происходит так называемый duck typing, когда только компилятор проверяет совместимость тех операций, которые используются внутри. В общем случае это называется bounded parametric polymorphism vs ad-hoc polymorphism.</p>
40
<p>Если вы хотите писать на C++, просто продолжайте писать на C++, который продолжает развиваться, хоть и по-своему. Carbon в сравнении с C++ более удобный, потому что в нём нет легаси, и требует чуть меньше знаний.</p>
40
<p>Если вы хотите писать на C++, просто продолжайте писать на C++, который продолжает развиваться, хоть и по-своему. Carbon в сравнении с C++ более удобный, потому что в нём нет легаси, и требует чуть меньше знаний.</p>
41
<p>Не секрет, что Google одновременно смотрит и в сторону Rust. И путь развития Rust мне нравится больше. Но мы написали столько кода на C++ - как нам теперь взять и сразу переехать на Rust? Это возможно, только если мы сможем написать инструмент, который берёт код на C++ и превращает его в Rust. Только в таком случае сама идея существования Carbon может стать нежизнеспособной - а пока Rust в деле замены C++ на старых проектах с большим количеством легаси ему не конкурент. Rust уже можно использовать на Android, но в Google Android - отдельная сущность.</p>
41
<p>Не секрет, что Google одновременно смотрит и в сторону Rust. И путь развития Rust мне нравится больше. Но мы написали столько кода на C++ - как нам теперь взять и сразу переехать на Rust? Это возможно, только если мы сможем написать инструмент, который берёт код на C++ и превращает его в Rust. Только в таком случае сама идея существования Carbon может стать нежизнеспособной - а пока Rust в деле замены C++ на старых проектах с большим количеством легаси ему не конкурент. Rust уже можно использовать на Android, но в Google Android - отдельная сущность.</p>
42
<p>Carbon изначально создавался с намерением проложить мостик к C++ и позволить командам разработчиков безболезненно переходить с одного языка на другой, переносить кодовую базу. С одной стороны, очень тяжело создать такой язык с нуля. С другой, написать мостик между Rust и C++ - не менее простая задача.</p>
42
<p>Carbon изначально создавался с намерением проложить мостик к C++ и позволить командам разработчиков безболезненно переходить с одного языка на другой, переносить кодовую базу. С одной стороны, очень тяжело создать такой язык с нуля. С другой, написать мостик между Rust и C++ - не менее простая задача.</p>
43
<p>Какой язык справится с этой задачей, тот и выиграет. Если Carbon сможет доказать свои преимущества, он приживётся в Google. Если он умрёт, значит, умрёт. Если Rust выиграет в битве за переезд с C++, то получит решающее преимущество. Но прямо сейчас будущее туманно.</p>
43
<p>Какой язык справится с этой задачей, тот и выиграет. Если Carbon сможет доказать свои преимущества, он приживётся в Google. Если он умрёт, значит, умрёт. Если Rust выиграет в битве за переезд с C++, то получит решающее преимущество. Но прямо сейчас будущее туманно.</p>
44
<p>Критика Carbon основывается на том, что Rust в какой-то степени считался преемником C++. Но с этим тезисом не все согласны - это холиварная тема. У Rust была идея, что программисты не умеют писать код без багов. Конечно, это факт, с этим ничего не поделать. Динозавры говорили: если вы не умеете писать код без багов, то вы плохой программист. Но на самом деле все пишут код с багами - и если вы хотите расширять экосистему языка, это придётся учитывать.</p>
44
<p>Критика Carbon основывается на том, что Rust в какой-то степени считался преемником C++. Но с этим тезисом не все согласны - это холиварная тема. У Rust была идея, что программисты не умеют писать код без багов. Конечно, это факт, с этим ничего не поделать. Динозавры говорили: если вы не умеете писать код без багов, то вы плохой программист. Но на самом деле все пишут код с багами - и если вы хотите расширять экосистему языка, это придётся учитывать.</p>
45
<p>Вообще, Rust возник из идеи создать язык, у которого не будет проблем с памятью, а у Carbon такой идеи нет - он не будет безопасным в сфере памяти, но будет подсвечивать такие проблемы. Это часть идеологии Carbon: он хочет быть таким же быстрым, как C++. Хотя, справедливости ради, всё ещё непонятно, что быстрее - Rust или C++, это тоже до сих пор холиварная тема, точку в которой никто пока не поставил. Однако на C++ написать более быстрый код действительно проще, чем на Rust.</p>
45
<p>Вообще, Rust возник из идеи создать язык, у которого не будет проблем с памятью, а у Carbon такой идеи нет - он не будет безопасным в сфере памяти, но будет подсвечивать такие проблемы. Это часть идеологии Carbon: он хочет быть таким же быстрым, как C++. Хотя, справедливости ради, всё ещё непонятно, что быстрее - Rust или C++, это тоже до сих пор холиварная тема, точку в которой никто пока не поставил. Однако на C++ написать более быстрый код действительно проще, чем на Rust.</p>
46
<p>Carbon стремится быть как C++ с точки зрения перформанса - а вот идей по безопасности памяти у команды пока не было. Именно поэтому Carbon пока больше напоминает именно C++, а не Rust.</p>
46
<p>Carbon стремится быть как C++ с точки зрения перформанса - а вот идей по безопасности памяти у команды пока не было. Именно поэтому Carbon пока больше напоминает именно C++, а не Rust.</p>
47
<p>Кажется, сложилось два лагеря. С одной стороны - люди, которые хотят memory safety, чтобы ничего не ломалось, чтобы программа работала, когда скомпилировалась. Люди по другую сторону хотят быть ближе к ассемблеру, но с элементами ООП. Если вы хотите быть в первом лагере, то будете писать на Rust. Если во втором - лучше выбрать Carbon.</p>
47
<p>Кажется, сложилось два лагеря. С одной стороны - люди, которые хотят memory safety, чтобы ничего не ломалось, чтобы программа работала, когда скомпилировалась. Люди по другую сторону хотят быть ближе к ассемблеру, но с элементами ООП. Если вы хотите быть в первом лагере, то будете писать на Rust. Если во втором - лучше выбрать Carbon.</p>
48
Офис Google в Сиднее<em>Фото: пресс-служба Google</em><p>Развитие Carbon будет осуществляться по пути, похожему на путь Go. Есть комьюнити, которое развивает язык, а Google в какой-то степени это развитие мягко контролирует. Думаю, первое время спецификациями будет заниматься компания, а со временем эту задачу подхватит комьюнити - оно будет набирать вес, путём голосования выбирать тех, кто представляет интересы сообщества. Но всё это будет, только если Carbon выживет.</p>
48
Офис Google в Сиднее<em>Фото: пресс-служба Google</em><p>Развитие Carbon будет осуществляться по пути, похожему на путь Go. Есть комьюнити, которое развивает язык, а Google в какой-то степени это развитие мягко контролирует. Думаю, первое время спецификациями будет заниматься компания, а со временем эту задачу подхватит комьюнити - оно будет набирать вес, путём голосования выбирать тех, кто представляет интересы сообщества. Но всё это будет, только если Carbon выживет.</p>
49
<p>Мне Carbon не нравится. Я не считаю, что Google вообще нужен новый язык программирования. Go создавался с целью заменить C++ - и в этом Go провалился, хотя и стал популярным языком для других задач. Сейчас пришла очередь Carbon. Я думаю, это начинание как замена C++ тоже провалится. Но что-то делать с C++ надо. Я хочу верить, что выиграет Rust. Но будут свои сложности с тем, как перейти на него и перенести всю кодовую базу.</p>
49
<p>Мне Carbon не нравится. Я не считаю, что Google вообще нужен новый язык программирования. Go создавался с целью заменить C++ - и в этом Go провалился, хотя и стал популярным языком для других задач. Сейчас пришла очередь Carbon. Я думаю, это начинание как замена C++ тоже провалится. Но что-то делать с C++ надо. Я хочу верить, что выиграет Rust. Но будут свои сложности с тем, как перейти на него и перенести всю кодовую базу.</p>
50
<p>Я не поддерживаю идею монополии на языки программирования - это открытые системы, которые нужны людям, они не должны принадлежать компаниям. Языки программирования никогда не выживают, если они закрыты. В какой-то степени поэтому Carbon пошёл в open source. Но на Carbon пока никак не повлиять человеку извне. Пока есть только возможность посмотреть на него со стороны и дать фидбэк - именно для этого его и представили общественности в июле 2022 года.</p>
50
<p>Я не поддерживаю идею монополии на языки программирования - это открытые системы, которые нужны людям, они не должны принадлежать компаниям. Языки программирования никогда не выживают, если они закрыты. В какой-то степени поэтому Carbon пошёл в open source. Но на Carbon пока никак не повлиять человеку извне. Пока есть только возможность посмотреть на него со стороны и дать фидбэк - именно для этого его и представили общественности в июле 2022 года.</p>
51
<p>Кажется, первый фидбэк в целом не очень: с момента анонса прошло уже три месяца, а идея языка, по ощущениям, не очень выстрелила - люди не кричат о Carbon на каждом углу. Посмотрим, что будет происходить дальше.</p>
51
<p>Кажется, первый фидбэк в целом не очень: с момента анонса прошло уже три месяца, а идея языка, по ощущениям, не очень выстрелила - люди не кричат о Carbon на каждом углу. Посмотрим, что будет происходить дальше.</p>
52
<p>* Решением суда запрещена "деятельность компании Meta Platforms Inc. по реализации продуктов - социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности".</p>
52
<p>* Решением суда запрещена "деятельность компании Meta Platforms Inc. по реализации продуктов - социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности".</p>
53
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
53
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>