
Daniel
25.09.2018
17:57:49
мы можем куда угодно стремиться
или мы будем собирать проекты со скоростью с++, или мы будем запускать генераторы вручную

Roman
25.09.2018
17:59:12
generate + go практически всегда будет гораздо быстрее чем компиляция C++. Компиляторы C++ были основаны на дизайне, который учитывал ограничения железа 80-90 годов (в основном по памяти). А сейчас у нас памяти в ноуте как тогда в мега-дата-центре

Google

Daniel
25.09.2018
17:59:59
или нет

Roman
25.09.2018
18:01:04
надо мерить)

Abylay
25.09.2018
18:03:48
Здесь есть бекенд джава разработчики?
для бэкенда стоит переходить с пхп на джава

Bohdan
25.09.2018
18:05:00
мне кажется, тебе пора в бан за оффтоп

Никита
25.09.2018
18:22:09
Ахах

Yo
25.09.2018
18:22:20
или мы будем собирать проекты со скоростью с++, или мы будем запускать генераторы вручную
рано или поздно вы будете собирать проекты со скоростью С++, если даже в других языках и проектах с множеством кода, это рано или поздно становиться реальностью, проекты разрастаются.
Кодо-генерация - это хорошо, когда сделано грамотно и применена "к месту". Ран-тайм "аннотации" - тоже хорошо и удобно, когда "к месту".
Чтобы быстро собирать большие проекты, есть решения, в java - это билд кэши, успешно применяются в некоторых билд-тулзах (gradle). Без них - попа, скалисты "страдают", потому что там SBT тулза по умолчанию без них, а с ними сборка может "ускорятся" в 4-5 раз. Рано или поздно Go тожк к этому придет, когда код-база многократно вырастет.


Roman
25.09.2018
18:23:32
рано или поздно вы будете собирать проекты со скоростью С++, если даже в других языках и проектах с множеством кода, это рано или поздно становиться реальностью, проекты разрастаются.
Кодо-генерация - это хорошо, когда сделано грамотно и применена "к месту". Ран-тайм "аннотации" - тоже хорошо и удобно, когда "к месту".
Чтобы быстро собирать большие проекты, есть решения, в java - это билд кэши, успешно применяются в некоторых билд-тулзах (gradle). Без них - попа, скалисты "страдают", потому что там SBT тулза по умолчанию без них, а с ними сборка может "ускорятся" в 4-5 раз. Рано или поздно Go тожк к этому придет, когда код-база многократно вырастет.
не будете. Не надо сравнивать компилятор Go и компилятор C++
Компиляторы C++ были основаны на дизайне, который учитывал ограничения железа 80-90 годов (в основном по памяти). А сейчас у нас памяти в ноуте как тогда в мега-дата-центре


?
25.09.2018
18:28:16
?
ххх:
люблю стабильные современные технологии.
нестабильно работает? добавь памяти.
медленно работает? добавь памяти.
не может запуститься? добавь памяти.
бросила девушка? добавь памяти.
не можешь найти внеземную жизнь? добавь памяти.
напали рептилоиды? добавь памяти.
надоел кокаин? добавь памяти.


Daniel
25.09.2018
18:28:47
рано или поздно вы будете собирать проекты со скоростью С++, если даже в других языках и проектах с множеством кода, это рано или поздно становиться реальностью, проекты разрастаются.
Кодо-генерация - это хорошо, когда сделано грамотно и применена "к месту". Ран-тайм "аннотации" - тоже хорошо и удобно, когда "к месту".
Чтобы быстро собирать большие проекты, есть решения, в java - это билд кэши, успешно применяются в некоторых билд-тулзах (gradle). Без них - попа, скалисты "страдают", потому что там SBT тулза по умолчанию без них, а с ними сборка может "ускорятся" в 4-5 раз. Рано или поздно Go тожк к этому придет, когда код-база многократно вырастет.
паскаль как собирался быстро, так и собирается. и go будет собираться быстро, если не навешивать на сборку разного всего.


