vak: (Default)
[personal profile] vak
Гугл предлагает новый язык Карбон на замену Си++. Проект на Гитхабе: https://github.com/carbon-language/carbon-lang

К примеру, вот такой код на Си++:



превращается в код на Карбоне:

Date: 2022-07-28 18:07 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Можно без fn, var, ->.

Date: 2022-07-29 04:42 (UTC)
x86128: (Default)
From: [personal profile] x86128
Для такого синтаксиса получается простой парсер

Date: 2022-07-29 05:59 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Ну, с одной стороны легче находить функции и переменные без честного учёта типов и деклараций.
А с другой стороны он всё равно нужен, если не городить динамические типы.

Date: 2022-07-29 05:52 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Такая дебильная стрелочка и в C++ есть. В этом же самом месте.

Date: 2022-07-29 07:10 (UTC)
x86128: (Default)
From: [personal profile] x86128
Она там вообще не нужна, так как слева и так скобка ) а справа {, если между ними чтото есть это и есть тип возвращаемого значения

Date: 2022-07-29 16:02 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Я чуть чаем не подавился, когда это увидел впервые. Уже ж был синтаксис, хоть и кривоватый, но к которому привыкли. К нему добавили ещё одну кривизну без необходимости.

Date: 2022-07-28 18:22 (UTC)
tiresome_cat: (SmilingCat_2)
From: [personal profile] tiresome_cat
Мне нравится. С другой стороны, я вообще с++ терпеть не могу :)

Date: 2022-07-28 18:26 (UTC)
vinsent_ru: (Default)
From: [personal profile] vinsent_ru

как по мне так то же самое, ну да синтаксис почище, да и все

Date: 2022-07-28 18:35 (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Повысили когнитивную сложность. Хотя, задачки на интервью будет решать прикольнее.

Date: 2022-07-28 18:48 (UTC)
From: [personal profile] bowhill
Заимствования fn и типов из rust – это молодёжно, fn как и var часто избыточен, аббревиатурные же ключевые слова менее читабельны. Далее, помимо вкусов, тип не является атрибутом элемента (hello, typescript), это с ног на голову. Тем более что fn – тоже тип. Ну, и немного java, конечно. Интересный букет.

И если смотреть на него как наследника с++, то как раз получится по части винегретизации. Вообще, интересный и традиционный вопрос, какие языки служат материалом для размышлений авторов.

Date: 2022-07-28 19:29 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Друзья Сергея и Ларри продолжают развлекаться (имхо).

Date: 2022-07-28 19:43 (UTC)
vlad_m: (Default)
From: [personal profile] vlad_m
Могут себе позволить. )

Date: 2022-07-28 19:50 (UTC)
vlad_m: (Default)
From: [personal profile] vlad_m
Препроцессору, в общем, давно пора на покой.

Импорты вместо инклюдов.

Остальное не выглядит сильно компактнее.
Дьявол кроется в библиотеках,
посмотрим, насколько менее (или более) ужасными будут конструкции с использованием vectors, lists, maps и т д.

Slice, няп, встроен в язык. Уже неплохо.

Date: 2022-07-29 02:54 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
Импорты и в C++20 есть

Date: 2022-07-29 05:10 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
А параметризацию можно сделать без препроцессора?

Date: 2022-07-29 11:34 (UTC)
From: [personal profile] ichthuss
Темплейты отлично работают без препроцессора. Разумеется, это не настолько универсальный инструмент, но близкий по универсальности.

Date: 2022-07-29 11:39 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Няз, STL реализован через препроцессор?

Date: 2022-07-29 13:25 (UTC)
From: [personal profile] ichthuss
Вроде бы наоборот, препроцессор там никаким боком, одни сплошные темплейты.

Date: 2022-07-29 15:53 (UTC)
vlad_m: (Default)
From: [personal profile] vlad_m
Условную компиляцию? В рамках одного набора исходников - нет.
Даже с темплейтами и абстрактными интерфейсами (все методы pure virtual) где-то должен быть главный агрегатор, инстанциирующий конкретные классы.
Но можно условно включать/не включать в список исходников схожие по API модули, заточенные под разные варианты таргетов.
Разные варианты агрегаторов, например.

Date: 2022-07-28 19:59 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
C++ написан как жалкий позор. Надо

for (auto & c : circles), или даже без & - нечего референсы на пустом месте без надобности разводить. И когда С++ написан по-современному, а не как 10 лет назад, становится видно, что этот их карбон - тоже жалкий позор.

auto main(...) -> int - вообще за пределами добра и зла.

