
Берял
27.05.2018
09:46:43

Daniel
27.05.2018
09:48:05

Google

Берял
27.05.2018
09:48:32

Alexander
27.05.2018
09:49:25

Sergey
27.05.2018
09:50:05
Нет
смотрите, нормальный аргумент:
при использовании дженериков мы пишем код 1 раз, а не N копипаст
но представим, что мы пишем на го, и у нас есть N копипасченных функций. В случае обнаружения ошибки в алгоритме, нужно не забыть исправить все функции

Alexander
27.05.2018
09:52:09
Так тупо, в го постоянно, чтобы понять что делает код мне приходится читать простыни с if err != nil через строчку, в каком нибудь русте обычно хватает сигнатур и автоматически сгенеренной доки. И это при том, что на го мне приходится писать на порядок больше.

Daniel
27.05.2018
10:00:17

Sergey
27.05.2018
10:06:22
(а на моё обилие аргументации ответите?
t.me/proGO/146092
t.me/proGO/146094
t.me/proGO/146107 )

some_random_anonymous
27.05.2018
10:07:05

Sergey
27.05.2018
10:09:08
(там даже не упоминаются дженерики)
у него есть ещё и такая статья (с жирным намёком на дженерики; upd: не только намёком, но даже явным словосочетанием "you might want to abstract it into a generic function" )
https://www.joelonsoftware.com/2006/08/01/can-your-programming-language-do-this/

Alexander
27.05.2018
10:14:18

Ross
27.05.2018
10:34:45
Ты и тут свои гифки постишь, давай новые.

Google

some_random_anonymous
27.05.2018
10:36:01
Давайте за обсуждение дженериков и эксепшнов выдавать readonly на пару дней? Чат забит этим флудом всё то время, что он существует. Для этого есть специальный @goflood чат.

Antony
27.05.2018
10:39:31

Crypt
27.05.2018
10:40:48

Daniel
27.05.2018
10:41:36

Sergey
27.05.2018
10:41:54

Alexander
27.05.2018
10:44:24

Sergey
27.05.2018
10:44:32
но... как же...
в общем, ответ "там нечего править" ещё хуже предыдущих аргументов "за" дженерики

Alexander
27.05.2018
10:47:41


Daniel
27.05.2018
13:11:34
коллеги, вы очень смешные. в go нет генериков, и их нет по вполне ясным соображениям. кой толк тут рассуждать о том, какие они прекрасные, генерики...
да, генерализованный код - тривиальный, и да, код каналов тривиален тоже. там есть подвязки на стек и шедулер, и они немного разбавляют скуку, но в принципе - там слайс и три мутекса. написать канал можно примерно за час, и будет в нем сотня строк.
рассуждать о том, как сильно генерики повышают читабельность кода - ну, такое... если с первого взгляда на код нельзя сказать, в каком каталоге надо искать имплементацию - это читаемость не повышает, совсем не повышает.
отдельно, конечно, прекрасны отсылки к rust и meta language. если он прекрасны - пишите на них, никто же не неволит вас писать на go. ах, вакансий нет? ну извините...


Mike
27.05.2018
13:20:17
коллеги, вы очень смешные. в go нет генериков, и их нет по вполне ясным соображениям. кой толк тут рассуждать о том, какие они прекрасные, генерики...
да, генерализованный код - тривиальный, и да, код каналов тривиален тоже. там есть подвязки на стек и шедулер, и они немного разбавляют скуку, но в принципе - там слайс и три мутекса. написать канал можно примерно за час, и будет в нем сотня строк.
рассуждать о том, как сильно генерики повышают читабельность кода - ну, такое... если с первого взгляда на код нельзя сказать, в каком каталоге надо искать имплементацию - это читаемость не повышает, совсем не повышает.
отдельно, конечно, прекрасны отсылки к rust и meta language. если он прекрасны - пишите на них, никто же не неволит вас писать на go. ах, вакансий нет? ну извините...
Как именно интерфейс дает знание в каком каталоге нужно искать имплементацию?


Alexander
27.05.2018
13:20:28
коллеги, вы очень смешные. в go нет генериков, и их нет по вполне ясным соображениям. кой толк тут рассуждать о том, какие они прекрасные, генерики...
да, генерализованный код - тривиальный, и да, код каналов тривиален тоже. там есть подвязки на стек и шедулер, и они немного разбавляют скуку, но в принципе - там слайс и три мутекса. написать канал можно примерно за час, и будет в нем сотня строк.
рассуждать о том, как сильно генерики повышают читабельность кода - ну, такое... если с первого взгляда на код нельзя сказать, в каком каталоге надо искать имплементацию - это читаемость не повышает, совсем не повышает.
отдельно, конечно, прекрасны отсылки к rust и meta language. если он прекрасны - пишите на них, никто же не неволит вас писать на go. ах, вакансий нет? ну извините...
Вот вы пишете тираду о генериках.
> если с первого взгляда на код нельзя сказать, в каком каталоге надо искать имплементацию
Но при чём тут интерфейсы?


