Roman
Roman
const это круто, но писать постоянно const это не круто. А забыть const и тем самым выстрелить себе в ногу это вообще не круто
забыть легче, чем конкретно намеренно ошибиться
Foxcool
откуда вы проблемы такие находите в нежирных сервисах?
Foxcool
юниттестирование
иммутабельность
Foxcool
вот в 10-летнем монолите выстрелить себе в ногу да (:
Илья
Foxcool
когда его 5 поколейний говноедов колхохозят
Илья
прям OTRS вспомнился
Roman
юниттестирование
иммутабельность
не смогу точно процитировать, но в данном интервью Rob Pike упомянул: https://youtu.be/BBbv1ej0fFo
что он ужаснулся когда понял что большинство unit test'ов в динамических языках писали из-за отсутствие строгой типизации.
Roman
юниттестирование
иммутабельность
зачем писать unit тесты, в которых вероятность ошибиться выше, нежели сложить эту ответственность на компилятор?
может мы тогда и типизацию уберём и заменим её unit тестами?
Foxcool
ну я вообще за неслишком жирные сервисы, которые тестить снаружи
Roman
Foxcool
про дроч на статтипизацию - тоже не понимаю. ПО ощущениям с нее больше гемора, а ошибки в рантайме все равно ловятся
Илья
Roman
Daniel
это только я, вроде
Roman
Roman
@onokonem меня сейчас больше интересует как будет действовать иммутабельность на каналы
Kirill
Kirill
Roman
ни посылать в него ни закрывать его нельзя?
Kirill
Как вариант
Daniel
Daniel
что делать с ними?
snip
Иммутабельность головного мозга
Kirill
Запретить закрытие из функции, куда такой канал был передан
Roman
ch := library.GetChan() // const chan int
ch <- 10 // Compile-time error
val := <- ch // reading is fine
Daniel
Roman
это зачем может быть нужно?
ну если мы канал из сторонней библиотеки получаем, она же заинтересована чтоб ты в этот канал не писал предсказуемости ради
Daniel
Daniel
Roman
Daniel
ну так верни канал только для чтения
Daniel
OMG
Roman
пусть лучше компилятор это запрещает
Илья
стрелочкой
Daniel
коллега, есть RO каналы, и компилятор запрещает в них писать
Roman
Илья
https://gobyexample.com/channel-directions
Roman
Roman
спасибо
Илья
век живи, как говорится
Roman
в таком случае... хмм, да, видимо каналы в этом не нуждаются
Daniel
поясни плиз
https://play.golang.org/p/fme3YsxbbJa
Daniel
правда, илья быстрее успел
Roman
Roman
короче я понял
const chan
относится к категории immutable reference type. Это не означает что в канал нельзя писать или его нельзя закрывать, это означает что сам reference на канал нельзя мутировать, т.е. это равносильно const * T
const chan const Object
иммутабельный канал на иммутабельный объект же просто вернёт иммутабельный объект при чтении из канала и не позволить изменить сам reference на этот канал
Roman
всё в принципе складывается в согласованную целостную картинку
https://github.com/romshark/Go-2-Proposal---Immutability/issues/11
Artem
Скоро такое и до го докатится,
Создатель языка программирования Python Гвидо ван Россум объявил о том, что из языка уберут служебные слова master («хозяин») и slave («раб») по соображениям политкорректности.
Subbotin
Ээээ. 10 лет пишу на Питоне и не слышал про кейворд мастер
Michael
Sebor▂▅▇█▓▒░
А в го что менять-то?
kopMuk
kopMuk
Да и не так сказано было
Kirill
kopMuk
Испорченный телефон каиф
Kirill
а репликация теперь у них менеджер/уборщик вместо master/slave?
Aleksander baltazor
Здравствуйте. Кто то наблюдал снижение скорости вызова функции time.Now() в версии go 1.11?
после обновления Go с версии 1.10 до версии 1.11 проект стал кушать процессора в 2 раза больше
По pprof на 2 месте по потреблению процессора - time.Now
Anonymous
Aleksander baltazor
памяти потребляется так же
Aleksander baltazor
операций то же
Aleksander baltazor
откатился до 1.9.7 потребление проца упало в 2 раза
Anonymous
На что стало времени больше тратиться? Что делает time.now долго?
Roman
Kirill
Aleksander baltazor
просто получение текущего времени, вот код:
time.Now().AddDate(2, 0, 0)
Aleksander baltazor
еще не сравнивал