Size: a a a

Rust — русскоговорящее сообществo

2020 April 02

OA

Oleg Andreev in Rust — русскоговорящее сообществo
Alexander Tchitchigin
2.-().pow(2) - вот так всё строго понятно! 😂
welcome to ruby
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
AlexG
Гайз, есть одни вопрос. Я скажем так, ОЧЕНЬ начинающий в Rust, по работе я пишу на C#, и общие подходы и парадигмы написания кода на .net засели в голове очень плотно. Попытка изучить Python поломала мне мозг конкретно, по причине использование в python всяких SOLIDов. Со временем пришло понимание что на каждом языка надо писать правильно :) C# это ООП, Python это больше ФП. А как писать на Rust правильно?
на любом языке можно писать на фортране
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
AlexG
Гайз, есть одни вопрос. Я скажем так, ОЧЕНЬ начинающий в Rust, по работе я пишу на C#, и общие подходы и парадигмы написания кода на .net засели в голове очень плотно. Попытка изучить Python поломала мне мозг конкретно, по причине использование в python всяких SOLIDов. Со временем пришло понимание что на каждом языка надо писать правильно :) C# это ООП, Python это больше ФП. А как писать на Rust правильно?
Это хороший и правильный вопрос, он у меня тоже возник в начале моего пути в Rust)

Для себя я такой ответ нашёл: программирования на Rust - это смесь ПП + ФП + ООП. Из ПП - программа по-прежнему состоит из последовательности утверждений и их исполнения, можно байтоёбством увлекаться. Из ФП - ADT (алгебраические типы данных), адапторы, итераторы, трейты и т.д., ООП дизайн тоже можно использовать. У каждого проекта свои задачи, исходя из которых и выбирается парадигма, но в большинстве случаев Rust - это процедурщина с элементами ФП.
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Активно использовать ADT и сопоставление с образом - это в духе Rust. Динамической диспетчеризацией (поздним связыванием) тут сильно не увлекаются, но в моноиды в категории эндофункторов тоже не уходят, отсюда вывод - скорее смесь ПП + ФП.
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Но стоит понимать, что ФП очень кастрированное, буквально 3-4 идеи оттуда. Встроенного каррирования нет (но есть библиотека), композиции встроенной нет (но, опять же, есть библиотека), примитивов ТК нет (но есть библиотека, которая скорее proof-of-concept, чем для реального использования).
источник

H

Hadji in Rust — русскоговорящее сообществo
А что за ТК? ТайпКлассы?
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Из ООП - методы (object.foo() вместо foo(object)), часто такой код имеется:

object.foo();
object.bar();


(Но я стараюсь по возможности избегать его).
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Hadji
А что за ТК? ТайпКлассы?
Теория категорий
источник

H

Hadji in Rust — русскоговорящее сообществo
А, ок)
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Mike Lubinets
Чтобы научиться писать идиоматично нужно читать чужой код, и просить ревьювить свой (кстати, в этом чате многие откликаются)
+
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
AlexG
А есть какая-то книга про эту самую идиоматику?
Есть книга по функциональному программированию на Rust (если надо - в личинку перекину). Вот есть репозиторий с шаблонами:

https://github.com/rust-unofficial/patterns
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Mike Lubinets
Нет, связи абсолютно никакой не существует между идиоматичностью и корректностью с точки зрения компилятора.
+
источник

AN

Alex Naraito in Rust — русскоговорящее сообществo
Hadji
Кстати, раз уж речь зашла, то, к примеру, для Скалы Одерски попытался в свое время систематизировать уровни знания языка:
https://www.scala-lang.org/old/node/8610

Плюс есть такая штука для ФП в целом:
https://pbs.twimg.com/media/CydL5EYUsAAI-61?format=jpg&name=4096x4096

Если кто-то знает про похожие штуки для Раста, поделитесь, пожалуйста.

Я понимаю, что это на 100% серьезно воспринимать нельзя, но с точки зрения новичка дает хороший обзор, мне кажется
Дайте ссылку на это
источник

H

Hadji in Rust — русскоговорящее сообществo
Alex Naraito
Дайте ссылку на это
На что именно? Я же обе ссылки дал, которые упомянул
источник

AN

Alex Naraito in Rust — русскоговорящее сообществo
Сори картинку глянул а про ссылки забыл
источник

A

AlexG in Rust — русскоговорящее сообществo
Благодарю за ответы, понял что пока мне рано к этому стремится. А после фразы что Rust это "это смесь ПП + ФП + ООП" я почувствовал как у меня возле макушки что-то треснуло и упало на дно черепа =) Будем пилить! Еще раз, спасибо за ответы!
источник

AN

Alex Naraito in Rust — русскоговорящее сообществo
Я думаю, что нужно понять именно парадигмы, а не отдельный язык
источник

A

Aleksandr Khristenko in Rust — русскоговорящее сообществo
Никто не в курсе, можно ли в clap сделать так, чтобы команда не падала если туда передаются несконфигурированные аргументы?
источник

ML

Mike Lubinets in Rust — русскоговорящее сообществo
Aleksandr Khristenko
Никто не в курсе, можно ли в clap сделать так, чтобы команда не падала если туда передаются несконфигурированные аргументы?
А что она должна делать в этом случае?
источник

A

Aleksandr Khristenko in Rust — русскоговорящее сообществo
Mike Lubinets
А что она должна делать в этом случае?
Работать так, как будто этого аргумента и нет.
источник