🏁Александр
но это не отменяет "коммита генерации"
🏁Александр
хотя в таком случаи у вас код на CI будет не совпадать с локальным
Alexander
Добрее надо быть друг к другу. А в джяве вот генерация ресурсов является стандартным шагом при сборке приложения. В репу можно не комитить, но в итоговый артефакт всегда попадёт кодоген по актуальному DSL.
Daniel
> но это не отменяет тот факт, что автоматической кодогенерацией можно устранить один из потенциальных путей достижения ошибок.
коллега, вы с упорством, достойным лучшего применения, говорите об автоматической генерации
вы имеете в виду полную генерацию? она дорогая.
или вы имеете в виду какую-то умную генерацию? так ее нет и не предвидится.
давайте вы больше не будете этот никчемный аргумент нам все премя пропихивать, а?
Roman
Daniel
Daniel
go generate может делать go run
Daniel
но пользы от этого риальне мало
Roman
да но это опять всё вручную..
Roman
а мы к автоматике стремимся
Daniel
мы можем куда угодно стремиться
Daniel
или мы будем собирать проекты со скоростью с++, или мы будем запускать генераторы вручную
Roman
generate + go практически всегда будет гораздо быстрее чем компиляция C++. Компиляторы C++ были основаны на дизайне, который учитывал ограничения железа 80-90 годов (в основном по памяти). А сейчас у нас памяти в ноуте как тогда в мега-дата-центре
Daniel
или нет
Roman
надо мерить)
qurabay
Здесь есть бекенд джава разработчики?
qurabay
для бэкенда стоит переходить с пхп на джава
Bohdan
мне кажется, тебе пора в бан за оффтоп
.
Ахах
YᑌᖇIY
или мы будем собирать проекты со скоростью с++, или мы будем запускать генераторы вручную
рано или поздно вы будете собирать проекты со скоростью С++, если даже в других языках и проектах с множеством кода, это рано или поздно становиться реальностью, проекты разрастаются.
Кодо-генерация - это хорошо, когда сделано грамотно и применена "к месту". Ран-тайм "аннотации" - тоже хорошо и удобно, когда "к месту".
Чтобы быстро собирать большие проекты, есть решения, в java - это билд кэши, успешно применяются в некоторых билд-тулзах (gradle). Без них - попа, скалисты "страдают", потому что там SBT тулза по умолчанию без них, а с ними сборка может "ускорятся" в 4-5 раз. Рано или поздно Go тожк к этому придет, когда код-база многократно вырастет.
Roman
рано или поздно вы будете собирать проекты со скоростью С++, если даже в других языках и проектах с множеством кода, это рано или поздно становиться реальностью, проекты разрастаются.
Кодо-генерация - это хорошо, когда сделано грамотно и применена "к месту". Ран-тайм "аннотации" - тоже хорошо и удобно, когда "к месту".
Чтобы быстро собирать большие проекты, есть решения, в java - это билд кэши, успешно применяются в некоторых билд-тулзах (gradle). Без них - попа, скалисты "страдают", потому что там SBT тулза по умолчанию без них, а с ними сборка может "ускорятся" в 4-5 раз. Рано или поздно Go тожк к этому придет, когда код-база многократно вырастет.
не будете. Не надо сравнивать компилятор Go и компилятор C++
Компиляторы C++ были основаны на дизайне, который учитывал ограничения железа 80-90 годов (в основном по памяти). А сейчас у нас памяти в ноуте как тогда в мега-дата-центре
Co(n)stantine👨🔬
😄
Co(n)stantine👨🔬
ххх:
люблю стабильные современные технологии.
нестабильно работает? добавь памяти.
медленно работает? добавь памяти.
не может запуститься? добавь памяти.
бросила девушка? добавь памяти.
не можешь найти внеземную жизнь? добавь памяти.
напали рептилоиды? добавь памяти.
надоел кокаин? добавь памяти.
Daniel
рано или поздно вы будете собирать проекты со скоростью С++, если даже в других языках и проектах с множеством кода, это рано или поздно становиться реальностью, проекты разрастаются.
Кодо-генерация - это хорошо, когда сделано грамотно и применена "к месту". Ран-тайм "аннотации" - тоже хорошо и удобно, когда "к месту".
Чтобы быстро собирать большие проекты, есть решения, в java - это билд кэши, успешно применяются в некоторых билд-тулзах (gradle). Без них - попа, скалисты "страдают", потому что там SBT тулза по умолчанию без них, а с ними сборка может "ускорятся" в 4-5 раз. Рано или поздно Go тожк к этому придет, когда код-база многократно вырастет.
паскаль как собирался быстро, так и собирается. и go будет собираться быстро, если не навешивать на сборку разного всего.
YᑌᖇIY
не будете. Не надо сравнивать компилятор Go и компилятор C++
Компиляторы C++ были основаны на дизайне, который учитывал ограничения железа 80-90 годов (в основном по памяти). А сейчас у нас памяти в ноуте как тогда в мега-дата-центре
Не согласен. Памяти тогда было - столько сколько было, оно соответствовало тем "маленьким" программам, которые были востребованы.
Сейчас памяти больше, но стало использоваться "выведение типов" повсеместно в ЯП, контроль типов разными видами, контроль видимости и времени жизни.
Не тешьте себя иллюзиями (как я думаю), что вот сейчас "много памяти", а это автоматически значит, что Go компилятор "построен по другим принципам" создания компиляторов. Эти принципы "принципиально не изменились" (имхо).
И если сейчас кода относительно не много, то потом будет много и билд-тул, который будет собирать многомодульный проект из 10-ка частей - это станет реальностью, как у других ЯП.
Roman
Не согласен. Памяти тогда было - столько сколько было, оно соответствовало тем "маленьким" программам, которые были востребованы.
Сейчас памяти больше, но стало использоваться "выведение типов" повсеместно в ЯП, контроль типов разными видами, контроль видимости и времени жизни.
Не тешьте себя иллюзиями (как я думаю), что вот сейчас "много памяти", а это автоматически значит, что Go компилятор "построен по другим принципам" создания компиляторов. Эти принципы "принципиально не изменились" (имхо).
И если сейчас кода относительно не много, то потом будет много и билд-тул, который будет собирать многомодульный проект из 10-ка частей - это станет реальностью, как у других ЯП.
послушайте строуструпа, почему нужны header файлы учитывая что они знаэчительно замедляют компиляцию, ответ: легаси и обратная совместимость
Roman
тем и прекрасен процесс создания нового языка - можно сбросить тонны легаси с плеч и идти новым путём учитывая ошибки прошлого
YᑌᖇIY
И дело тут не "сбросить тонны легаси", а в том, что серьезные проекты бизнес-систем, бывают именно такими, хотя и не очень часто...
YᑌᖇIY
тем и прекрасен процесс создания нового языка - можно сбросить тонны легаси с плеч и идти новым путём учитывая ошибки прошлого
можно учитывать не только ошибки, но и то хорошее, что уже есть. в других ЯП есть долгий путь, который они проходили ... например : сборка ручками, позже ANT, потом Maven, Gradle. Так что многомодульный билд-тул, который будет - генерить, копировать файлы обновляя ресурсы, компилить это все, собирать в более крупные модули (учитывая зависимости между модулями), деплоить на сервер, архивировать и т.д... - это реальность в других ЯП, просто "молодым и горячим" это не ведомо, до поры и времени.
Roman
можно учитывать не только ошибки, но и то хорошее, что уже есть. в других ЯП есть долгий путь, который они проходили ... например : сборка ручками, позже ANT, потом Maven, Gradle. Так что многомодульный билд-тул, который будет - генерить, копировать файлы обновляя ресурсы, компилить это все, собирать в более крупные модули (учитывая зависимости между модулями), деплоить на сервер, архивировать и т.д... - это реальность в других ЯП, просто "молодым и горячим" это не ведомо, до поры и времени.
не "можно" а "нужно" 😊
YᑌᖇIY
не "можно" а "нужно" 😊
собственно уже сейчас gradle можно использовать для такого рода проектов с Go компилятором, и гугл будет скорее всего туда двигаться. Другое дело, что в основном проекты пока "достаточно небольшие", чтобы задействовать такие вещи. Основной массе проектов, это "пока" не нужно.
А вы тут про "сбросить легаси" и бла-бла...
Roman
в любом случае сравнивать C++ компиляторы с компилём Go - не лучшая идея. Они реализуют спецификации разных эпох, в Go вредный легаси не тянут как в плюсах в виде, например, header файлов, Go принципиально должен компилиться быстрее (зависит от уровня отладки)
Daniel
проблема плюсов не в хедерах, а в темплейтах, и - в меньшей степени - в препроцессоре
Daniel
а хедера на современном железе проблемы не представляют
Daniel
так что дело не в легаси
Roman
YᑌᖇIY
Co(n)stantine👨🔬
Roman
а хедера на современном железе проблемы не представляют
в C++ можно написать header-only библиотеку, которая будет компилировать, если я неошибаюсь, каждый раз, снова и снова (не уверен, умеют ли современные компили сиё дело кешировать)
в Go это в принципе невозможно и ненужно
Foxcool
Мне думается вопрос изначально в философских отправных точках.
Когда делаются огромные монолиты, то нужно много всяких вещей в языке, которые помогают писать эти огромные системы и меньше косячить, что все равно неизбежно.
Когда изначально думаешь о небольших сервисах, то писать можно хоть на черте лысом. Ибо сложность единицы небольшая, тестируешь ее снаружи, переписываешь при желании за относительно короткое время на любом доступном языке. И тут как раз начинает рулить скорость разработки, компиляции, относительная легковесность
Subbotin
это микросервисы. не всегда годится
Subbotin
я вот тут телеграм десктоп собирал. больше часа повторная компиляция после правки одной строки
Daniel
это модульность, годится всегда
Daniel
Subbotin
да.
Daniel
YᑌᖇIY
Мне думается вопрос изначально в философских отправных точках.
Когда делаются огромные монолиты, то нужно много всяких вещей в языке, которые помогают писать эти огромные системы и меньше косячить, что все равно неизбежно.
Когда изначально думаешь о небольших сервисах, то писать можно хоть на черте лысом. Ибо сложность единицы небольшая, тестируешь ее снаружи, переписываешь при желании за относительно короткое время на любом доступном языке. И тут как раз начинает рулить скорость разработки, компиляции, относительная легковесность
» думаешь о небольших сервисах, то писать можно хоть на ...... Ибо сложность единицы небольшая, тестируешь ее снаружи.....
Обратная сторона - увеличивается кол-во связей, а потом растет их "сложность и взаимодействие". Сам микросервис не работает "в безвоздушном пространстве", а взаимодейтсвует с остальными компонентами... и может даже "асинхронно". Чем больше связей, тем сложнее взаимодействие - тем больше гемороя. Так что "не стоит обольщаться"
Subbotin
ага. только с этим адом разбирается девопс и админ, а не разработчик. так что у разработчика всё ок
Daniel
YᑌᖇIY
Subbotin
это была ирония
YᑌᖇIY
Daniel
то и называю - барьеры между модулями. например - формализованное api для модуля. в монолите мало кто заморачивается, в микросервисах придется. количество связей то же, просто в микросервисах они документированы и зафиксированы
Foxcool
Foxcool
А так да, разделение труда админов и программистов размывается обратно. Надо уметь и код и эксплуатацию. Девопс же
Foxcool
И это хорошо. Не люблю слишком узкую специализацию. Отупляет
Daniel
ну профнепригодные программеры тоже ноют - как это надо сначала обновить либу совместимым образом? можно же просто поправить код сразу в двух местах
Subbotin
все ноют
Foxcool
Да все ноют. Некоторые до сих пор не могут свое по отдавать с докером и dep тем же.
Понятно, что твой компоуз скорее всего не нужен админу с его ci. Но он может видеть пример эксплуатации рабочий простой
Subbotin
докер для пидоров. только bare metal
Foxcool
Foxcool
Все равно накладные расходы будут
Foxcool
Зато может быть проще масштабировать
Foxcool
Как минимум разработку
Foxcool
А может и эксплуатацию
Foxcool
Ыыыы офигенный ник и ава. За оффтоп ИЗВЕНИ
Eugenii
раньше хорошим тоном было написать приложение, так что бы модули между собой были слабо связанны
идея ООП и все полетело в ООП, со страхом и ненавистью с сотней лишних наследований
сейчас это перенесли на другой уровень, было бы желание, а где говнокодить пофиг. там где можно было сделать 4 микросервис и 2 не микро но сервиса, получается 3к микросервисов и как они связанны между собой, знает только все тот же индус, который и раньше из нирваны не выходил
ну и да, точки отказа стали меняться
Subbotin
а чем неблокирующий то неподходит?
Foxcool
Ну мы делаем не прям микро. Просто такие небольшие с определенной специализацией. Переписываются многие за недели от силы.
Но это на прям микро, где на каждый чих целый сервер с апи
YᑌᖇIY
Daniel
а в go разве есть неблокирующий? есть блокирующий с таймаутом
Foxcool
Daniel