Pull to refresh

Comments 13

Нет, пост не информативный.

Самый информативный пост это "задача => решение", а тут абсолютно несвязанный набор фич с невнятными примерами.

Какой-то набор "лозунгов": зайдите сюда, посмотрите туда ...

если можете доказать, что ваш API построен разумно

тема не раскрыта: кому нужно доказать? (компилятору?)

Посмотрел на "7 лет любимый язык": ну что сказать? там два критерия и в обоих раст впереди:

  • люблю больше, чем боюсь (вольный перевод по смыслу);

  • не пробовал, но хотел бы попробовать.

По-моему, это не есть критерий "любимый язык". Ведь в этом случае получится, два самых любимых языка программирования это rust и elixir. А "какой-то" python на 6 месте.

Ну и по мелочи: Почему статья заявлена как C++? (И как системное программирование?) Вроде бы ни того, ни другого (хотя ассемблер прикрутили).

"если можете доказать, что ваш API построен разумно"
тема не раскрыта: кому нужно доказать?

А также что значит разумно. А это слово несколько раз в статье встречается. Получается контраст: системное программирование и интуитивные понятия

тема не раскрыта: кому нужно доказать? (компилятору?)

Конкретно в данном случае слово "доказать" используется в математическом смысле. То есть важна внутренняя корректность этого доказательства, а не внешняя оценка. Само доказательство проверять никто не будет, однако при нарушении требований модели памяти программа окажется на территории UB.

Мало того, что оригинальная статья была довольно невысокого уровня, так ещё и перевод умудрились написать, не приходя в сознание. Ну слишком заметно, что перевод машинный и не особо исправленный.

Bench конечно есть в Rust, но вот такого же pprof как в Go нет. Только такое смог найти https://github.com/tikv/pprof-rs, но это не стандартный пакет. В Go что bench, что pprof идёт из стандарта и развивается основной командой ЯП.

За перевод спасибо!

Зачем нужен отдельный пакет, когда есть стандартный линуксовый perf?

Оно буквально flamegraph-rs зовётся. Писался под впечатлением исходного перлового FlameGraph. Теперь гляжу оно даже как cargo instrument сделалось. А так и criterion это тоже не стандартный бенчмаркер. Есть ещё hyperfine из популярного и нестандартного. А среди батареек имеется cargo bench.

Вопрос "как выстрелить себе в ногу, используя Rust" - раскрыт. Практически все способы обхода встроенных защит ...

legs
  .iter()
  .for_each(|leg| shoot(&leg));

Нога не мутабельная, урон не нанесен

Хорошо ходить при расте, а?

Да уж, содержательно статья действительно невысокого уровня, а пункт про Deref и Arc::clone полон фактических ошибок: пример кода, который заявлено, что не сработает (т.к. Rust якобы не поймёт вызвать ли .clone() на Arc или типе, который он оборачивает) на самом деле прекрасно работает (ссылка на playgroud с кодом). Предположу, что выбор метода тут происходит (в документации про это не находил, может кто-нибудь поделится ссылкой) по наикротчайшему "пути" до реализации. Т.е. в нашем случае clone на Arc ближе чем clone на значении, которое Arc оборачивает.

Sign up to leave a comment.

Articles