Daniel
в первую очередь потому, что слишком многовариантные конструкции позволяет делать
Daniel
по мне, так надо выделить два-три основных применения а все остальное пользователю конфигурять не давать
Roman
в первую очередь потому, что слишком многовариантные конструкции позволяет делать
типа reference to const и const reference? это да. Но если так не делать то можно получить ограничения на которые потом будут плеваться
Alexander
щас бы иммутабельность на уровне языка, как в кложурке.
Daniel
кложурка - она ведь лисп. а лисп - это чистые функции
Roman
@onokonem кстати как думаешь кому можно бы было на review отправить? кто будет заинтересован?
Daniel
пока непонятно
Daniel
у нас тут или хейтеры go, или хейтеры иммутабельности :)
Roman
аналогично, в любом случае ещё на форум выставлю как только последнии штрихи дорисую
Roman
у нас тут или хейтеры go, или хейтеры иммутабельности :)
хейтеров иммутабельности существовать не может, могут существовать только люди которые работают одни над проектами не более 5к LOC и следственно не понимают зачем всё это ну и конечно безответственные люди которым "и так сойдёт, меня это не затронет"
Roman
software engineering is all about trade offs
Anonymous
Кстати, я вот всегда замечал что последователи ФП яростно дрочатъ на иммутабильность, неизменность данных (из-за этого не юзают циклы, предпочитая рекурсию и пр.). Но почему в проде всякие Хаскели и Кложуры абсолютно не популярны?
Pavel
ключевое слово "как-то"))
Собери статистику по багам — сколько багов в этих проектов было из тех, что твой пропозал фиксит.
Pavel
ключевое слово "как-то"))
Ну в продакшене они стабильны.
snip
Собери статистику по багам — сколько багов в этих проектов было из тех, что твой пропозал фиксит.
Вот хорошая и правильная идея исходить из реальных кейсов и именно их решать, а не брать концепцию из другой экосистему и пытаться натянуть её придумывая гипотетические кейсы
Pavel
ключевое слово "как-то"))
Просто ты давишь за что-то абстрактное. Но у тебя есть большие открытые проекты и куча багов и PR. Покажи примеры.
Daniel
вручную их анализировать, что ли?!
Alexey
Парни, а как вы организовываете свой код? Придерживаетесь ли вы правил дядюшки боба (про 4 layer), или же вы все разделяете? К примеру go way, это иметь в домене entity и интефейсы сервсиов, репозиториев. А дробить пакеты под enity, интерфейсами для репозиториев, сервисов и хэндлеров считается вроде как не кошерно.
Pavel
Эти данные в пропозале только поднимут ему ценность.
Roman
Просто ты давишь за что-то абстрактное. Но у тебя есть большие открытые проекты и куча багов и PR. Покажи примеры.
Вы мне за это заплатите?)) Мне сейчас никто за этот пропосал не платит, я можно сказать дарю комьюнити своё время ради общего блага. Ты не поверишь сколько нервов и времени у меня уже ушло на данный документ а ещё предстоит сравнивать его с другими предложениями. Я вам просто скажу, что вид homo sapiens сделало доминирующим 2 способности: 1. способность абстрактного мышления 2. способность принимать гипотезы всерьёз если вы считаете, что описанные сценарии не могут быть опасными, тогда я вам ничем помочь не могу.
Pavel
Я не понял тут отрицают что данные по большим открытым проектам сделают пропозал лучше?
Daniel
жалуются на свою неспособность быстро такие данные собрать
Pavel
В чем проблема, ты говоришь что в больших проектах — проблемы. Факт чек читателям делать что ли?
snip
Если проблема есть значит и реальные кейсы должны быть иначе это надуманная проблема
Daniel
хотят - пусть делают
Pavel
Топовый НЛП.
Roman
@selslack Павел, вы не поняли сути моих слов. Суть проста: я человек. У меня 14 часов в день максимум. Я просто не успеваю. Детальный анализ проблем таких проектов обойдётся недёшево. Если же это был намёк мне помочь подкрепить документ аргументами из больших проектов на Go - с радостью! Очень буду рад!
Daniel
Топовый НЛП.
коллега, я в шаге от того, чтобы выдать вам ro
Roman
кстати, если не секрет, скажите, как вы пришли к этому proposal: изучали решение этой проблемы в разных языках, или исходя из изучения исходников проектов >5 LOC ? или оба варианта? или другой вариант?
многолетний опыт подсказывает, как бы субъективно это не звучало. Вся аргументация с приближенными к реальности примерами описаны в документе и были расжованы мною в чате уже неоднократно. Если вам нужны конкретные примеры из конкретных проектов как доказательство гипотезы - я вам не могу помочь, у меня недостаточно времени анализировать проекты и их баги (Если я найду желание и время это сделать, то я постараюсь конечно, но я лишь человек).
Roman
большинство концепций достаточно объяснить приближенными примерами, потому-что у хорошего разработчика достаточно хорошее абстрактное мышление для выявления смысла и выгоды
snip
Ну вот го это не про концепции это про реалии, если концепция верная но в реальности не встречается значит не нужно
snip
В го нет многих правильных концепций и подозреваю, что многие из них никогда не появятся
Eugene
В го нет многих правильных концепций и подозреваю, что многие из них никогда не появятся
для меня было удивительно, что в go вот так можно написать: false := true
Roman
Ну вот го это не про концепции это про реалии, если концепция верная но в реальности не встречается значит не нужно
Go это не про "банальную простоту синтаксиса". Go это про устранение легаси, иной подход к конкуррентности и устранение неправильных концепций таких как наследование имплементации и прочих, которые показали себя нехорошо в прошлом. mutable shared state встречается в реальности в абсолютно каждом вашем проекте! Будь то 1к LOC или 2kk LOC. Slice aliasing это mutable shared state, и вы с ним бессомненно часто встречаетесь, вы просто привыкли с ним жить и копировать слайсы (slow + boilerplate). Pointer aliasing это mutable shared state и встречается он не реже.
Roman
а то с чем мы встречаемся абсолютно всегда - стоит упрощать и делать более безопасным в применении, о чём собственно вся эта тема
A
Вот что они в Го 2 с легаси будут делать?!
Roman
Roman
Roman
если вы её не видите или видить не хотите, тогда конечно для вас её нет))
snip
Ну вот пока никто не привёл примеров из реальной жизни, типа за последний месяц три бага словил которых не было бы если бы был const
Roman
Там теореьизирование и всасывание из пальца
ну что-ж, тогда я желаю вам удачи в мире IT, коллега. С такой моделью мышления вам успех гарантирован 🙂 а я пожалуй пойду пить чай, устал таки
Roman
Роман, я без троллинга предлагаю вам пойти в го_тим в Гугл.
увы, у меня другие жизненные приоритеты на данный момент, хотя всё возможно.
Pavel
У вас будет больше оплачиваемого времени улучшать го.
Peter
Иногда конечно хочется объявить константную ошибку или массив, но на практике оказывается, что это не особенно нужно
Pavel
Платят там вроде нормасик.
Alexey
увы, у меня другие жизненные приоритеты на данный момент, хотя всё возможно.
а что со стандартной библиотекой? это же половину всего переписывать чтобы было идиоматично иммутабельным структурам.
Eugene
Roman
а что со стандартной библиотекой? это же половину всего переписывать чтобы было идиоматично иммутабельным структурам.
всё уже продумано и описано (по большей степени) All proposed changes are fully backwards-compatible and don't require any breaking changes to be introduced to the language. Code written in previous versions of the Go 1.x programming language will continue to compile and work as expected. https://github.com/romshark/Go-2-Proposal---Immutability#2-proposed-language-changes
Roman
а что со стандартной библиотекой? это же половину всего переписывать чтобы было идиоматично иммутабельным структурам.
если же вы конкретно про "idiomatic completeness" тогда можно некоторые моменты переписать, но не обязательно.
Alexey
если же вы конкретно про "idiomatic completeness" тогда можно некоторые моменты переписать, но не обязательно.
да, я про то чтобы все было идиоматично. потому что пока у меня не будет в экосистеме иммутабельного http клиента и всего остального будет очень сложно
Roman
да, я про то чтобы все было идиоматично. потому что пока у меня не будет в экосистеме иммутабельного http клиента и всего остального будет очень сложно
я не думаю что это супер сложно. Потому-что иммутабельность наоборот убирает многие ненужные строки кода и порой её можно вставить в стиле "plug'n'play". Это не генерики, где нужно серьёзно код перелопачивать
Alexey
я не думаю что это супер сложно. Потому-что иммутабельность наоборот убирает многие ненужные строки кода и порой её можно вставить в стиле "plug'n'play". Это не генерики, где нужно серьёзно код перелопачивать
да, написать новое не сложно, но если вся экосистема будет возвращать мутабельные слайсы, то мотивации использовать иммутабельные в своей песочнице у меня будет мало
Alexey
ну, сейчас тебя заклюют )
Alexey
тут не любят предложений добавить "лишних" фич
Roman
тут не любят предложений добавить "лишних" фич
давайте без утвержденией "лишнее")) я так не смогу спокойно чай пить))))
Roman
я-ж евангелист))
Alexey
давайте без утвержденией "лишнее")) я так не смогу спокойно чай пить))))
а я своего мнения не выражаю, я описываю свое ощущение от сообщеста
Daniel
я уже говорил и повторю
Alexey
так или иначе это шаг в правильное направление. Хуже иммутабельности только её отсутствие
Я бы доабвил какую-то секцию об этом в пропозал. Я могу сказать, что, например, использовать иммутабельные структуры в java очень сложно, несмотря на то, что язык позволяет их создать и энфорсить. Возможность есть, бибилиотеки есть, но по факту использовать нельзя. Мутабельность лезет ото всюду.
Alexey
Это там еще строчки иммутабельные
Daniel
единственный реалистичный сценарий - это сделать линтер и сделать его популярным. а уж потом и разрабы go подтянутся