@proGO

Страница 1462 из 1674
Берял
27.05.2018
09:46:43
Читабельность падает существенно
она наоборот увеличивается за счет абстракции

Пусть так. Почему это проблема?
почему деградация - проблема? сложный вопрос

Google
Берял
27.05.2018
09:48:32
Нет
аргументированно :)

Alexander
27.05.2018
09:49:25
Генерики я видел в яве. Темплейты - это другого уровня инструмент
Не многим лучше, нормальные дженерики в ML'ах и русте.

Нет
Да.

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
она наоборот увеличивается за счет абстракции
https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you/ Аргумент из 2001 года.

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
https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you/ Аргумент из 2001 года.
В статье парень рассказывает о YAGNI фактически. Естественно, не стоит всегда искать наиболее общее решение, но это не значит, что общие решения не нужны совсем.

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
Давайте за обсуждение дженериков и эксепшнов выдавать readonly на пару дней? Чат забит этим флудом всё то время, что он существует. Для этого есть специальный @goflood чат.
какое то странное сообщение. уходить в другое место от такой насыщенной темы, которая относиться к сабжу - понял! Вы просто спамер и рекламируете другой чат! кхх)

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
ещё как повышают

а ещё писабельность тоже

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

Mike
27.05.2018
13:27:44
а кто сказал, что интерфейсы повышают читабельность кода? другое дело, что интерфейс - это чекий маркер "детали реализациине важны"
Точно так же как и генерики. Вопрос: если генерики не нужны, зачем в го структуры основанные на генериках? Почему map и channel не реализовали на интерфейсах?

Sergey
27.05.2018
13:28:28
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
А у меня применение пустого интерфейса не пролезет сквозь ревью

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
Кастомный маршал с пустым интерфейсом? Нет
а можно сделать кастомный marshal+unmarshal без interface{}? через strings.Split?

Admin
ERROR: S client not available

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:43:36
(PS: там дальше reflect через каждое слово, это лучше, чем interface{} ?)

Daniel
27.05.2018
13:57:06
switch case, либо сложить функции в мапу
Свитч при этом читабельней

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
В районе 100 для интов поиск был быстрее
кстати интересно а как внутрях работает итерация по мапе. не будет for _, v:=range mapa { if v.id == id {} } быстрее чем mapa[id]

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
Как пхпшнику мне кажется что ваш код полное дерьмо
а то что отсутствие асинхронности, CGI, интерпретируемость языка, его runtime и прочее жрут лишние ресурсы вам не кажется?

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

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

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

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

Страница 1462 из 1674