Просто чудесный
пост у
thesz, наглядно демонстрирующий мой лозунг из сабжа.
Давайте пройдёмся по пунктам:
> Большое неудобство, однако, составляет отсутствие подсказок компилятора в сообщении об ошибке
Rust прекрасно всё подсказывает, вплоть до того, что явно указывает как именно тебе надо исправить код, чтобы всё заработало.
> но сама необходимость
(
Read more... )
В Rust объект - это значение, или изменяемый кусок памяти? Если последнее, то увы.
>Ведь его же создавали люди, которые много программировали на C++ :)
Его создавали люди, которые мало программировали на Хаскеле, иначе бы его не было.
Надо мне собраться с силами. :(
Reply
Физически это кусок памяти, разумеется. Но Rust нельзя напрямую с памятью под переменными работать вне unsafe-блоков, и в языке, соответственно, есть гарантия на то, что любое прочитанное значение обязательно было до этого корректно инициализированно.
> Его создавали люди, которые мало программировали на Хаскеле
Хаскель в этом плане тоже устарел. В том же purescript head и tail возвращают Maybe :)
Reply
Вопрос библиотеки. В ghc достигается добавление ключика.
>любое прочитанное значение обязательно было до этого корректно инициализированно.
Корректно или согласованно?
Моя проблема в C++ как раз в согласованности инициализации. Типа, программу разобрал, но таблицу символов не положил.
В том же Хаскеле у меня может быть фантомный тип с тем, что я сделал со значением. И я могу требовать наличие AST и таблицы символов одновременно.
Reply
Если что, в Rust ты тоже можешь это сделать, там есть фантомные типы. Даже session types (и даже без монад, кстати, чисто на ownership-е).
Reply
Вот что-то типа такого можно изобразить?
Да хотя бы HList приведи в качестве примера.
Reply
Reply
Reply
Reply
То есть, от микроконтроллеров до суперкомпьютеров (настоящих, с Infiniband и GPU, с тысячами узлов), минуя FPGA и прочие SoC, на языках от ассемблера до Пролога, в предметных областях от баз данных и анализа уровня шума до радиоастрономии и EDA, проводя анализ систем в целом с разных оценок эффективности, от скорости вычислений, до потребляемой энергии, с ночной стоянкой на станции качества языковых моделей.
То, что ты считаешь "не догнал", у Зефирова просто грусть и тоска от несовершенства коллег по цеху. Им бы мой опыт, может, и не так уродовались бы.
Reply
Reply
"Аргументация клоуна" видится тем, кто не может аргументацию понять по каким-то причинам. Дуннинг-Крюгер, если тебе это что-то говорит.
Ну, и клоунов читают, они интересные, как я.
Reply
Reply
Вместо того, чтобы продуктивно работать и делать интересные вещи, одни люди делают ржавчину, а другие стараются её изучить и использовать.
На момент начала работ над ржавчиной (2012) мне было понятно, что эта штука по смыслу не более, чем библиотека на Хаскеле, наподобие моего HHDL (и по сложности примерно такого же плана). В самом начале работ можно было бы сделать такой прототип, пользуясь системой типов Хаскеля, а не "пися" свою, ad-hoc and bug-ridden.
При этом "язык" бы получился комбинируемым, не надо было бы отдельно стоящих макросов, можно было бы отделять эффекты, создавая штуки а-ля STM (чрезвычайно полезно в системных вещах), и тп.
Я ещё раз повторю, что создатели ржавчины много программировали на C++ и мало на Хаскеле. Пользователи тоже, включая тебя. И это сказывается.
Reply
Reply
Reply
Кстати, давай разберём этот пример подробней. Скорее всего, тут даже фантомные типы не нужны. Можешь привести микро-сниппет того, что ты имеешь в виду на сях?
Подозреваю, что в Rust это будет либо просто структурка (тип-произведение), либо енум (копроизведение) со структуркой.
Reply
Leave a comment