Mike
27.05.2018
13:21:20
Я просто оставлю это здесь

Danil
27.05.2018
13:21:22
А ведь вначале
Мы начали
Из фразы про изучений С

some_random_anonymous
27.05.2018
13:21:39
Толпы леммингов теперь эту картинку будут пихать везде и повсюду

Danil
27.05.2018
13:21:42
Как первого яп

Google

Mike
27.05.2018
13:22:24

Daniel
27.05.2018
13:23:42

Sergey
27.05.2018
13:24:08
ещё как повышают
а ещё писабельность тоже

Alexander
27.05.2018
13:24:19

Daniel
27.05.2018
13:24:26
я понял, у вас альтернативное представление о читабельности

Mike
27.05.2018
13:27:44

Sergey
27.05.2018
13:28:28

Daniel
27.05.2018
13:29:48

Alexander
27.05.2018
13:30:08
я понял, у вас альтернативное представление о читабельности
Читабельный код в вакууме, это когда ты можешь прочитать какой-то кусок кода и понять, что он делает без того, чтобы идти вглубь по символам. При этом на читабельность влияют такие факторы как краткость, информативность и понятность. Код Го и вправду частно очень понятный код, но он сильно проседает по части краткости и информативности. Гошного кода приходится читать много, названия функций и методов в го часто малоинформативны из-за отсутствия обобщённых интерфейсов.

Daniel
27.05.2018
13:30:53

Alexander
27.05.2018
13:31:15
Но и понятность Го теряется тогда, когда начинаются пляски с interface{} и прочими рефлексиями.

Alexander
27.05.2018
13:31:39
А пляски эти часто начинаются именно из-за отсутствия генериков.

Daniel
27.05.2018
13:31:57
А у меня применение пустого интерфейса не пролезет сквозь ревью

Mike
27.05.2018
13:32:04

Sergey
27.05.2018
13:32:15

Daniel
27.05.2018
13:32:32
А?!

Mike
27.05.2018
13:32:44

Sergey
27.05.2018
13:32:56
А?!
кастомный marshal у вас не пройдёт ревью?

Subbotin
27.05.2018
13:33:07

Google

Alexander
27.05.2018
13:33:21

Daniel
27.05.2018
13:33:22
Кастомный маршал с пустым интерфейсом? Нет

Sergey
27.05.2018
13:34:09

Daniel
27.05.2018
13:34:16

Admin
ERROR: S client not available

Daniel
27.05.2018
13:34:31

Sergey
27.05.2018
13:34:40
пример срочно

Alexander
27.05.2018
13:35:14

Daniel
27.05.2018
13:35:25
Доку почитайте. В районе интерфейса Marshaler

Alexander
27.05.2018
13:37:41

No
27.05.2018
13:39:04
Подскажите, не могу решить, уже не знаю что придумать. На AJAX приходит ответ json, в одном из массива лежит строка с названием функции с её параметрами. Как можно из вызвать?

Sergey
27.05.2018
13:39:58

Alexander
27.05.2018
13:43:13

Sergey
27.05.2018
13:43:36
(PS: там дальше reflect через каждое слово, это лучше, чем interface{} ?)

Daniel
27.05.2018
13:57:06

Sergey
27.05.2018
13:58:44
но вы же сами предложили посмотреть

Daniel
27.05.2018
13:59:44
Я предложил посмотреть, как своему типу приписать кастомный (un)marshaler

Google

Sergey
27.05.2018
14:04:42

Subbotin
27.05.2018
14:07:09

Savely
27.05.2018
14:10:20

Subbotin
27.05.2018
14:10:51
не понял

Savely
27.05.2018
14:11:07
впрочем я предпочитаю:
if e, ok := mapa[id]; ok {
}

Subbotin
27.05.2018
14:11:49
а. ну проверку на присутствие это понятно.

Roman
27.05.2018
14:26:17

Alexandr
27.05.2018
14:29:49
товарищи, как бесконечно залупить массив? подскажите плз

Sergey
27.05.2018
14:30:50

Alexandr
27.05.2018
14:31:42
for {
if i == len(array) { i = 0 }
}
вот только хотел написать - проверять на каждой итерации счётчик а не последний ли это индекс - как-то не комильфо. Элементов много, а полезная ситуация - одна. Есть какой то более эффективный способ?

Roman
27.05.2018
14:31:47
тип Type тоже экспоррируется, ничего не понимаю

Sergey
27.05.2018
14:32:23

Alexandr
27.05.2018
14:32:39

Sergey
27.05.2018
14:33:15
узнать, и понять, почему в го из коробки так нельзя