У нас есть Rust, поэтому C++ больше не нужен.

Oct 19, 2017 17:47


Просто чудесный пост у thesz, наглядно демонстрирующий мой лозунг из сабжа.

Давайте пройдёмся по пунктам:
> Большое неудобство, однако, составляет отсутствие подсказок компилятора в сообщении об ошибке

Rust прекрасно всё подсказывает, вплоть до того, что явно указывает как именно тебе надо исправить код, чтобы всё заработало.
> но сама необходимость ( Read more... )

programming, code, rust, c++

Leave a comment

thesz October 19 2017, 15:06:44 UTC
>А в Rust отсутствует возможность "неправильно" создать объект.

В Rust объект - это значение, или изменяемый кусок памяти? Если последнее, то увы.

>Ведь его же создавали люди, которые много программировали на C++ :)

Его создавали люди, которые мало программировали на Хаскеле, иначе бы его не было.

Надо мне собраться с силами. :(

Reply

swizard October 19 2017, 15:25:58 UTC
> В Rust объект - это значение, или изменяемый кусок памяти? Если последнее, то увы.

Физически это кусок памяти, разумеется. Но Rust нельзя напрямую с памятью под переменными работать вне unsafe-блоков, и в языке, соответственно, есть гарантия на то, что любое прочитанное значение обязательно было до этого корректно инициализированно.

> Его создавали люди, которые мало программировали на Хаскеле

Хаскель в этом плане тоже устарел. В том же purescript head и tail возвращают Maybe :)

Reply

thesz October 19 2017, 15:31:41 UTC
>Хаскель в этом плане тоже устарел. В том же purescript head и tail возвращают Maybe :)

Вопрос библиотеки. В ghc достигается добавление ключика.

>любое прочитанное значение обязательно было до этого корректно инициализированно.

Корректно или согласованно?

Моя проблема в C++ как раз в согласованности инициализации. Типа, программу разобрал, но таблицу символов не положил.

В том же Хаскеле у меня может быть фантомный тип с тем, что я сделал со значением. И я могу требовать наличие AST и таблицы символов одновременно.

Reply

swizard October 19 2017, 15:37:12 UTC
> В том же Хаскеле у меня может быть фантомный тип с тем, что я сделал со значением.

Если что, в Rust ты тоже можешь это сделать, там есть фантомные типы. Даже session types (и даже без монад, кстати, чисто на ownership-е).

Reply

thesz October 19 2017, 16:22:22 UTC
В ржавчине, что, есть зависимые типы? Значения могут быть типами? Функции ржавчины могут вычисляться во время проверки типов?

Вот что-то типа такого можно изобразить?

Да хотя бы HList приведи в качестве примера.

Reply

swizard October 19 2017, 17:12:15 UTC
Нет, зависимых типов в ржавчине нет. Ты победил =)

Reply

develop7 October 19 2017, 20:24:09 UTC
Есть линейные, что тоже неплохо.

Reply

maxim October 19 2017, 23:24:24 UTC
Зефиров походу не догнал темку-то :-)

Reply

thesz October 20 2017, 12:44:46 UTC
Зефиров на вещи смотрит с точки, которую тебе получится достать, только попрограммировав с Зефировское.

То есть, от микроконтроллеров до суперкомпьютеров (настоящих, с Infiniband и GPU, с тысячами узлов), минуя FPGA и прочие SoC, на языках от ассемблера до Пролога, в предметных областях от баз данных и анализа уровня шума до радиоастрономии и EDA, проводя анализ систем в целом с разных оценок эффективности, от скорости вычислений, до потребляемой энергии, с ночной стоянкой на станции качества языковых моделей.

То, что ты считаешь "не догнал", у Зефирова просто грусть и тоска от несовершенства коллег по цеху. Им бы мой опыт, может, и не так уродовались бы.

Reply

maxim October 21 2017, 15:00:38 UTC
Откуда ты знаешь, что я программировал. Ты не такой уж и крутой чувак, я работал с людьми поталантлевее тебя. Еще раз говорю, та аргуменация которую ты приводишь - на уровне клоуна. Что делать с этим решать тебе.

Reply

thesz October 21 2017, 20:20:01 UTC
Ты не можешь иметь интересный опыт, занимаясь сейчас тем, чем ты занимаешься сейчас.

"Аргументация клоуна" видится тем, кто не может аргументацию понять по каким-то причинам. Дуннинг-Крюгер, если тебе это что-то говорит.

Ну, и клоунов читают, они интересные, как я.

Reply

maxim October 21 2017, 21:58:21 UTC
Пойду заниматься неинтересными вещами. Успехов тебе в жизни и работе.

Reply

thesz October 20 2017, 10:25:23 UTC
Мне, на самом деле, грустно.

Вместо того, чтобы продуктивно работать и делать интересные вещи, одни люди делают ржавчину, а другие стараются её изучить и использовать.

На момент начала работ над ржавчиной (2012) мне было понятно, что эта штука по смыслу не более, чем библиотека на Хаскеле, наподобие моего HHDL (и по сложности примерно такого же плана). В самом начале работ можно было бы сделать такой прототип, пользуясь системой типов Хаскеля, а не "пися" свою, ad-hoc and bug-ridden.

При этом "язык" бы получился комбинируемым, не надо было бы отдельно стоящих макросов, можно было бы отделять эффекты, создавая штуки а-ля STM (чрезвычайно полезно в системных вещах), и тп.

Я ещё раз повторю, что создатели ржавчины много программировали на C++ и мало на Хаскеле. Пользователи тоже, включая тебя. И это сказывается.

Reply

thedeemon October 20 2017, 07:49:53 UTC
А в примере точно зависимые типы, а не просто тайп-левел арифметика, которая и в С++ была издавна?

Reply

thesz October 20 2017, 10:27:51 UTC
Множество выполненных действий это... множество! Его можно закодировать в целые числа (https://www.gwern.net/Turing-complete - арифметика Пеано полна по Тьюрингу), но зачем?

Reply

swizard October 19 2017, 15:45:37 UTC
> И я могу требовать наличие AST и таблицы символов одновременно.

Кстати, давай разберём этот пример подробней. Скорее всего, тут даже фантомные типы не нужны. Можешь привести микро-сниппет того, что ты имеешь в виду на сях?

Подозреваю, что в Rust это будет либо просто структурка (тип-произведение), либо енум (копроизведение) со структуркой.

Reply


Leave a comment

Up