Yo
25.09.2018
18:28:55
не будете. Не надо сравнивать компилятор Go и компилятор C++
Компиляторы C++ были основаны на дизайне, который учитывал ограничения железа 80-90 годов (в основном по памяти). А сейчас у нас памяти в ноуте как тогда в мега-дата-центре
Не согласен. Памяти тогда было - столько сколько было, оно соответствовало тем "маленьким" программам, которые были востребованы.
Сейчас памяти больше, но стало использоваться "выведение типов" повсеместно в ЯП, контроль типов разными видами, контроль видимости и времени жизни.
Не тешьте себя иллюзиями (как я думаю), что вот сейчас "много памяти", а это автоматически значит, что Go компилятор "построен по другим принципам" создания компиляторов. Эти принципы "принципиально не изменились" (имхо).
И если сейчас кода относительно не много, то потом будет много и билд-тул, который будет собирать многомодульный проект из 10-ка частей - это станет реальностью, как у других ЯП.


Roman
25.09.2018
18:29:47
Не согласен. Памяти тогда было - столько сколько было, оно соответствовало тем "маленьким" программам, которые были востребованы.
Сейчас памяти больше, но стало использоваться "выведение типов" повсеместно в ЯП, контроль типов разными видами, контроль видимости и времени жизни.
Не тешьте себя иллюзиями (как я думаю), что вот сейчас "много памяти", а это автоматически значит, что Go компилятор "построен по другим принципам" создания компиляторов. Эти принципы "принципиально не изменились" (имхо).
И если сейчас кода относительно не много, то потом будет много и билд-тул, который будет собирать многомодульный проект из 10-ка частей - это станет реальностью, как у других ЯП.
послушайте строуструпа, почему нужны header файлы учитывая что они знаэчительно замедляют компиляцию, ответ: легаси и обратная совместимость

Google

Roman
25.09.2018
18:31:24
тем и прекрасен процесс создания нового языка - можно сбросить тонны легаси с плеч и идти новым путём учитывая ошибки прошлого

Yo
25.09.2018
18:33:11
И дело тут не "сбросить тонны легаси", а в том, что серьезные проекты бизнес-систем, бывают именно такими, хотя и не очень часто...
тем и прекрасен процесс создания нового языка - можно сбросить тонны легаси с плеч и идти новым путём учитывая ошибки прошлого
можно учитывать не только ошибки, но и то хорошее, что уже есть. в других ЯП есть долгий путь, который они проходили ... например : сборка ручками, позже ANT, потом Maven, Gradle. Так что многомодульный билд-тул, который будет - генерить, копировать файлы обновляя ресурсы, компилить это все, собирать в более крупные модули (учитывая зависимости между модулями), деплоить на сервер, архивировать и т.д... - это реальность в других ЯП, просто "молодым и горячим" это не ведомо, до поры и времени.


Roman
25.09.2018
18:41:31
можно учитывать не только ошибки, но и то хорошее, что уже есть. в других ЯП есть долгий путь, который они проходили ... например : сборка ручками, позже ANT, потом Maven, Gradle. Так что многомодульный билд-тул, который будет - генерить, копировать файлы обновляя ресурсы, компилить это все, собирать в более крупные модули (учитывая зависимости между модулями), деплоить на сервер, архивировать и т.д... - это реальность в других ЯП, просто "молодым и горячим" это не ведомо, до поры и времени.
не "можно" а "нужно" ?

Yo
25.09.2018
18:42:47
не "можно" а "нужно" ?
собственно уже сейчас gradle можно использовать для такого рода проектов с Go компилятором, и гугл будет скорее всего туда двигаться. Другое дело, что в основном проекты пока "достаточно небольшие", чтобы задействовать такие вещи. Основной массе проектов, это "пока" не нужно.
А вы тут про "сбросить легаси" и бла-бла...

Roman
25.09.2018
18:43:17
в любом случае сравнивать C++ компиляторы с компилём Go - не лучшая идея. Они реализуют спецификации разных эпох, в Go вредный легаси не тянут как в плюсах в виде, например, header файлов, Go принципиально должен компилиться быстрее (зависит от уровня отладки)

