История изменений
Исправление tailgunner, (текущая версия) :
Вот скажем, у D есть такая «совместимость на идейном уровне» (и заодно в расте где «совместимости на уровне исходников» можно сказать, что нет)? Куски С кода можно просто копировать и использовать как D код.
Оба несовместимы. Идея Си - «прогер должен обо всем заботиться сам». Это было практично 30-40 лет назад, с небольшими программами и примитивными по сегодняшним меркам компиляторами. Сейчас практично сделать навороченный компилятор и пожертвовать 5% производительности программы за гарантии безопасности. И Rust, и D дают такие гарантии (при определенных условиях, конечно).
Достаточно ли такой совместимости?
Смотря для чего. По-моему, это просто неудачный кивок в сторону Си.
С++ компилятором ведь тоже не любой С код соберётся.
Си++ собирал практически полный Си89, так что он совместим более чем достаточно для того, чтобы взять из Си всё плохое.
интересно возможна ли ситуация когда растовских трейтов не хватит для чего-то.
Конечно. Но, учитывая, что трейты - единственная возможность позднего связывания в Rust, неиспользование их равносильно неиспользованию виртуальных функций в Си++.
Исходная версия tailgunner, :
Вот скажем, у D есть такая «совместимость на идейном уровне» (и заодно в расте где «совместимости на уровне исходников» можно сказать, что нет)? Куски С кода можно просто копировать и использовать как D код.
Оба несовместимы. Идея Си - «прогер должен обо всем забоиться сам». Это было практично 30-40 лет назад, с небольшими программами и примитивными по сегодняшним меркам компиляторами. Сейчас практично сделать навороченный компилятор и пожертвовать 5% производительности программы за гарантии безопасности. И Rust, и D дают такие гарантии (при определенных условиях, конечно).
Достаточно ли такой совместимости?
Смотря для чего. По-моему, это просто неудачный кивок в сторону Си.
С++ компилятором ведь тоже не любой С код соберётся.
Си++ собирал практически полный Си89, так что он совместим более чем достаточно для того, чтобы взять из Си всё плохое.
интересно возможна ли ситуация когда растовских трейтов не хватит для чего-то.
Конечно. Но, учитывая, что трейты - единственная возможность позднего связывания в Rust, неиспользование их равносильно неиспользованию виртуальных функций в Си++.