Здравствуйте, Artem Korneev, Вы писали:
AK>Здравствуйте, varenikAA, Вы писали:
AA>> Почему rust? [..] AA>> создает чистый код на этих ЯП.
AK>И где бы посмотреть на примеры хорошего чистого кода на Rust?..
Учебные фрагменты на 10..20 строк это несерьёзно.
В продакшн-коде у вас не будет этих "expect()", там придётся ставить реальную обработку ошибок и/или преобразования из одних типов ошибок в другие. А ветвления кода будут вызывать не println!(), а реальные методы, со своими аргументами и своими результатами выполнения и кодами ошибок. И код очень быстро станет куда менее красивым.
AA>а в вашем понимании что означает чистый?
Слово "чистый" упомянули вы, я хотел посмотреть на то, что представляет из себя чистый код на Rust с вашей точки зрения.
Сам я второй год работаю с Rust и у меня немало времени уходит как раз на то, чтоб сделать код "чище". В моём понимании это легко читаемый код с минимумом ненужных деталей. Rust как раз заставляет выставлять наружу очень уж много тех самых деталей, загромождая код. Бороться с этим трудно.
Из недавних попыток — я воспользовался макросами. Получилось неплохо, основной код бизнес-логики значительно упростился. Но при этом синтаксис самих макросов в Rust'е тоже не то чтоб легко читаемый.
тех самых деталей, загромождая код. Бороться с этим трудно.
что ж, возможно. этой мой взгляд со стороны. сам я дальше учебного примера не заходил. чистый код в моем понимании это http://blog.cleancoder.com/
AK>Из недавних попыток — я воспользовался макросами. Получилось неплохо, основной код бизнес-логики значительно упростился. Но при этом синтаксис самих макросов в Rust'е тоже не то чтоб легко читаемый.
По сравнению с другими ЯП с макросами или по сравнению с обычным кодом? макросы это же расширение компилятора, вряд ли они могут бы простыми.
Здравствуйте, varenikAA, Вы писали:
AA>что ж, возможно. этой мой взгляд со стороны. сам я дальше учебного примера не заходил.
Ясно. Я думал, примеры есть.
На C++/C#/Java я могу писать легко читаемый код. Обычно разделяю для этого код на разные уровни, чтоб в бизнес-логике не было низкоуровневых деталей, чтоб бизнес-логика отражала предметную область как можно лучше. С Rust'ом мне пока сложно в этом плане.
Из того, что мне видится примерами хорошего кода на Rust, могу упомянуть опенсорсные проекты типа этого:
Там тоже мелькает синтаксический мусор, но в целом получается довольно читабельно. Стараюсь держаться похожего стиля, но активно разбавляю макросами.
AA>По сравнению с другими ЯП с макросами или по сравнению с обычным кодом? макросы это же расширение компилятора, вряд ли они могут бы простыми.
Здравствуйте, varenikAA, Вы писали:
AA>Почему lisp? потому что это первый(только подумайте) ЯП со сборщиком мусора. Только одно это убрало огромное кол-во сложности.
Занудствую: первым языком с GC был Algol-68.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, varenikAA, Вы писали:
AA>>Почему lisp? потому что это первый(только подумайте) ЯП со сборщиком мусора. Только одно это убрало огромное кол-во сложности. C>Занудствую: первым языком с GC был Algol-68.
Здравствуйте, varenikAA, Вы писали:
AA>Что является высшим приоритетом в программировании?
Отсутствие ошибок.
AA>На мой взгляд важнейшим являются простота ЯП и возможность посредством ЯП сохранять код AA>максимально простым и однозначным.
Ну нет. Простой и однозначный код ведёт к нехватке ресурсов.
AA>И здесь я вижу пока лишь два кандидата. AA>Почему lisp? потому что это первый(только подумайте) ЯП со сборщиком мусора. Только одно это убрало огромное кол-во сложности.
Разве это не убило lisp?
AA>Почему rust? Утверждают что компилятор раста не позволяет выполнить неправильные операции с памятью. нереально круто.
Это как? Что будет, если памяти не хватит для поступивших данных?
Здравствуйте, B0FEE664, Вы писали:
AA>>Почему rust? Утверждают что компилятор раста не позволяет выполнить неправильные операции с памятью. нереально круто. BFE>Это как? Что будет, если памяти не хватит для поступивших данных?
Паника будет.
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Здравствуйте, B0FEE664, Вы писали:
BFE>А чем этот код отличается от C++?
В первую очередь отсутствием операторов, отcутствием void
ну т.е. большей функциональностью. компоуз и т.п.
явное приведение типов. много чего. простой и понятный карго.
Здравствуйте, B0FEE664, Вы писали:
BFE>Отсутствие ошибок.
Знаете способ как доказать что в коде нет ошибок?
Главное это полезность. Куча софта который страшно глючил по началу, но что называется "выстрелил". тот же firefox.
Он до сих падает, но он банально удобен.
BFE>Ну нет. Простой и однозначный код ведёт к нехватке ресурсов.
Это как?
BFE>Разве это не убило lisp?
Лисп сейчас очень активно развивается, достаточно окунуться в его среду, чтобы это понять.
а аналогов сигнального протокола я до сих пор не встречал.
BFE>Это как? Что будет, если памяти не хватит для поступивших данных?
Не практикую, но думаю у раста случится паника
Здравствуйте, vaa, Вы писали:
BFE>>Отсутствие ошибок. vaa>Знаете способ как доказать что в коде нет ошибок?
нет, такого способа вообще не существует.
vaa>Главное это полезность. Куча софта который страшно глючил по началу, но что называется "выстрелил". тот же firefox. vaa>Он до сих падает, но он банально удобен.
Всё, что связано с web-ом вообще никогда нормально не работало. Я не знаю ни одной нормально работающей программы связанной с web-ом. Всё программирование в этой области — бардак и содомия. А уж говорить, что это главное... Извините, не согласен.
BFE>>Ну нет. Простой и однозначный код ведёт к нехватке ресурсов. vaa>Это как?
Обычно расходуется либо слишком много памяти, либо слишком много энергии.
BFE>>Разве это не убило lisp? vaa>Лисп сейчас очень активно развивается, достаточно окунуться в его среду, чтобы это понять.
В академической среде?
vaa>а аналогов сигнального протокола я до сих пор не встречал.
Если я правильно понял, то в некоторых библиотеках С++ используется похожая технология.
BFE>>Это как? Что будет, если памяти не хватит для поступивших данных? vaa>Не практикую, но думаю у раста случится паника
паника — это правильная операция с памятью?
Здравствуйте, vaa, Вы писали:
BFE>>А чем этот код отличается от C++? vaa>В первую очередь отсутствием операторов, отcутствием void vaa>ну т.е. большей функциональностью. компоуз и т.п. vaa>явное приведение типов. много чего. простой и понятный карго.
Но ведь это зависит исключительно от стиля написания кода. Если хочешь писать на С++ как на Rust, то что мешает?
Здравствуйте, B0FEE664, Вы писали:
BFE>В академической среде?
в телеге довольно много только русскоговорящих любителей лиспа. не могу сказать что лисп академический. это скорее оберон.
BFE>паника — это правильная операция с памятью?
ну это не проблема раста, это от программиста зависит кончится память или нет.
плюсы что сделают?
Здравствуйте, B0FEE664, Вы писали:
BFE> Но ведь это зависит исключительно от стиля написания кода. Если хочешь писать на С++ как на Rust, то что мешает?
Ничего не мешает. Более того, тот стиль, что навязывает компилятор Rust, является в точности тем же стилем, что считается правилами хорошего тона в современном C++. Т.е. вся разница между этими двумя языками в том, что в C++ ты так пишешь на самодисциплине, а в Rust компилятор тебе по другому просто не даёт (ну точнее и в Rust можно написать код в худших традициях C, типа void* и т.п., но для этого придётся использовать unsafe блок).