
Александр
12.09.2018
16:51:43
ну я просто не придумал куда впихнуть
если делать на уровне пакета- будет полотно

Aleksandr
12.09.2018
16:52:03

Александр
12.09.2018
16:52:37
потом забываешь поправить полотно когда в хедлеры что-то добавил

Google

Александр
12.09.2018
16:52:39
начинается жесть
да и main хотелось бы в три строчки уместить

Roman
12.09.2018
18:00:13
@onokonem
https://github.com/romshark/Go-2-Proposal---Immutability#3-immutability-by-default-go--2x
как-то так

Илья
12.09.2018
18:01:55
ноу, сенкью, серьезно, нет, не надо так

Roman
12.09.2018
18:03:58
ноу, сенкью, серьезно, нет, не надо так
1. либо постоянно писать много const
2. либо постоянно писать мало mut
3. либо постоянно писать много много копирования и for циклов
4. либо постоянно резаться об острое лезвие pointer aliasing'а
выбирайте сами, я выберу 1 в случае Go 1, в Go 2 я выберу 2

Илья
12.09.2018
18:05:18
какая же это обратная совместимость то? весь код полетит в ад, и дальше осталось только дойти до copy on write, чтобы вообще никто уже ничего не понял

Roman
12.09.2018
18:05:52

Илья
12.09.2018
18:09:16
я мельком видел вашу войну за иммутабельность, даже теоретически понимаю, где это поможет (допустим передача аргументов в интерфейс отправляет их на хип, тк кто знает, то там в интерфейсе будет, с конст станет лучше), но by default == плохая идея

Roman
12.09.2018
18:10:25
const это круто, но писать постоянно const это не круто. А забыть const и тем самым выстрелить себе в ногу это вообще не круто
забыть легче, чем конкретно намеренно ошибиться


Foxcool
12.09.2018
18:12:15
откуда вы проблемы такие находите в нежирных сервисах?
юниттестирование
иммутабельность

Google