Daniel
25.09.2018
18:44:35
проблема плюсов не в хедерах, а в темплейтах, и - в меньшей степени - в препроцессоре
а хедера на современном железе проблемы не представляют
так что дело не в легаси

Roman
25.09.2018
18:45:04

Yo
25.09.2018
18:45:36

?
25.09.2018
18:45:52

Roman
25.09.2018
18:48:08
а хедера на современном железе проблемы не представляют
в C++ можно написать header-only библиотеку, которая будет компилировать, если я неошибаюсь, каждый раз, снова и снова (не уверен, умеют ли современные компили сиё дело кешировать)
в Go это в принципе невозможно и ненужно

Foxcool
25.09.2018
18:48:32
Мне думается вопрос изначально в философских отправных точках.
Когда делаются огромные монолиты, то нужно много всяких вещей в языке, которые помогают писать эти огромные системы и меньше косячить, что все равно неизбежно.
Когда изначально думаешь о небольших сервисах, то писать можно хоть на черте лысом. Ибо сложность единицы небольшая, тестируешь ее снаружи, переписываешь при желании за относительно короткое время на любом доступном языке. И тут как раз начинает рулить скорость разработки, компиляции, относительная легковесность

Subbotin
25.09.2018
18:51:03
это микросервисы. не всегда годится
я вот тут телеграм десктоп собирал. больше часа повторная компиляция после правки одной строки

Daniel
25.09.2018
18:51:39
это модульность, годится всегда

Subbotin
25.09.2018
18:52:04
да.

Google

Daniel
25.09.2018
18:52:22


Yo
25.09.2018
18:52:29
Мне думается вопрос изначально в философских отправных точках.
Когда делаются огромные монолиты, то нужно много всяких вещей в языке, которые помогают писать эти огромные системы и меньше косячить, что все равно неизбежно.
Когда изначально думаешь о небольших сервисах, то писать можно хоть на черте лысом. Ибо сложность единицы небольшая, тестируешь ее снаружи, переписываешь при желании за относительно короткое время на любом доступном языке. И тут как раз начинает рулить скорость разработки, компиляции, относительная легковесность
» думаешь о небольших сервисах, то писать можно хоть на ...... Ибо сложность единицы небольшая, тестируешь ее снаружи.....
Обратная сторона - увеличивается кол-во связей, а потом растет их "сложность и взаимодействие". Сам микросервис не работает "в безвоздушном пространстве", а взаимодейтсвует с остальными компонентами... и может даже "асинхронно". Чем больше связей, тем сложнее взаимодействие - тем больше гемороя. Так что "не стоит обольщаться"


Subbotin
25.09.2018
18:53:18
ага. только с этим адом разбирается девопс и админ, а не разработчик. так что у разработчика всё ок

Daniel
25.09.2018
18:53:37

Yo
25.09.2018
18:53:44

Subbotin
25.09.2018
18:53:54
это была ирония

Yo
25.09.2018
18:54:39

Daniel
25.09.2018
18:56:07
то и называю - барьеры между модулями. например - формализованное api для модуля. в монолите мало кто заморачивается, в микросервисах придется. количество связей то же, просто в микросервисах они документированы и зафиксированы

Foxcool
25.09.2018
18:56:23
А так да, разделение труда админов и программистов размывается обратно. Надо уметь и код и эксплуатацию. Девопс же
И это хорошо. Не люблю слишком узкую специализацию. Отупляет

Daniel
25.09.2018
18:57:42
ну профнепригодные программеры тоже ноют - как это надо сначала обновить либу совместимым образом? можно же просто поправить код сразу в двух местах

Subbotin
25.09.2018
18:58:35
все ноют

Foxcool
25.09.2018
18:58:37
Да все ноют. Некоторые до сих пор не могут свое по отдавать с докером и dep тем же.
Понятно, что твой компоуз скорее всего не нужен админу с его ci. Но он может видеть пример эксплуатации рабочий простой

Subbotin
25.09.2018
18:59:39
докер для пидоров. только bare metal

Yo
25.09.2018
19:01:16

