LINUX.ORG.RU

История изменений

Исправление tailgunner, (текущая версия) :

Вот скажем, у D есть такая «совместимость на идейном уровне» (и заодно в расте где «совместимости на уровне исходников» можно сказать, что нет)? Куски С кода можно просто копировать и использовать как D код.

Оба несовместимы. Идея Си - «прогер должен обо всем заботиться сам». Это было практично 30-40 лет назад, с небольшими программами и примитивными по сегодняшним меркам компиляторами. Сейчас практично сделать навороченный компилятор и пожертвовать 5% производительности программы за гарантии безопасности. И Rust, и D дают такие гарантии (при определенных условиях, конечно).

Достаточно ли такой совместимости?

Смотря для чего. По-моему, это просто неудачный кивок в сторону Си.

С++ компилятором ведь тоже не любой С код соберётся.

Си++ собирал практически полный Си89, так что он совместим более чем достаточно для того, чтобы взять из Си всё плохое.

интересно возможна ли ситуация когда растовских трейтов не хватит для чего-то.

Конечно. Но, учитывая, что трейты - единственная возможность позднего связывания в Rust, неиспользование их равносильно неиспользованию виртуальных функций в Си++.

Исходная версия tailgunner, :

Вот скажем, у D есть такая «совместимость на идейном уровне» (и заодно в расте где «совместимости на уровне исходников» можно сказать, что нет)? Куски С кода можно просто копировать и использовать как D код.

Оба несовместимы. Идея Си - «прогер должен обо всем забоиться сам». Это было практично 30-40 лет назад, с небольшими программами и примитивными по сегодняшним меркам компиляторами. Сейчас практично сделать навороченный компилятор и пожертвовать 5% производительности программы за гарантии безопасности. И Rust, и D дают такие гарантии (при определенных условиях, конечно).

Достаточно ли такой совместимости?

Смотря для чего. По-моему, это просто неудачный кивок в сторону Си.

С++ компилятором ведь тоже не любой С код соберётся.

Си++ собирал практически полный Си89, так что он совместим более чем достаточно для того, чтобы взять из Си всё плохое.

интересно возможна ли ситуация когда растовских трейтов не хватит для чего-то.

Конечно. Но, учитывая, что трейты - единственная возможность позднего связывания в Rust, неиспользование их равносильно неиспользованию виртуальных функций в Си++.