Foxcool
12.09.2018
18:13:04
вот в 10-летнем монолите выстрелить себе в ногу да (:

Илья
12.09.2018
18:13:09

Foxcool
12.09.2018
18:13:22
когда его 5 поколейний говноедов колхохозят

Илья
12.09.2018
18:13:46
прям OTRS вспомнился

Roman
12.09.2018
18:14:34
юниттестирование
иммутабельность
не смогу точно процитировать, но в данном интервью Rob Pike упомянул: https://youtu.be/BBbv1ej0fFo
что он ужаснулся когда понял что большинство unit test'ов в динамических языках писали из-за отсутствие строгой типизации.
юниттестирование
иммутабельность
зачем писать unit тесты, в которых вероятность ошибиться выше, нежели сложить эту ответственность на компилятор?
может мы тогда и типизацию уберём и заменим её unit тестами?

Foxcool
12.09.2018
18:17:12
ну я вообще за неслишком жирные сервисы, которые тестить снаружи

Roman
12.09.2018
18:17:35

Foxcool
12.09.2018
18:17:58
про дроч на статтипизацию - тоже не понимаю. ПО ощущениям с нее больше гемора, а ошибки в рантайме все равно ловятся

Илья
12.09.2018
18:18:03

Daniel
12.09.2018
18:18:37

Илья
12.09.2018
18:18:42

Roman
12.09.2018
18:19:50

Илья
12.09.2018
18:21:22

Daniel
12.09.2018
18:21:42
это только я, вроде

Roman
12.09.2018
18:21:51
@onokonem меня сейчас больше интересует как будет действовать иммутабельность на каналы

Google

Kirill
12.09.2018
18:27:33

Roman
12.09.2018
18:28:09

Kirill
12.09.2018
18:28:22

Roman
12.09.2018
18:28:24
ни посылать в него ни закрывать его нельзя?

Kirill
12.09.2018
18:28:25
Как вариант

Daniel
12.09.2018
18:29:08
что делать с ними?

snip
12.09.2018
18:29:25
Иммутабельность головного мозга

Kirill
12.09.2018
18:29:31
Запретить закрытие из функции, куда такой канал был передан

Roman
12.09.2018
18:29:44
ch := library.GetChan() // const chan int
ch <- 10 // Compile-time error
val := <- ch // reading is fine

Daniel
12.09.2018
18:30:09

Roman
12.09.2018
18:30:58
это зачем может быть нужно?
ну если мы канал из сторонней библиотеки получаем, она же заинтересована чтоб ты в этот канал не писал предсказуемости ради

Daniel
12.09.2018
18:31:02

Kirill
12.09.2018
18:31:24

Roman
12.09.2018
18:31:35

Daniel
12.09.2018
18:31:46
ну так верни канал только для чтения

Roman
12.09.2018
18:32:07

Daniel
12.09.2018
18:32:21
OMG

Roman
12.09.2018
18:32:23
пусть лучше компилятор это запрещает

Google

Илья
12.09.2018
18:32:29
стрелочкой

Daniel
12.09.2018
18:32:53
коллега, есть RO каналы, и компилятор запрещает в них писать

Roman
12.09.2018
18:33:13

Илья
12.09.2018
18:33:25
https://gobyexample.com/channel-directions

Roman
12.09.2018
18:33:55
спасибо

Илья
12.09.2018
18:34:11
век живи, как говорится

Roman
12.09.2018
18:34:42
в таком случае... хмм, да, видимо каналы в этом не нуждаются

Daniel
12.09.2018
18:34:43

Admin
ERROR: S client not available

Daniel
12.09.2018
18:34:52
правда, илья быстрее успел

Roman
12.09.2018
18:35:06

Илья
12.09.2018
18:36:46

Roman
12.09.2018
18:43:22
короче я понял
const chan
относится к категории immutable reference type. Это не означает что в канал нельзя писать или его нельзя закрывать, это означает что сам reference на канал нельзя мутировать, т.е. это равносильно const * T
const chan const Object
иммутабельный канал на иммутабельный объект же просто вернёт иммутабельный объект при чтении из канала и не позволить изменить сам reference на этот канал
всё в принципе складывается в согласованную целостную картинку
https://github.com/romshark/Go-2-Proposal---Immutability/issues/11

Artem
12.09.2018
19:27:51
Скоро такое и до го докатится,
Создатель языка программирования Python Гвидо ван Россум объявил о том, что из языка уберут служебные слова master («хозяин») и slave («раб») по соображениям политкорректности.

Subbotin
12.09.2018
19:34:01
Ээээ. 10 лет пишу на Питоне и не слышал про кейворд мастер

Michael
12.09.2018
19:35:27

Alan
12.09.2018
19:37:53
А в го что менять-то?

kopMuk
12.09.2018
19:40:49

Google

Лемур
12.09.2018
19:41:02

kopMuk
12.09.2018
19:41:03
Да и не так сказано было

Kirill
12.09.2018
19:41:21

kopMuk
12.09.2018
19:41:31
Испорченный телефон каиф

Kirill
12.09.2018
19:42:32
а репликация теперь у них менеджер/уборщик вместо master/slave?

Aleksandr
12.09.2018
19:42:38
Здравствуйте. Кто то наблюдал снижение скорости вызова функции time.Now() в версии go 1.11?
после обновления Go с версии 1.10 до версии 1.11 проект стал кушать процессора в 2 раза больше
По pprof на 2 месте по потреблению процессора - time.Now

Лемур
12.09.2018
19:43:20

Aleksandr
12.09.2018
19:43:51
памяти потребляется так же
операций то же
откатился до 1.9.7 потребление проца упало в 2 раза

Лемур
12.09.2018
19:44:24
На что стало времени больше тратиться? Что делает time.now долго?

Roman
12.09.2018
19:45:51

Kirill
12.09.2018
19:46:08

Aleksandr
12.09.2018
19:46:15
просто получение текущего времени, вот код:
time.Now().AddDate(2, 0, 0)

Лемур
12.09.2018
19:47:29

Aleksandr
12.09.2018
19:47:43
еще не сравнивал

Лемур
12.09.2018
19:48:25

Aleksandr
12.09.2018
19:50:04
по стеку идет так:
runtime timerproc 1.36s (2.09%) -> time sendTime 0.21s (0.32%) -> time Now 0.15s (0.23%) -> time now 11.96s of 12.18s (18.39%)
вообще первый раз вижу что бы time Now потреблял столько процессорного времени

Roman
12.09.2018
19:55:56

Aleksandr
12.09.2018
19:56:18
нет, сложно проверить так как нагрузки такой не получится дать
да и сравнение будет не честным