Date: 2022-07-28 23:10 (UTC)
sab123: (Default)
From: [personal profile] sab123
Ой нет, от пакетных менеджеров - один вред и никакой пользы.

Date: 2022-07-29 00:39 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Классическая фраза "Those who do not understand X are bound to reinvent it, poorly" верна и для X = C++ (в оригинале, если кто не помнит, X = UNIX).

Date: 2022-07-29 04:39 (UTC)
x86128: (Default)
From: [personal profile] x86128
Кажется, что проблемы некоторых олдовых языков больше связаны с бардаком в библиотеках и сборочных инструментах, было бы хорошо если бы перетащили практики из go или rust (пакеты, линтеры, форматеры и сборщики) и управление версионнностью зависимостей.

Date: 2022-07-29 10:28 (UTC)
From: [personal profile] ivanrubilo
А можно спросить,
Вы использовали Rust серьёзно на работе? И если так, то по прошествии так сказать "honey moon" что теперь думаете про Rust? И какие основные pain points?

Я только игрался с ним в мелких проектиках и думал может работу подыскать где 100% Rust, но ещё не настолько крут с ним чтобы профессионально только его юзать для работы :(

Date: 2022-07-30 08:44 (UTC)
From: [personal profile] ivanrubilo
Спасибо за развёрнутый ответ!

Date: 2022-07-28 22:02 (UTC)
norian: (Default)
From: [personal profile] norian
шо, ещё один киллер крестов ? ню ню

из крестов надо выкидывать отложения легаси и рефакторить, а вместо этого туда пихают всего побольше и помоднее

Date: 2022-07-29 06:06 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Меня удручает сочетание размера современного C++ с неоднородностью. Если бы фичи прямо вытекали друг из дружки, стройно без исключений по соображениям обратной совместимости и тупой незаконченности, было бы лучшее. А так ты не можешь даже быстро определить что в данном контексте сделает какое-нибудь foo(), и даже какое именно из них, если их несколько, будет вызвано. Получается помойка для любителей dumpster diving.

Date: 2022-07-28 23:07 (UTC)
sab123: (Default)
From: [personal profile] sab123
Языкам без препроцессора место в сортире.

Date: 2022-07-29 13:45 (UTC)
From: [personal profile] ichthuss
Препроцессор легко подключить к любому языку.

Date: 2022-07-29 16:00 (UTC)
From: [personal profile] bowhill
А исходники общие или как?

Бывает, что два хороших стандарта хуже одного посредственного.

Date: 2022-07-29 19:00 (UTC)
From: [personal profile] ichthuss
Вы можете сформулировать свой вопрос яснее?

Date: 2022-07-29 22:03 (UTC)
From: [personal profile] bowhill
Можно более развёрнуто. Исходный текст для транслятора языка и для препроцессоров – это один и тот же текст?

Есть тест на языке, в который можно добавлять вкрапления для одного, второго, третьего препроцессора. Такое встречается, скажем, помимо стандартного препроцессора в с можно использовать doxygen, да что угодно.
Edited Date: 2022-07-29 22:04 (UTC)

Date: 2022-07-29 22:54 (UTC)
From: [personal profile] ichthuss
По определению, исходный текст для транслятора языка - это выход препроцессора, и он обычно не совпадает с входом препроцессора (иначе зачем вообще препроцессор?).

Date: 2022-07-29 23:28 (UTC)
From: [personal profile] bowhill
Не обязательно. С препроцессором или без, текст может быть корректным высказыванием на языке, и так же не обязательно, что препроцессор меняет текст. Но это сторонние замечания, не связанные с идеей.

А идея в том, что если в языке нет препроцессора, то a) его скорее всего и не будет или b) их будет несколько: два, три, пять. И из всех из них, весьма часто, будет мешанина (спагетти). И на каком именно языке, в итоге, будет код – сказать затруднительно.

Date: 2022-08-29 20:16 (UTC)
sab123: (Default)
From: [personal profile] sab123
Самая мощная и удобная часть препроцессора - #if и #ifdef, в частности #if 0. Ничего мощнее и удобнее я не видел.

Date: 2022-07-31 03:28 (UTC)
ccpro: (Default)
From: [personal profile] ccpro
зря всё это. языков всяких уже море. даже и не важно как он (синтаксис) выглядит, важно как оно внутри работает. можно хоть на js писать, лишь бы выполнялось, как задумано
вон и питон уже какой взрослый - перл обошел и го допилили до чего-то вменяемого, всякие скалы...

и наконец языки "сочиняют" умники, а используют простые смертные, которым плевать на узоры, им зарплату получать надо