Обновить

Как, на мой взгляд, должна выглядеть лучшая стандартная библиотека на C++

Время на прочтение22 мин
Охват и читатели5.2K
Всего голосов 11: ↑7 и ↓4+9
Комментарии2

Комментарии 2

Сразу обозначу: плашку "Перевод" видел.

И всё равно, обращаюсь к переводчику: зачем такое переводить?

Текст писал какой-то C++-ненавистник. Главная цель у него - превратить C++ в Rust. Это просто какой-то сюр. Просто несколько цитат:

добавили std::ranges, которые и рядом не стояли с Iterator из Rust ... По духу он близок типу Option<T> в Rust. ... что best::result<T, E> аналогичен Result<T, E> из Rust ... добавляя Box‑подобные вспомогательные функции, такие как в Rust ... здесь реализованы итераторы Rust ... походить на str из Rust: это последовательность валидных байт UTF-8 ... написанная в стиле format!() для Rust ... предоставляет String‑подобный API в стиле Rust.

При этом автор КАК-БЫ заявляет, что он не хочет ничего брать из rust:

В целом, я не собираюсь прямо копировать имеющиеся наработки ни из C++, ни из Abseil, ни из Rust, ни из Go.

Возможно, человеку нужно ткнуть в сам rust - вот это ОН: улучшенный C++ (и даже чем-то похож на rust).

Сарказм: А потом заплевать rust и ткнуть в python - там всё проще и понятнее.

Небольшой фан со стороны: автор - очень большой любитель rust - сильно ругает контейнеры C++. Правда тут, на хабре, была статья (https://habr.com/ru/articles/889016/) про контейнеры на rust. Если кратко, то получается весёлая вещь: ряд обычных контейнеров (например, двусвязный список) на rust безопасными средствами самого rust реализовать нельзя. НЕЛЬЗЯ, КАРЛ! Вот на C++ реализовать можно, а rust - ну, не приставайте с глупыми вопросами.

И да, контейнеры на rust есть, но реализованы они в отдельной библиотечке с огроменным количеством unsafe кода.

---

Переводчику:

В libc++ размер строк std::string составляет максимум 23 байта

Полагаю, это какая-то ошибка перевода. Возможно речь шла про размер самого std::string, не строки за экземпляром.

Всегдя кажется странной претензия к тому, что в расте что-то нельзя сделать в safe виде. В c++ Весь код unsafe, в растовских терминах. То что в расте можно писать unsafe код это не какой-то шаг назад по сравнению с другими языками, это возврат к норме всех остальных языков. И safe код это шаг вперёд по сравнению с другими языками (да, я предвзят).

Ну и отдельный момент - когда вам в последний раз был нужен связный список? тем более рукописный. если у ж понадобился, не вижу проблемы написать его в unsafe. Просто чтобы доказать свою точку зрения написал руками связный список на расте, ну минут за 10. Читаемость кода такая же как в обычном расте, кода не много, писать unsafe код ничем не хуже safe кода.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=ae2ca8f17c0883435fba86c89ab6ce83

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации