@gogolang

Страница 1080 из 1630
Алексей
18.05.2018
13:00:55
ну то есть между понятиями "дженерики" и встроенными обощёнными структурами данных вы разницы не видете. Ок, так и запишем
На самом деле разницы особой не должно быть. Но так как великий роб пайк настолько великий, что не осилил запилить нормальные дженерики, то встроенные обобщённые типы - это магические сущности.

Vladislav
18.05.2018
13:02:32
И поэтому переменную нужно объявлять предварительно и передавать указатель на неё в качестве аргумента
И что в этом такого. Учитывая что обычная структура без указателя интерфею не соответсвует.

Pawel
18.05.2018
13:02:53
На самом деле разницы особой не должно быть. Но так как великий роб пайк настолько великий, что не осилил запилить нормальные дженерики, то встроенные обобщённые типы - это магические сущности.
я правильно понял. что ни какого полезного кода с обощёнными структурами данных,которых нет в Го, ты показать не можешь, но тем не менее считаешь что джененрики в Го всё равно нужны?

Alexander
18.05.2018
13:03:08
func (t *TaskManager) Command(task *models.Task, account *models.Account, params interface{}) error Или вот, попробуйте, называется, догадаться что там за параметры могут быть в params

Google
Alexander
18.05.2018
13:04:09
О. Это API дурацкий.
Нет, это отсутствие типов сумм.

Vladislav
18.05.2018
13:04:32
Начиная от пакета models. Заканчивая использованием не интрефейсов.

Alexander
18.05.2018
13:04:42
Jentry
18.05.2018
13:05:31
Начиная от пакета models. Заканчивая использованием не интрефейсов.
С интерфейсами код не перестает дублироваться, внезапно

Jentry
18.05.2018
13:06:38
мне кажется, что наш лагерь разбился на тех, для кого golang первый язык и они не понимают, зачем дженерики, и тех, кто видел/писал на плюсах/java/c#

Pawel
18.05.2018
13:07:56
Главное не забывать про то, что без типов сумм программировать нельзя. Не спрашивайте, что это значит. Это первая заповедь программиста! Она не подлежит обсуждению.

Алексей
18.05.2018
13:08:39
мне кажется, что наш лагерь разбился на тех, для кого golang первый язык и они не понимают, зачем дженерики, и тех, кто видел/писал на плюсах/java/c#
в C# дженерики только дураки используют, ведь дженерики не нужны же, все нормальные пацаны в C# используют исключительно object в джаве тоже

Google
Alexander
18.05.2018
13:08:45
Ты не структуры приводи а их использование.
Есть банальный кейс - есть очередь комманд для выполнения таск менеджеру. Эта очередь может быть очень большая. Ну и всё вроде бы хорошо, взял слайс, написал по быстрому обёртку, чтобы был ринг. Но тут нам вдруг понадобились приоритеты. И всё, приехали.

Jentry
18.05.2018
13:11:54
я писал всю жизнь на плюсах и C#. После Го меня от них тошнит
Так, а всю жизнь это сколько лабораторок?)

Vladislav
18.05.2018
13:12:46
Так, а всю жизнь это сколько лабораторок?)
Дада. Типичная аппеляция к "я просто более опытный" без каких либо оснований.

Jentry
18.05.2018
13:13:12
насколько мне известно боги плюсов с огромным презрением смотрят на го как на тупой кусок, где ничего нельзя, кроме как строгать рубанком, который выдал Роб) они больше в rust уходят и я с ними согласен

Алексей
18.05.2018
13:13:14
Vladislav
18.05.2018
13:14:32
Так тут же была аппеляция к авторитету роба пайка
Это был ответ на попытку просто принизить его непонятно зачем.

Pawel
18.05.2018
13:16:12
Дада. Типичная аппеляция к "я просто более опытный" без каких либо оснований.
Так в этом же сосоит весь цимес! Придать своим словам убедительности, самоутвердиться как-то

Ты не структуры приводи а их использование.
зачем? это же многабукф, куча саршип-опреаторов и прочего срашного говнокода, не убедительно будет совсем Чтобы не быть голословным, возьмем для примера код heap’а на Scala или на Go. Какой из них проще понять и рефакторить? Зачем в реализации heap’а на Scala такие абстракции, как stream, forest, fold, rank, flatten, map, singleton, monoid? Без них никак нельзя? :) https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/Heap.scala https://golang.org/src/container/heap/heap.go на этом савим жырную точку в этом базаре

Alexander
18.05.2018
13:17:22
Slava
18.05.2018
13:17:29
Лучше уж рубанком делать реальные проекты, чем ваять в подвале для себя :)

Jentry
18.05.2018
13:18:33
Лучше уж рубанком делать реальные проекты, чем ваять в подвале для себя :)
Абсолютно согласен, поэтому я пишу на го, но никогда бы не позволил себе заявлять, что это лучший ЯП и дженерики не нужны - их все ждут

Pawel
18.05.2018
13:19:53
Чем меньше абстракций - тем лучше?
Го - против бесполезных абстракций и монадирующих программистов. тут подробности https://medium.com/@kaveh.shahbazian/abstractions-the-costs-b0c00835aa8d

Алексей
18.05.2018
13:20:37
Антон
18.05.2018
13:21:00
Чем меньше абстракций - тем лучше?
Конечно, ведь чем меньше абстракций, тем выше шанс, что они уместятся в голове типичного гофера

Google
Sheldon
18.05.2018
13:21:01
мы тут дженерики обсуждали, а тут вдруг монады откуда то полезли
Ну дженерики и монады это же одно и то же, ненужные абстракции

Алексей
18.05.2018
13:21:07
И как же мы выбираем какая абстракция полезная, а какая нет?
Какие абстракции Роб Пайк встроил в Go - такие полензые, остальные - нет

Aleksandra
18.05.2018
13:22:19
Company: Bitfury (Blockchain) Position: Senior Go / Golang Developer Short Description: We are looking for a Go programming language expert to join our team to design APIs, functionality and solutions for the next-gen financial services based on cutting edge blockchain technologies. Location: Novosibirsk Salary: $3+K Net depending on skills Full JD: https://spb.hh.ru/vacancy/25674491 #вакансия

Pawel
18.05.2018
13:22:34
Ну дженерики и монады это же одно и то же, ненужные абстракции
примерно так. Дженерики мало кому нужны. Для особо упоротых есть github.com/ncw/gotemplate . Только почему-то дальше парочки стандартных структур (list, ring, set, heap) и алгоритмов (sort) дело не пошло. Причем необходимость list и ring высосана из пальца: — вместо list проще и эффективнее использовать стандартный слайс — ring используется чуть меньше, чем в одном проекте на миллион, где проще написать один раз реализацию этого ring под конкретный тип в 10 строчек. Set тоже легко заменяется стандартной map[key]struct{}, хотя синтаксический сахарок тут уже поприятнее. Остается лишь дженерики для heap и sort, которые необходимы лишь в небольшом проценте оптимизированных по скорости программ, где стандартные heap и sort на интерфейсах не подходят из-за накладных расходов на вызов интерфейсных функций. Приведите примеры из настоящих программ, где еще могут понадобиться эти дженерики? вот только если у вас есть трудности с пониманием того, чем настоящая программа отличается от академического плана - лучше не надо

Jentry
18.05.2018
13:22:50
Отключаюсь, резюмируйте потом, пожалуйста- чем закончился очередной флейм и кто победил

Алексей
18.05.2018
13:23:45
примерно так. Дженерики мало кому нужны. Для особо упоротых есть github.com/ncw/gotemplate . Только почему-то дальше парочки стандартных структур (list, ring, set, heap) и алгоритмов (sort) дело не пошло. Причем необходимость list и ring высосана из пальца: — вместо list проще и эффективнее использовать стандартный слайс — ring используется чуть меньше, чем в одном проекте на миллион, где проще написать один раз реализацию этого ring под конкретный тип в 10 строчек. Set тоже легко заменяется стандартной map[key]struct{}, хотя синтаксический сахарок тут уже поприятнее. Остается лишь дженерики для heap и sort, которые необходимы лишь в небольшом проценте оптимизированных по скорости программ, где стандартные heap и sort на интерфейсах не подходят из-за накладных расходов на вызов интерфейсных функций. Приведите примеры из настоящих программ, где еще могут понадобиться эти дженерики? вот только если у вас есть трудности с пониманием того, чем настоящая программа отличается от академического плана - лучше не надо
вместо list проще и эффективнее использовать стандартный слайс интересно почему это?

Pawel
18.05.2018
13:24:29
Отключаюсь, резюмируйте потом, пожалуйста- чем закончился очередной флейм и кто победил
какая разница? Человечество спасут монадирующие программисты. Инфа 100%

Maxim
18.05.2018
13:24:46
Флейма не было бы если бы все в чате имели одинаковые скиллы)

Aleksandr
18.05.2018
13:25:25
ладно, ребятки, давайте 5 минут на завершение, или я принудительно завершу

Jentry
18.05.2018
13:27:07
какая разница? Человечество спасут монадирующие программисты. Инфа 100%
Я не был за усложнение, но притягивать дженерики к рокет-саенсу по-моему это слишком, выглядит неуклюже доказывать будто бы это не нужно

Alexander
18.05.2018
13:27:34
ух ты ж ёшкин кот как это важно - скала и скалаЗЗ, этож совсем другое, простите
вообще-то да. scalaz - отдельная либа. которая вообще никакого отношения к стандартной библиотеке не имеет. так что ваше "ух ешкин кот", это высер какой-то и полное незнание матчасти. за сим тоже откланиваюсь.

Алексей
18.05.2018
13:28:39
Резюме: дженерики не нужны, потому что Роб Пайк так сказал, но встроенные обобщённые типы почему то нужны. И да, встроенных обобщённых типов должно хватить всем, если вдруг не хватит, значит лучше взять монады из скалы (причём тут монады и скала мы так и не выяснили).

Vladislav
18.05.2018
13:28:45
Я не был за усложнение, но притягивать дженерики к рокет-саенсу по-моему это слишком, выглядит неуклюже доказывать будто бы это не нужно
просто сначала думаем зачем нужно, потом добаляем, нужно для контейнеров. Зачем контейнеры сложные в современном мире, когда можно рядом базу с кучей индексов поднять или еще что непонятно.

Google
Vladislav
18.05.2018
13:31:11
Поднять базу ради контейнера? Это мощно
Так стейтлесс и микросерисы. Скейлится хорошо зато.

Антон
18.05.2018
13:32:00
Так стейтлесс и микросерисы. Скейлится хорошо зато.
Кхм. По твоему, если состояние выносится в БД — это stateless?

Vladislav
18.05.2018
13:32:39
Кхм. По твоему, если состояние выносится в БД — это stateless?
ну это еще не все, конечно. Просто контейнеры - один из стейтов.

Jentry
18.05.2018
13:33:41
ну это еще не все, конечно. Просто контейнеры - один из стейтов.
Пошел полный бред дальше, извините. Но чтоб контейнеры называли стейтом в контексте стейтлесс-приложений это я еще не видел

Admin
ERROR: S client not available

GoodMoodDealler
18.05.2018
13:34:01
Возникало
Как решили?

Emil
18.05.2018
13:35:53
Как решили?
Прокидыванием внутрь контейнера докер сокета и там уже через докер апи по сопоставлению айпи контейнера, но у нас не только для этого был сокет внутрь прокинут

Emil
18.05.2018
13:36:38
Ну тогда вот решение

Mike
18.05.2018
13:36:50
Весело у вас тут

Emil
18.05.2018
13:37:06
Там в итоге можно даже курлом и jq обойтись

Pawel
18.05.2018
13:45:07
вместо list проще и эффективнее использовать стандартный слайс интересно почему это?
ну вот видишь, ты даже такие простые вопросы не знаешь, на которые любой юниор ответит будучи ночью разбуженным. Как с тобой можно о чём то говорить при такой пропасти в квалификации?

Pawel
18.05.2018
13:46:15
нуну

Kirill
18.05.2018
14:08:36
Здравствуйте, никто не хочет побыть ментором? Мне нужен ментор\помошник возможно консультант, не знаю как правильнее будет звучать - проконсультировать по архитектуре и так далее, выслушать мои мысли и скорректировать их в нужном направлении. Не задаю вопросов не прогуглив всё что только можно, неплохо знаю английский, буду задавать только конкретные вопросы касаемо направления и лучшего решения в той или иной ситуации. Не бесплатно конечно. И не слишком часто. Буду рад фидбеку, спасибо

Google
Aleksandr
18.05.2018
14:11:33
чат в том числе для этого. бесплатно. велкам

Oleg
18.05.2018
14:24:45
У кого-нибудь возникала необходимость засунуть в reflect.Value у которого к примеру *int внутри и засунуть в него другой reflect.Value c типом int внутри и наоборот. бьюсь на этим вопросом уже пятый час и не помогли многократное чтение документации, гугл. Может кто справлялся с подобной проблемой? https://play.golang.org/p/OpYQHIocNF2

GoodMoodDealler
18.05.2018
14:54:10
path, id, err = list[0], strconv.Atoi(list[1]) Как записать это правильно? ./scan.go:356: multiple-value strconv.Atoi() in single-value context ./scan.go:356: assignment count mismatch: 3 = 2

Alan
18.05.2018
14:54:48
Ты хочешь заполнить 3 переменные, а кладешь всего 2

GoodMoodDealler
18.05.2018
14:55:47
Ты хочешь заполнить 3 переменные, а кладешь всего 2
path, id = list[0], strconv.Atoi(list[1]) /scan.go:356: multiple-value strconv.Atoi() in single-value context

Andrei
18.05.2018
14:55:57
path, id, err = list[0], strconv.Atoi(list[1]) Как записать это правильно? ./scan.go:356: multiple-value strconv.Atoi() in single-value context ./scan.go:356: assignment count mismatch: 3 = 2
у го тюплы очень ограниченны, он так распаковывать не умеет (я вообще на вскидку не помню, какой язык умеет так распаковывать)

Andrei
18.05.2018
14:56:22
даже питон вот конкретно так не умеет

GoodMoodDealler
18.05.2018
14:56:28
Крч как мне изящнее поступить чтобы не заводить кучу переменных?

Крч как это можно сделать изящно?

Подскажите

Aleksandr
18.05.2018
14:57:18
в любом случае раскидать в 2 строки, в одной определить path, в другой id и err

Andrei
18.05.2018
14:58:15
Умеет
https://repl.it/repls/DifferentTiredCoordinate не умеет

Aleksandr
18.05.2018
14:59:02
ну с оговорками a, (b, c) = 1, return_tuple()

в любом случае в голанге так не выйдет

Andrei
18.05.2018
15:01:06
ну с оговорками a, (b, c) = 1, return_tuple()
ну так ты фактически распаковываешь на две переменные, а потом вторую переменную еще на две, это именно сахар

Страница 1080 из 1630