LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Лисп в среднем примерно так же надёжен, чем голанг, и ломается примерно в тех же ситуациях. Ладно, когда-нибудь составим перечень ситуаций и для каждого я опрошу ъ гоферов, какая тут должна быть обработка. Но это будет чисто вопрос культуры.

Всё же ещё раз отмечу, что высказывания типа этого

GO does not have an exception mechanism you can't throw exceptions. During the execution when Go detects these mistakes, it panics

и

Go has no try/catch mechanism. The reason for this is simple: there is no exception.

которые повторяются в статьях как мантра - это ложь. В голанге исключения есть, но они названы по-другому. Это ложь в целях маркетинга, весьма обычная вещь. Например, такое же есть в Хаскеле, когда тайпклассы объявляются панацеей и нужно найти незазаобмированного программиста, который тебе скажет, что тайпклассы - это то же, что в других языках интерфейсы. Но она всегда бесит. Программирование близко к математике, а в математике не место такой грубой лжи и зомбированию.

Также очень плохой совет в effective go вот такой:

If the problem can be masked or worked around, it's always better to let things continue to run rather than taking down the whole program.

Такой подход растит проходимцев от инженерии. Я вижу его везде вокруг, но это не значит, что я с ним согласен.

И наконец, так и не достигнуто понимание гоферами того, что паника и возврат err - это два способа добиваться одного и того же результата, причём паника (исключения) - как правило, более удобна. А возврат ошибки в идиоматичном виде, когда возвращается просто error, который ни о чём - это плохая практика. Конструкция

if err != nil { 
  return
}
- ровно то же самое, что не обработка исключения в других языках, которая, в отличие от данной конструкции, занимает ноль строк.

По хорошему, если уж обрабатывать ошибки, то их нужно тщательно сортировать, и этот синтаксис (со switch) едва ли не многословнее блока except.

Т.е., вливаясь в ряды гоферов, я предвижу вот такие вот культурные проблемы, которые будут мне мешать работать в коллективе.

Исходная версия den73, :

Лисп в среднем примерно так же надёжен, чем голанг, и ломается примерно в тех же ситуациях. Ладно, когда-нибудь составим перечень ситуаций и для каждого я опрошу ъ гоферов, какая тут должна быть обработка. Но это будет чисто вопрос культуры.

Всё же ещё раз отмечу, что высказывания типа этого

GO does not have an exception mechanism you can't throw exceptions. During the execution when Go detects these mistakes, it panics

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

Также очень плохой совет в effective go вот такой:

If the problem can be masked or worked around, it's always better to let things continue to run rather than taking down the whole program.

Такой подход растит проходимцев от инженерии. Я вижу его везде вокруг, но это не значит, что я с ним согласен.

Т.е., вливаясь в ряды гоферов, я предвижу вот такие вот культурные проблемы, которые будут мне мешать работать в коллективе.