Size: a a a

2020 June 24

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
Позволь с тобой не согласиться. Если посмотреть на сообщество в том-же телеграме то там именно плюсвиков довольно мало. И куча народа, которая с других высокоуровневых языков пришла.
А на счет веба, есть куча языков, которые для веба подходят больше. Ибо остутствие гц/исключений/наличие заимствования накладывает свои ограничения.
больше по реддиту ориентируюсь

Option/Result из коробки так то удобнее чем эксепшены. не вникал в детали реализации в расте, но концепция то общая
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
больше по реддиту ориентируюсь

Option/Result из коробки так то удобнее чем эксепшены. не вникал в детали реализации в расте, но концепция то общая
Мне хватало users.rust-lang.org, internals.rust-lang.org и чатиков телеграма.
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
больше по реддиту ориентируюсь

Option/Result из коробки так то удобнее чем эксепшены. не вникал в детали реализации в расте, но концепция то общая
У них та же проблема что и у чекедэксепшенов, появление Resut где-то в глубине колстека в случае, если обработать надо наверху повлияет на сигнатуру всех промежуточных функций.
источник

k

knopkod4v in PHP
Aleksandr Khristenko
У них та же проблема что и у чекедэксепшенов, появление Resut где-то в глубине колстека в случае, если обработать надо наверху повлияет на сигнатуру всех промежуточных функций.
а что в этом плохого? 🤔
источник

A

Aleksandr Khristenko in PHP
Плюс нет возможности как-то удобно на тайплевеле склеивать ошибки. Необходимо создавать свои енумы с ошибками на каждом уровне(довольно много бойлерплейта) или же использовать что-то типа anyhow и мирится с его недостатками(на уровне типов не видно что вообще может вылететь и не особо удобно обрабатывать).
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
больше по реддиту ориентируюсь

Option/Result из коробки так то удобнее чем эксепшены. не вникал в детали реализации в расте, но концепция то общая
Кстати, забавно, но в хаскеле есть исключения =)
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
Ну и да, асинхронность появилась давным давно в виде Futures. Это в виде async/await сахара она до стейбла докатилась недавно.
Ну и асинхронность раста нельзя сравнивать с джавой, у них разные подоходы. Futures у раста идут с pull модельно, а не push как в остальных языках, что дает некотоыре преимущества. Ну и корутины там получаются stackless.
смотря что сравнивать. вот что не оч ясно это как пробрасывать контекст, работать с дедлайнами и все такое
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
смотря что сравнивать. вот что не оч ясно это как пробрасывать контекст, работать с дедлайнами и все такое
А у тебя желания посмотреть на хаскель/современную скалу не появлялось?
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
У них та же проблема что и у чекедэксепшенов, появление Resut где-то в глубине колстека в случае, если обработать надо наверху повлияет на сигнатуру всех промежуточных функций.
в этом плане котлин почище будет. но опять же никто не заставляет весь Error тащить по стеку, если можно локально обработать на какое-то дефолт значение
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
Плюс нет возможности как-то удобно на тайплевеле склеивать ошибки. Необходимо создавать свои енумы с ошибками на каждом уровне(довольно много бойлерплейта) или же использовать что-то типа anyhow и мирится с его недостатками(на уровне типов не видно что вообще может вылететь и не особо удобно обрабатывать).
вот даже не было такой необходимости. есть кейс?
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
А у тебя желания посмотреть на хаскель/современную скалу не появлялось?
современная это Zio?
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
вот даже не было такой необходимости. есть кейс?
Ну у тебя есть func1, которая возвращает Result<Error1>, есть func2 которая возвращает Result<Error2> и есть функция func3 которая вызывает эти 2 функции и должна прокинуть ошибки выше.
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
современная это Zio?
Современная это функциональная, zio в том числе но не обязательно.
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
Ну у тебя есть func1, которая возвращает Result<Error1>, есть func2 которая возвращает Result<Error2> и есть функция func3 которая вызывает эти 2 функции и должна прокинуть ошибки выше.
а зачем вызывать func2, если func1 уже вернул ошибку и ее нужно прокидывать выше?
источник

A

Aleksandr Khristenko in PHP
Sergey Zolotov
а зачем вызывать func2, если func1 уже вернул ошибку и ее нужно прокидывать выше?
код вида
let a = func1()?;
let b = func2()?;
Ok(a+b)
как пример
источник

A

Aleksandr Khristenko in PHP
А написать что-то вида Result<Error1 && Error2> нельзя. Придется создавать новый енум Error3 в который конвертировать ошибки из Error1 и Error2.
источник

A

Aleksandr Khristenko in PHP
А дальше еще веселее получается. Если у нас одна функция вызывает func1 и func2, а вторая func1 и func3, где каждая функция может возвращать свои ошибки то что делать?
Делать один енум, который содержит все возможные ошибки? Тогда на уровне типов будет выглядеть что функция может выкинуть ошибку которую она никогда не выкинет.
Делать 2 енума? Так получается много бойлерплейта.
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
код вида
let a = func1()?;
let b = func2()?;
Ok(a+b)
как пример
val a = func1() ?: return err;
val b = func2() ?: return err;

Ok(a + b)

условно
источник

MH

Mickhael Hugo in PHP
Всем привет! Поделитесь опытом, сколько в среднем стоит работа backend программиста за час?
источник

SZ

Sergey Zolotov in PHP
Aleksandr Khristenko
А написать что-то вида Result<Error1 && Error2> нельзя. Придется создавать новый енум Error3 в который конвертировать ошибки из Error1 и Error2.
а зачем тебе такое тащить по всему стеку?

скажем если разделять ошибки как на критические (внезапное поведение, пропал коннект к базе и тд) которые обрабатывать нужно только глобально
и местные IO ошибки (сделал запрос куда-то, вернулось 400/500), которые ты сразу обрабатываешь и пишешь в логи

то я не вижу смысла такое делать
источник