Email or username:

Password:

Forgot your password?
Эволд

Все так хвалят rust что как-то странно. Хочу его поругать за то что все его хвалят. Конечно возможно это хорошо когда компилятор тебе указывает и запрещает делать что-то, но мне это не нравиться и то что там есть возможность это обойти(через сам язык) наталкивает на мысли что это просто костыль. Конечно возможно это облегчит написание кода, но какой ценой. Программисты должны сами знать почему так нельзя. Еще хотел узнать как вы относитесь rust'у. @rf

Anonymous poll

Poll

rust - топ
21
38.2%
rust - говно
8
14.5%
не знаю
26
47.3%
55 people voted.
Voting ended 11 Jan 2022 at 10:16.
16 comments
Moana Rijndael 🍍🍕

@elwld обойти то можно, но...
Если весь код писать через такие обходы, это будет очень больно. Проще подумать и написать нормально. Эти обходы нужны для специфичных случаев, где компилятор не может вывести гарантии, и над таким кодом пишется безопасный интерфейс, делающий необходимые проверки

Эволд

@mo вот о чем я и говорю. Мне кажется что это костыль.

Moana Rijndael 🍍🍕

@elwld но тогда раст бы не был системным языком :blobcatshrug:
Потому что для некоторых системных вещей *нужно* написать небезопасный код, который компилятор не сможет проверить. Поэтому придумали unsafe-подмножество. Оно должно быть специально огорожено (либо unsafe{} блоками либо вся функция unsafe), и позволяет строго определенный набор действий:
- разыменовать сырой указатель. Раст их не проверяет, на то они и сырые
- вызвать другую функцию, помеченную unsafe
- изменить static mut (глобальную переменную)
- реализовать unsafe-типаж. Обычно это типажи-метки Send (переменную этого типа можно переместить в другой поток) и Sync (переменную можно разделять между потоками). В обоих случаях компилятор не может проверить корректность, но и ставить такие метки от балды нельзя
- получить доступ к полям union (поля могут быть разного типа, а значение у них одно, и не факт что оно корректно ляжет). Юнионы в расте к слову используются только для FFI с Сишкой

Ну а имея на руках сырые указатели..

@elwld но тогда раст бы не был системным языком :blobcatshrug:
Потому что для некоторых системных вещей *нужно* написать небезопасный код, который компилятор не сможет проверить. Поэтому придумали unsafe-подмножество. Оно должно быть специально огорожено (либо unsafe{} блоками либо вся функция unsafe), и позволяет строго определенный набор действий:
- разыменовать сырой указатель. Раст их не проверяет, на то они и сырые
- вызвать другую функцию, помеченную unsafe
- изменить static mut (глобальную переменную)

Moana Rijndael 🍍🍕

..можно реализовать стандартную либу, чтобы людям меньше приходилось их использовать :р

@elwld

:umu: :umu:
@mo @elwld а на столько ли он системный?

Я надеюсь что если его примут в Linux Kernel соблюдая то, на что им указали остальные разработчики, то это действительно сделает его системным. Останется дождаться ещё альтернативы FreeRTOS на Rust, с реальным применением, точно можно будет говорить о том что язык системный.

А пока Rust может занимать нишу "ну мы эт переписали, собирать стало сложнее и бинари разжирели, зато безопасно!". Чем он и занимается.
@mo @elwld а на столько ли он системный?

Я надеюсь что если его примут в Linux Kernel соблюдая то, на что им указали остальные разработчики, то это действительно сделает его системным. Останется дождаться ещё альтернативы FreeRTOS на Rust, с реальным применением, точно можно будет говорить о том что язык системный.
Moana Rijndael 🍍🍕

@a1ba примут, куда они денутся. Язык разрабатывается как системный, а написана ли на нём <класс_софта_нейм> это вопрос времени
И вообще, про большие бинари это вам в голанг :blobcatgooglytrash:
Плюс раст упрощает распараллеливание, и тот же ripgrep оставляет своего дедушку далеко позади
А собирается раст проще (cargo build --release), просто медленнее (ну а что вы хотели, анализ программы не бесплатный). Но скорость постоянно по чуть-чуть улучшается

@elwld

@a1ba примут, куда они денутся. Язык разрабатывается как системный, а написана ли на нём <класс_софта_нейм> это вопрос времени
И вообще, про большие бинари это вам в голанг :blobcatgooglytrash:
Плюс раст упрощает распараллеливание, и тот же ripgrep оставляет своего дедушку далеко позади
А собирается раст проще (cargo build --release), просто медленнее (ну а что вы хотели, анализ программы не бесплатный). Но скорость постоянно по чуть-чуть улучшается

:umu: :umu:
@mo @elwld вы сначала сами определитесь. То он убийца Си, то конкурирует с плюсами, то вообще one ring to rule them all
Moana Rijndael 🍍🍕

@a1ba ну Си убить будет проблематично....................
ИМХО, я вижу раст как C++ done right, все таки уровни абстракции довольно высокие. Но если будет поддержка библиотеками и инструментарием, можно и кусок у сишки откусить :blobcatgoogly:

@elwld

Moana Rijndael 🍍🍕

@a1ba а если немного ебануться, можно и у джаваскрипта :blobcatgooglytrash:

@elwld

:umu: :umu:
@mo @elwld только ООП он с натяжкой.
Moana Rijndael 🍍🍕

@a1ba а он и не ООП.....и кто вообще сказал, что должен быть?

@elwld

Эволд

@mo @a1ba а разве он не мульти-парадигмовый?

Moana Rijndael 🍍🍕 replied to Эволд

@elwld ну, там нет классов, как в плюсах, нет их наследования
Есть структуры и перечисления, которые реализуют типажи (интерфейсы). Вот уже интерфейсы могут "наследоваться" (один интерфейс может требовать для своей реализации реализацию другого)

:umu: :umu:
@mo @elwld хотя ладно, забудь.

Не тот спор который я вывезу. Или хочу вывозить.
Moana Rijndael 🍍🍕

@a1ba разумное решение, всё равно вряд ли кто-то кого-то переубедит
Хорошего вечера кстати :з

@elwld

Go Up