cab
Anonymous
Вопрос к продвинутым товарищам: Имеет ли смысл решать математические задачи типа как на сайте https://projecteuler.net/
Если целью стоит стать прогером, а не математиком? Смысл вопроса в том, что большинство прогеров занимается конечными продуктами вроде там.. микросервисов на го, всяких там редисок, ребитов, вебсерверов итд.
Anton
Paul
Paul
В соседнем чаще спрашивали уже про это задание
Oleg
вопрос по vgo, вот есть проект, у него есть файлик go.mod со всеми зависимостями, каким образом я могу загрузить все зависимости и запустить проект?
Daniel
ты тут самый адекватный, вот и просим поучаствовать, как арбитра. а, возможно, у тебя еще и идея интересная есть
кто просил идею для компетишена?
смотрите: есть такой проект https://github.com/coturn/coturn
это STUN/TURN сервер для WebRTC
гошной имплементации я не нашел, а она была бы не лишней - возможность встраивать в свой сервер, возможность расширять, например, метриками, и все вот это вот
у меня вот на руках сейчас проект, в котором, возможно, придется использовать WebRTC p2p и, соответственно, STUN/TURN
Daniel
код этого сервера, кстати, хорошая иллюстрация к идее "препроцессор зло". реально нечитаем из-за #if !defined
Daniel
голый C...
Daniel
а вот это - иллюстрация к тому, почему такие вещи редко пишут на C (и тут бы не надо, на самом деле)
$cloc ./coturn/src/server/ ./coturn/src/apps/relay/
43 text files.
43 unique files.
0 files ignored.
github.com/AlDanial/cloc v 1.76 T=1.04 s (41.4 files/s, 33639.8 lines/s)
------------------------------------------
Language files blank comment code
------------------------------------------
C 20 4811 1586 24401
C/C++ Header 23 724 1339 2041
------------------------------------------
SUM: 43 5535 2925 26442
------------------------------------------
Daniel
24 тысячи строк кода.
Daniel
24
Daniel
вдумайтесь, что можно запилить, написав 24 тысячи строк на go
Andrey
Pawel
Почему в Го такие дорогостоящие системные вызовы?
Alexander
почем?
Michael
Pawel
в питоне, в C#
Michael
😂😂😂
Alexander μήδομαι [в отпуске]
Alexander μήδομαι [в отпуске]
Какие языковые конструкции в Go больше всего экономят бойлерплейт?
Мне в голову сразу идёт сборщик мусора, но в отдельных приложениях это неприменимо. В официальной доке о профилировании Go есть пример, когда для существенного улучшения производительности и потребления памяти переходят на ручное управление через предаллокацию и кэшированное переиспользование аллоцированных объектов.
Alexander μήδομαι [в отпуске]
Каналы и горутины конечно много усилий экономят) Но так ли уж много нужно их в типичном сервере?
Alexander μήδομαι [в отпуске]
Наверное, гошные интерфейсы могут сэкономить много тривиального кода, но к сожалению, я пока видел мало примеров.
Alexander μήδομαι [в отпуске]
В общем, если у кого-то есть размышления и примеры на тему "почему в Go код значительно компактнее чем в C/C++", было бы интересно узнать.
Andrey
Го можно сравнивать с Java... При чем здесь c++
Andrey
Anton
Alexander μήδομαι [в отпуске]
Го это не системный язык. Ядро ты на не напишешь.
Почему-то сами создатели Go в официальной документации охотно сравнивают своё детище с системными языками.
"— What is the purpose of the project?
— No major systems language has emerged in over a decade, but... blah-blah... We believe it's worth trying again with a new language, a concurrent garbage-collected language with fast compilation."
https://golang.org/doc/faq#What_is_the_purpose_of_the_project
"— Why are you creating a new language?
— Go was born out of frustration with existing languages and environments for systems programming..."
https://golang.org/doc/faq#creating_a_new_language
kås
Andrey
Alexander μήδομαι [в отпуске]
Сравнивать они могут с чем угодно, факт в том, что из-за gc , применение его ограничено. Чего не скажешь например о rust. Но вообще, я о том, что сравнивать его более корректно с Java.
ОК, с создателями Гохи разобрались: они ничего не понимают в системном программировании и делают неправильные сравнения. Их в этом чате нет и возразить нам они не смогут :)
Но @onokonem здесь есть и он, наверное, сможет нам рассказать, почему он сравнивает Go и C.
На мой взгляд влияние сборщика мусора можно контролировать, если использовать предаллокацию. В разработке игр это распространённая практика. Чтобы не вылететь в середине игры по OufOfMemory, чтобы не пойти на сборку мусора на полминутки, разработчики заранее определяют, что будет не более N объектов типа T и управляют их выделением вручную через слайс фиксированного размера. В системном программировании есть похожие soft/hard limits на количество дексрипторов, но я недостаточно компетентен для того чтобы делать твёрдые заявления об устройстве ядер.
Anonymous
kås
Ага давайте сравним стопы gc в джаве и го
kås
И график изменения пауз за пару лет в го и за 10 в джаве
Anonymous
В джаве не один gc
Andrey
ОК, с создателями Гохи разобрались: они ничего не понимают в системном программировании и делают неправильные сравнения. Их в этом чате нет и возразить нам они не смогут :)
Но @onokonem здесь есть и он, наверное, сможет нам рассказать, почему он сравнивает Go и C.
На мой взгляд влияние сборщика мусора можно контролировать, если использовать предаллокацию. В разработке игр это распространённая практика. Чтобы не вылететь в середине игры по OufOfMemory, чтобы не пойти на сборку мусора на полминутки, разработчики заранее определяют, что будет не более N объектов типа T и управляют их выделением вручную через слайс фиксированного размера. В системном программировании есть похожие soft/hard limits на количество дексрипторов, но я недостаточно компетентен для того чтобы делать твёрдые заявления об устройстве ядер.
Мы спорить конечно можем, но зачем!? В Яве тоже можно делать биндинги на нативные функций, у управлять памятью через offHeap. Но системным язык от этого не станет. Да это ведь и не проблема. Да, го ближе и легче при работе с нативщиной, и ограничения в языке есть в пользу большей совместимости с С... Ну и ладно. Но в остальном он на Яву похож больше. Яву тоже делали с оглядкой на С.
Andrey
Мне кажется маловероятным, что кто пишет драйвера на го или ядерные модули...
Andrey
Если это вообще возможно
Alexander μήδομαι [в отпуске]
Chrome можно написать на Go.
Alexander μήδομαι [в отпуске]
Andrey
Vladimir
Pawel
гугли. всё доступно
Vladimir
Поведутся те кто не знает как Гц в го работает
Vladimir
Маладчина
Andrey
Andrey
Или наоборот?! :)
Вообще, если смотреть на большие компании, то они любят задротство на собеседованиях...
Anonymous
Anonymous
я решил десятка два задач, всей этой матоты в голове поприбавилось, теперь вот думаю, как от неё избавиться.
Alexander μήδομαι [в отпуске]
Vladimir
А как он работает? :)
Я на это обычно ссылку на этот доклад даю:
https://www.usenix.org/conference/srecon17asia/program/presentation/sibiryov
Alexander μήδομαι [в отпуске]
Alexander μήδομαι [в отпуске]
Michael
по поводу го и не системный - https://github.com/achilleasa/gopher-os
Alexander
Tigran
у меня го в простой программке аллоцирует 500 ГБ виртуальной памяти, это норма?
Alexander
норма.
Alexander
это же линукс ?
Tigran
мак ось
Tigran
где можно почитать поподробнее, что и зачем он при этом делает?
Vasily
Artem
и в этой статье ответа нет
Artem
там только базовые вещи "а что такое память"
Michael
красивые картинки погц гоу https://twitter.com/brianhatfield/status/804355831080751104
100гб видимо не проблема, под линукс людям и 512 мало, в 1.11 должны снять это ограничение
Alexander μήδομαι [в отпуске]
Не похоже на 100 мкс :)
Хотя и 1 мс это вполне по-божески.
Vladimir
И перестает например справляться
Vladimir
Vladimir
Говорят и верят в это
Vladimir
лул. и на 100 гигах ?
Паузы зависят от колличества объектов по скорости. Ну и расплатой за скорость в го то, что память дольше висит в непонятном состоянии.
Alexander μήδομαι [в отпуске]
Примеры нужны.
Большие объёмы мусора – сколько ГБ, сколько часов рантайма. Тормозит – это сколько в ms.