Foxcool
25.09.2018
19:02:31
Все равно накладные расходы будут
Зато может быть проще масштабировать
Как минимум разработку
А может и эксплуатацию

Google

dimcha
25.09.2018
19:04:45
Пожскажите, пожалуйста, реализацию блокирующего Read() из сетевого соединения. Данные прилетают с разным интервалом времени и разного размера. Как этот паттерн лучше всего отработать?

Foxcool
25.09.2018
19:05:17
Ыыыы офигенный ник и ава. За оффтоп ИЗВЕНИ

Eugenii
25.09.2018
19:05:24
раньше хорошим тоном было написать приложение, так что бы модули между собой были слабо связанны
идея ООП и все полетело в ООП, со страхом и ненавистью с сотней лишних наследований
сейчас это перенесли на другой уровень, было бы желание, а где говнокодить пофиг. там где можно было сделать 4 микросервис и 2 не микро но сервиса, получается 3к микросервисов и как они связанны между собой, знает только все тот же индус, который и раньше из нирваны не выходил
ну и да, точки отказа стали меняться

Subbotin
25.09.2018
19:06:27

dimcha
25.09.2018
19:06:53
cpu burn'ом

Foxcool
25.09.2018
19:07:12
Ну мы делаем не прям микро. Просто такие небольшие с определенной специализацией. Переписываются многие за недели от силы.
Но это на прям микро, где на каждый чих целый сервер с апи

Alexander
25.09.2018
19:07:22

dimcha
25.09.2018
19:08:12
читая в infinite loop 0 байт из потока мы выжигаем проц, а хочется, чтобы чтение происходило по факту наличия данных в потоке

Admin
ERROR: S client not available

Yo
25.09.2018
19:08:25

Daniel
25.09.2018
19:23:02

Foxcool
25.09.2018
19:23:56

Daniel
25.09.2018
19:23:57

dimcha
25.09.2018
19:27:22
а в go разве есть неблокирующий? есть блокирующий с таймаутом
мм.. не так выразился, видимо. Блокирующий не всмысле неасинхронный, а всмысле ожидания появления данных в потоке, чтобы не выжигался проц вычитывая пустой буфер.
Иными словами, чтобы горутина замирала на строчке msg := conn.BlockRead() если внутри потока ничего нет ( n_read == 0 )

Subbotin
25.09.2018
19:29:08

Daniel
25.09.2018
19:29:44
он реализован через event loop

Александр
25.09.2018
19:31:17
что-то мне кажется вы не в ту степь уехали

dimcha
25.09.2018
19:32:06
чтение эвентов из вебсокета

Daniel
25.09.2018
19:32:21

Google

dimcha
25.09.2018
19:32:40
увы нет.

Daniel
25.09.2018
19:32:46
что - нет?
где у вас - нет?

Aleksandr
25.09.2018
19:32:56
увы нет.
а как узнать что там 0 байт, не попытавшись вычитать?

Yo
25.09.2018
19:32:56

Александр
25.09.2018
19:34:03

dimcha
25.09.2018
19:34:34
он читает 0 байт из потока и идет дальше

Daniel
25.09.2018
19:34:58
кто - он,

Александр
25.09.2018
19:35:03
можно же было взять какой либо - https://github.com/gorilla/websocket и оки

Aleksandr
25.09.2018
19:35:22

dimcha
25.09.2018
19:35:38

Daniel
25.09.2018
19:36:01
коллега, не отвлекайтесь

dimcha
25.09.2018
19:36:02
кто - он,
Conn.Read(), конечно. Мы же о нем говорим

Aleksandr
25.09.2018
19:36:06
ему не нравится вечный луп. он хочет чтобы луп продолжился только тоггда, когда на то укажет божественное провидение, знающее что появились байты

Yo
25.09.2018
19:36:08

Roman
25.09.2018
19:36:09

Daniel
25.09.2018
19:36:27

dimcha
25.09.2018
19:36:41

Daniel
25.09.2018
19:37:15
вот этот? https://golang.org/pkg/net/#Conn

Александр
25.09.2018
19:37:35