@gogolang

Страница 1397 из 1630
Александр
12.09.2018
16:51:43
ну я просто не придумал куда впихнуть

если делать на уровне пакета- будет полотно

Александр
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
какая же это обратная совместимость то? весь код полетит в ад, и дальше осталось только дойти до copy on write, чтобы вообще никто уже ничего не понял
с const обратная совместимость гарантирована, он может быть добавлен в Go 1.x без последствий с mut - нет, это возможно только с кардинально новым подходом в теоретическом Go 2.x

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

Roman
12.09.2018
18:10:25
я мельком видел вашу войну за иммутабельность, даже теоретически понимаю, где это поможет (допустим передача аргументов в интерфейс отправляет их на хип, тк кто знает, то там в интерфейсе будет, с конст станет лучше), но by default == плохая идея
https://github.com/romshark/Go-2-Proposal---Immutability#311-safety-by-default Immutability stands for compile-time safety, which would then be default behavior. The developer will have to explicitly annotate mutable types using the mut modifier preventing types from accidentally being declared mutable by forgetting to prepend the const qualifier.

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

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

юниттестирование иммутабельность

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

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 тестами?

откуда вы проблемы такие находите в нежирных сервисах?
и в целом вас никто не обязывает использовать иммутабельность, она опциональна. Но если вы пишете open source библиотеку, большой проект и т.д. и т.п. то вы поймёте зачем нужна иммутабельность

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

Roman
12.09.2018
18:17:35
зачем писать постоянно const?
тогда пишите копирующий код

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
тогда пишите копирующий код
я тут видел либу, где мне кусок памяти из shared memory из функции возвращали, и норм :) на доверии

Roman
12.09.2018
18:19:50
ну я вообще за неслишком жирные сервисы, которые тестить снаружи
ну не используйте тогда иммутабельность))) кто вам мешает?)))

я тут видел либу, где мне кусок памяти из shared memory из функции возвращали, и норм :) на доверии
молодцы, всё на доверии строите! вам в таком случае лучше в мир JS, там типизация тоже по доверию ?

Илья
12.09.2018
18:21:22
ну не используйте тогда иммутабельность))) кто вам мешает?)))
насколько я понимаю, мешают люди, которые пытаются вкорячить в язык иммутабельность by default

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

Roman
12.09.2018
18:21:51
насколько я понимаю, мешают люди, которые пытаются вкорячить в язык иммутабельность by default
если вы не поняли зачем это нужно - это не значит что оно не нужно всем)))

это только я, вроде
я тоже за, но для Go 1 предлагаю компромис, потому-что выбора нет

@onokonem меня сейчас больше интересует как будет действовать иммутабельность на каналы

Google
Roman
12.09.2018
18:28:09
Нельзя закрыть канал?
ну т.е. const chan можно только читать?

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
это зачем может быть нужно?
ну если мы канал из сторонней библиотеки получаем, она же заинтересована чтоб ты в этот канал не писал предсказуемости ради

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 каналы, и компилятор запрещает в них писать

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

Roman
12.09.2018
18:33:55
https://gobyexample.com/channel-directions
да, вот этого я до сих пор не знал

спасибо

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

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

Daniel
12.09.2018
18:34:43
поясни плиз
https://play.golang.org/p/fme3YsxbbJa

Admin
ERROR: S client not available

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

Roman
12.09.2018
18:35:06
https://play.golang.org/p/fme3YsxbbJa
?? не знал, спасибо

Илья
12.09.2018
18:36:46
https://play.golang.org/p/fme3YsxbbJa
корректнее тогда уж так https://play.golang.org/p/71kXOCdon4p

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
Ээээ. 10 лет пишу на Питоне и не слышал про кейворд мастер
Каменты в исходниках пайтона писали слэйвы

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

Google
Лемур
12.09.2018
19:41:02
А в го что менять-то?
Рутину переименовать в хобби

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

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

Aleksandr
12.09.2018
19:43:51
памяти потребляется так же

операций то же

откатился до 1.9.7 потребление проца упало в 2 раза

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

Kirill
12.09.2018
19:46:08
celebrity/follower
Да-да-да

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

Лемур
12.09.2018
19:47:29
просто получение текущего времени, вот код: time.Now().AddDate(2, 0, 0)
Pprof же умеет дальше по стеку строить граф что происходит? Не сравнивали 2 графа?

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 потреблял столько процессорного времени

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

да и сравнение будет не честным

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