
Alexander
03.07.2018
11:02:28
а ещё, помню в русте было интересное RFC с таким синтаксисом:
let SType::Int(i) = s else {
...
};
типа если значение сматчилось, то всё ок, идём дальше, иначе исполняется блок кода после else

Алексей
03.07.2018
11:05:48

Google

Alexander
03.07.2018
11:06:03
на го это бы выглядело как-то так
SType.Int(i) := s else {
...
}

Алексей
03.07.2018
11:06:33
так и так приходится пробрасывать ошибки вверх по стеку
по любому
только в Go это делается либо руками
либо через исключения для бедных (panic/recover)

Alexander
03.07.2018
11:07:20
хотя в го конечно тоже не очень, по сути в го альтернатива unchecked ексепшнам, что такое себе
а ещё они способствуют написанию кода игнорирующего ошибки совсем

Алексей
03.07.2018
11:08:36

Google

Alexander
03.07.2018
11:10:01
зло это когда из сигнатуры функции нельзя понять, может ли она выкинуть ексепшен/вернуть ошибку или нет

Алексей
03.07.2018
11:10:36
любая функция

Alexander
03.07.2018
11:10:45
хотя по мне когда нельзя понять из сигнатуры чистая функция или нет - это уже зло

Алексей
03.07.2018
11:10:47
и в го тоже кстати
любая функция может вызвать panic

Диёр
03.07.2018
11:11:39

Alexander
03.07.2018
11:11:56
любой код всегда может выкинуть ошибку
ну тут нужно понимать разницу между паникой из-за переполнения стека или из-за того, что ОС приказала упасть и обычной ошибкой, которая должна быть обработана

Диёр
03.07.2018
11:12:47

Алексей
03.07.2018
11:12:51

Alexander
03.07.2018
11:13:19

Диёр
03.07.2018
11:13:43
Даже банальное деление на 0

Алексей
03.07.2018
11:14:07
И вообще я убеждён, что разделение ошибку на фатальную и не фатальную - уже не очень хорошая вещь

Alexander
03.07.2018
11:14:13

Диёр
03.07.2018
11:14:22

Alexander
03.07.2018
11:15:02
Не все же проверят
да, собственно, если бы все всегда проверяли всё когда нужно, то немалая часть плюсов статической строгой типизации бы отпала

Алексей
03.07.2018
11:15:03
Не, точнее есть уж совсем фатальные ошибки, типа кончился стек, кончилась память, после которых скорее всего просто невозможно восстановиться

Google

Alexander
03.07.2018
11:17:23

Alexander
03.07.2018
11:19:11

Alexander
03.07.2018
11:19:45
да ничего не нужно. выдумки это все
Go - нормакльный язык!
в смысле, годный

Алексей
03.07.2018
11:21:30
Вообще реально, обработка ошибок в Go - это самая больная вещь, которая на мой взгляд сильно мешает нормальному процессу кодинга на Go. То как это сделано сейчас - не в какие рамки не лезет.
Вот поэтому мой первый петпроджект на Go, который я сейчас пишу станет последним. И писать я на этом языке, плодящим копипасту я больше не буду.

Alexander
03.07.2018
11:22:09
для системных администраторов - может быть, для программистов, которые какие-то непростые задачи, которые ещё никто нормально решил, решают, нет

Alexander
03.07.2018
11:22:31

Алексей
03.07.2018
11:22:35
да
причём "обработка" - это громко сказано
потому что в 90% случаев это просто проброс выше по стеку
потому что как правило ошибка не может быть полностью корректна обработана в том месте, где она возникла

Алексей
03.07.2018
11:24:11
потому что если бы это было не так, то такой вещи как "исключение" вообще бы не существовало ни в одном языке

Alexander
03.07.2018
11:24:55

Alexander
03.07.2018
11:25:20
Алексей, обработака ошибок - это не громко сказано. Просто это твоя работа, а не громко сказано. Никто не мешает не обрабатывать - сам будешь виноват, как программист

Алексей
03.07.2018
11:25:34
чего?

Alexander
03.07.2018
11:26:15
того! Тебя, тупиздень, заставляют проверять ошибки

Алексей
03.07.2018
11:26:17
я вообще про то, что в большей части кода ошибка просто не должна обрабатываться, а должна быть тупо проброшена вверх по стеку

Alexander
03.07.2018
11:27:52
ДА

Google

Алексей
03.07.2018
11:28:01
Причём как правильно упомянул другой Александр, если бы меня заставляли бы для этого писать лишь один символ, то я бы и не бомбил сейчас здесь в чате
но приходится постоянно КОПИПАСТИТЬ одинаковые if
вот в чём проблема

Alexander
03.07.2018
11:28:33
Коллеги

Alexander
03.07.2018
11:29:14
Коллеги. а зачем вам Go?

Alexander
03.07.2018
11:29:15
Дискуссия уж очень жаркая стала. Сейчас админы набегут

Constantine
03.07.2018
11:29:50
я тут

Алексей
03.07.2018
11:29:55

Admin
ERROR: S client not available

Constantine
03.07.2018
11:29:57
кого-то надо банить?

Алексей
03.07.2018
11:30:27
И компиляция в нативный код

Constantine
03.07.2018
11:31:14

Alexander
03.07.2018
11:31:27

Алексей
03.07.2018
11:32:41
Конечно надо платить, за GC тоже надо платить, за интерфейсы тоже надо платить какие-то копейки производительности.
Вот только за оператор проброс ошибки вверх по стеку и собственно замену копипасты одним-двумя символами платить то как раз не надо

Alexander
03.07.2018
11:33:47
GC кстати можно выключить переменной окружения, что очень хорошо для недолгоиграющих приложений

Алексей
03.07.2018
11:36:12
Причём самое обидное, что для меня это пожалуй единственный критичный недостаток Go

Alexander
03.07.2018
11:36:45
нет в жизни счастья :)

Алексей
03.07.2018
11:36:58
Я и без дженериков смогу обойтись, без перегрузки функций

Alexander
03.07.2018
11:37:02
Что ж поделаешь?

Google

Алексей
03.07.2018
11:37:18
ничего не поделаешь, вот в чём проблема
я бы и рад перейти на язык аналогичный Go, но избавленный от такого недостатка работы с ошибками, да вот только нет такого

Alexander
03.07.2018
11:38:11
это не проблема. Это просто то, как все есть. Еще будда Шакьямуни об этом говорил :)
2500 лет назад :)

Алексей
03.07.2018
11:39:15
так и есть, пока что

Alexander
03.07.2018
11:39:26
угу

Алексей
03.07.2018
11:40:10
но надеюсь у Go скоро появятся конкуренты в его области с подобной ему моделью горутин

Alexander
03.07.2018
11:40:53
и этих конкурентов тут же купит себе микрософт

Alexander
03.07.2018
11:42:23
но гугл их не пиарил и бабки в них не вкладывал

Алексей
03.07.2018
11:42:45
ну вот да
причём crystal же вроде довольно новый, а D уже вроде кучу лет существует и вообще хотел стать убийцей C++
и вот у меня почему то такое ощущение, что и Go встал бы в ряд этих не очень популярных языков, если бы не гугл

Alexander
03.07.2018
11:44:09

Алексей
03.07.2018
11:44:20
он же вроде там опциональный?
или я ошибаюсь?

Alexander
03.07.2018
11:44:59

Алексей
03.07.2018
11:45:05
а, понятно
тогда действительно очевидна причина провала на поприще замены крестам

Александр
03.07.2018
11:46:17
каким крестам?

Алексей
03.07.2018
11:46:25