@gogolang

Страница 1457 из 1630
Daniel
25.09.2018
17:57:49
мы можем куда угодно стремиться

или мы будем собирать проекты со скоростью с++, или мы будем запускать генераторы вручную

Roman
25.09.2018
17:59:12
или мы будем собирать проекты со скоростью с++, или мы будем запускать генераторы вручную
C++ перекомпиляция header'ов дорогая и отсутствие инкрементальной компиляции.. в Go с этим проблем гораздо меньше

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
?

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

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

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

Yo
25.09.2018
18:33:11
послушайте строуструпа, почему нужны header файлы учитывая что они знаэчительно замедляют компиляцию, ответ: легаси и обратная совместимость
Зачем мне его слушать? Для меня "легаси проект" в жизни, где порядка 30-40 модулей, каждый из которых по 2 или 3 "слоя" (веб/веб-сервисы, бизнес логика, БД компоненты) - это реалии жизни. Что Страусруп мне может рассказат про "хидеры"? Так вот в таком легаси-проекте - без многомодульного билд-тула "бедя", поэтому их и придумали. Прост в Го этого пока нет

И дело тут не "сбросить тонны легаси", а в том, что серьезные проекты бизнес-систем, бывают именно такими, хотя и не очень часто...

тем и прекрасен процесс создания нового языка - можно сбросить тонны легаси с плеч и идти новым путём учитывая ошибки прошлого
можно учитывать не только ошибки, но и то хорошее, что уже есть. в других ЯП есть долгий путь, который они проходили ... например : сборка ручками, позже 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
проблема плюсов не в хедерах, а в темплейтах, и - в меньшей степени - в препроцессоре

а хедера на современном железе проблемы не представляют

так что дело не в легаси

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

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
это микросервисы. не всегда годится

я вот тут телеграм десктоп собирал. больше часа повторная компиляция после правки одной строки

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
ага. только с этим адом разбирается девопс и админ, а не разработчик. так что у разработчика всё ок

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

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
то и называю - барьеры между модулями. например - формализованное api для модуля. в монолите мало кто заморачивается, в микросервисах придется. количество связей то же, просто в микросервисах они документированы и зафиксированы
Не обязательно API барьеры, у вас же может быт так, что "сохранение/удалени записи в/из базу" (одного микро-сервиса), вызывает автоматическую генерацию сообщения к другим "зависимым подсистемам" (мик-сер.), которые ловят его через "брокер-очередь" и обрабатывают своим образом, а может еще и порождают "свои команды/события". Тут барьеры API никак не помогут. А ведь такое работает.

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

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

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

Alexander
25.09.2018
19:07:22
для бэкенда стоит переходить с пхп на джава
А в чате по джяве спросить не пробовали? xD

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

Admin
ERROR: S client not available

Foxcool
25.09.2018
19:23:56
а вы делаете/используете что-то типа: - Saga pattern - Transaction log tailing ? просто интерес...
хм... наверное не скажу сейчас сам. Там умный тимлид проектирует. Я пока только вникаю

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

Subbotin
25.09.2018
19:29:08
а в go разве есть неблокирующий? есть блокирующий с таймаутом
ээээ. он же реализован через неблокирующие системные вызовы.

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

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

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
можно же было взять какой либо - https://github.com/gorilla/websocket и оки
Спасибо Кэп ) Только оно не умеет из unix domain читать

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

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

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

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
Спасибо Кэп ) Только оно не умеет из unix domain читать
чочочо? O_o Где вебсокет и где unix domain. Вы его (вебсокет) по назначению используется для общения браузер<>бек?

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