Daniel
Roman
я бы хотел других умолчаний
ты меня неправильно понял, я бы тоже хотел иммутабельность по умолчанию и какой-нить mut или mutable оператор..
но я исхожу из того что нельзя рушить экосистему поломанной совместимостью и ломать сотни, тысячи библиотек...
я лишь выбираю из всех зол - меньшее зло, ради общего блага
aadz
Нельзя вот так взять и сделать все окружающее immutable
Daniel
видишь, иммутабельность по умолчанию может быть полезна
1. оптимизатору
2. параллелизатору (пока нет такого, но можно бы и сделать)
3. сборщику мусора (эту мысль я до конца не додумал)
Daniel
Roman
aadz
Roman
Заур
Roman
помню как я в начале аллергично реагировал на "Capital letter for public fields and functions"
aadz
Ну, разделение - это вобще катастрофа! Уже столько хороших вещей (библиотек) на Go 1 написано... И что тогда делать?
Roman
Daniel
с питоном беда в том, что пришлось у пользователя держать обе версии, и две версии либ, и все вот это вот
Daniel
у нас не так же
Roman
Daniel
Заур
Daniel
да почему же
Заур
Это уже новый язык получается
Daniel
так да
Заур
Легче так и сделать
aadz
ну, и одним работать на Go1, а другим - на 2. И вместе им не сойтись (c)
Daniel
смотрите
Daniel
go уже тостаточно сделал для того, чтобы можно было написать его конвертер в любой язык
Daniel
и уж точно можно сделать go2 так, чтобы go в него конвертился автоматически
Roman
Daniel
:)
Daniel
вообще - да
Daniel
это да
Daniel
вызовам с go придется mutable прописывать
Daniel
или конвертить, пробовать компилять, репортить проблему
Roman
Daniel
завтра попробую
Roman
Daniel
если опять прокрастинация нападет :)
aadz
Лучше, наверное, все же модификатор const. Пусть разработчик определяет, что это менять не стоит, если действительно не надо
Roman
aadz
А! То есть все, что было до 1.12 - до свидания?
Заур
Эээ ребят это походит на восстание и революцию
Заур
Почему нельзя просто const добавить и нормас? Я тоже с плюсов, там вроде конста хватало
aadz
И вся эта игра с большими и маленькими буквами... Нет.. что-то не так с глобальным immutable, чую я
aadz
Кажется, фильме Матрица один паацан так поступил. Эльфы в костюмах просто даже застыли на месте и не знают что делать...
aadz
Roman
aadz
Даниэль, а если просто посчитать, какое солов чаще придется писать const, или mutable?
Roman
А чем вам вариант с модификатором блока кода mut/const не нравится?
aadz
да. 99%, и люди с этим живут уже хрен знает сколько
Daniel
у нас нет манеры возвращать значения модификацией входных параметров. исключая анмаршалеры - так никто не делает на постоянной основе. а, еще ридеры.
так что const придется писать существенно чаще
Roman
Все что внутри блока имеет mut или const префикс
aadz
Roman
aadz
а, понял
Roman
Идея в маркере, который тупо префиксует все внутри блока как mut или const
aadz
Только на момент передачи параметров - вряд ли получится
Roman
Если не сказано явно иное перед переменной
Daniel
только, может быть, и не надо
Roman
Это компромисс между "хочу все immut" и текущим вариантом
aadz
В общем, изменения глобальная, чтобы все было immutable, надо только подумать, стоит ли это других глобльных проблем, и каких именно
Roman
Чтобы программист мог выбирать стратегию в рамках пакета, файла или блока кода
Daniel
другое дело, что const делается одним флажком в составе struct, slice, map
а mutable надо будет тащить и проверять на каждом вызове
Daniel
так что, наверное, все же const
Daniel
и линтер, который предупреждает, что вы const не проставили :)
Daniel
вот так, наверное, это имеет хоть какие-то шансы
aadz
Roman
Daniel
смотри
Daniel
у нас все передается по значению
Daniel
и у всего есть тип
aadz
не все по значению