Pull to refresh

Comments 8

UFO landed and left these words here

Как ни крути, а очень важна возможность использовать либы на всех платформах. У меня для C++ есть готовые проверенные CMake -файлы, чтобы собирать код сразу под: Windows, Linux, MacOS, Android, iOS и WASM. Сразу 6 платформ, к которым пришло человечество на текущий момент существования. И будет работать везде.

Чем-то аналогичным может похвастаться не так много ЯП. Голый C слишком не удобен, все равно там колхозят ООП на основе универсального указателя void*, что весьма неудобно. Rust вроде бы хорош, во многом прогрессивнее C++ - но не имеет удобного и привычного всем ООП-стиля, а то что имеет - не так удобно. Т.е. пока преимущества Rust не покрывают его недостатки.

У rust во много раз круче ооп, чем в cpp, но там другая проблема - программист по умолчанию макака, и это забота программиста доказать компилятору обратное.

Ну что значит "круче"? В смысле сложнее что-либо там реализовать и сложнее разобраться и если ты смог написать ООП на Rust - то ты крут среди пацанов? Ну может разве что в таком смысле. А так давайте на конкретно на примерах посмотрим:

  1. Пример на CPP: https://www.programiz.com/online-compiler/1FWx2dzzP9GFe

  2. То же самое на Rust: https://www.programiz.com/online-compiler/52EHKtXHVfGnO

В Rust даже на таком маленьком примере - куча бойлерплейт-кода. Понятно что и на голом C можно писать ООП, но там бойлерплейта еще больше.

ООП нужен, он используется, его используют. Во всех популярных языках - Java, C#, C++, TypeScript, отчасти JS, Dart - ООП есть и реализован примерно схожим образом. Это классические инкапсуляция, наследование, полиморфизм.

Вы можете полюбить Rust и как бы себя убеждать - ну нет, давайте условно примем что в нем хотя и нет уровней доступа, нет удобного наследования - убедим себя что это кручено. Нет, не круче.

UFO landed and left these words here

Что мешает передать bool как i32 с нулем или единицей, зато без дополнительных аллокаций?

Привет, потому что нужно было показать саму возможность такого типа.

между полями структуры могут оказаться "дырки" без значений

Делал много примеров перед статьей и с таким не сталкивался ни разу и сказать не могу

UFO landed and left these words here

А может и не будет, зависит от того выравнивает ли компилятор данные для этого конкретного таргета

Обычно сложные типы передают туда-сюда как JSON, если нет особых требований по скорости. Или как массив байт типа uint8_t, там тоже дырок не будет.

А так да, согласен - даже если работает сейчас - не факт что будет работать потом.

Sign up to leave a comment.

Articles