Artem
Согласен, не много, но есть) Например импорт пакета, крайне странное решение со стороны разрабов пригвоздить импорт к статичным путям через GOPATH))) ну да ладно, пока у меня полно интузиазма))))
Artem
Вот непонимаю написанного. Можно проблему описать?
ну по сути нельза просто в папке с проектом создать папку aaa и потом ее импортировать в main, если папка с проектом лежит не по адресу /home/{user}/go/src/{project name}/
Artem
тут либо переопределять переменную окружения GOPATH, что неудобно при разработке нескольких проектов, либо хранить проекты по дефолтному пути, ну или третий вариант пойти через гитхаб, что тоже не очень удобно
Ivan
И ещё проблема — нельзя отделить приложение от зависимостей. Вот как в maven например - все зависимости валяются где-то в $HOME/.m2, а при сборке подтягиваются. С точки зрения CI просто шикарно. С GOPATH всё не так. Нужно либо исходники приложения копировать внутрь GOPATH, либо какими-то симлинками заморачиваться. Потом нет версионности - каждому приложению свой GOPATH нужен. И это вымораживает слегка.
Givi
По порядку
Artem
+++, но даже это не пугает, главное чтобы в продакте работало быстро и стабильно, а то с питоном, хоть и легко в разработке, но в продакте потом работает сильно плохо, в плане производительности
Givi
Но в любом случае так делать не стоит
Artem
Неправда
ну пока видел только для go 1.2 и ниже способ import "./aaa"
Artem
не берем в расчет контейнеры и виртуальные окружения
Ivan
Можно же, как и в любом gcc и прочем
Можно держать склад разных версий go-пакетов в каком-то одном месте и использовать его для сборки разных приложений, которые будут находится в случайных директориях (куда ci склонирует)?
Anonymous
можно юзать dep
Givi
О чем и речь, МОЖНО, но не удобно)
dep ensure - где тут НЕУДОБНО?
Givi
чем это отличается от pip install ?
Vasily
dep и компания других подобных либ снимаю вообще всю боль и всякое неудобство
Vasily
ада с зависимостями вообще не существует в го в этом случае
Artem
с точки зрения включил и пошел
Anonymous
На самом деле у депа пока есть недостатки
Ivan
Вынос мозга. У вас есть как минимум 2 способа отделить зависимости от приложения - вендоринг и собственно GOPATH, однако $HOME/.m2 который является тем же самым но только с боку, приносит вам дикую боль? Рили?
ещё раз - проблема с GOPATH в том, что исходники приложения нужно «встроить» в него. Симлинки/копирование. dep - таже проблема, только изнутри - зависимости хранятся в vendor внутри исходников приложения.
Anonymous
медленный
Karey
Первый раз же только, потом довольно быстро
Ivan
чем это отличается от pip install ?
pip install умеет глобально хранить зависимости, незавсимо от пути, где лежат исходники приложения.
Artem
для того чтобы это использовать, надо знать об этом, это тоже накладывает свои ограничения, надо знать как этим инструментом пользоваться, надо потратить время на это
Artem
несомненный плюс го в том, что он собирается в готовый бинарник, без зависимостей,
Givi
Неудобно делать симлинк в CI?
Givi
Я правильно понял?
Artem
C pip-ом та же проблема, с любым манагером зависимостей таже проблема.
Речь не контроле пакетов, а в нативном подключении пакетов с расположением в локальной папке с проектом
Artem
проще говоря при переходе с другого ЯП надо изучить помимо самого го еще кучу всего)
Givi
проще говоря при переходе с другого ЯП надо изучить помимо самого го еще кучу всего)
Я как минимум, сменил 4 ЯП, везде как минимум год нужен, что-бы окунутся в экосистему, но с Го это было проще всего.
Ivan
Неудобно делать симлинк в CI?
Симлинк может решить проблему для одного приложения. Но тогда и зависимости можно хранить только для одного приложения, т.к. нет возможности в одном месте хранить разные версии пакетов.
Givi
Симлинк может решить проблему для одного приложения. Но тогда и зависимости можно хранить только для одного приложения, т.к. нет возможности в одном месте хранить разные версии пакетов.
Разумно предположить, что кеширование это проблема системы вендоринга, и dep сейчас, насколько я знаю не делает кеширования. Но толи glide, толи godep делали кешироваине, и даже на глобальном уровне и вашу проблему решали. Так, что если завезут в dep проблема решится.
Artem
Я как минимум, сменил 4 ЯП, везде как минимум год нужен, что-бы окунутся в экосистему, но с Го это было проще всего.
на питоне у меня ушел месяц с 0 до первого приложения в проде, оно конечно не сильно сложное, но как факт, ну все равно будем вливаться, мне гошечка пока иппонирует
Anonymous
оценивать время старта, когда у тебя за спиной 4 языка - глупо
Givi
на хабре яндекс писал про gb - тоже вроде бы решение.
dep is the official experiment поэтому, я лучше подожду, или сам допишу.
Ivan
вот, про то и речь ;)
Givi
Завидую тем людям которые сидят на одном языке с одной парадигмой, варятся в собственном соку и не имеют бартхерта с "вражеской" языковой завязкой, которую тоже надо пилить, интегрировать и в конце концов поддерживать. 😕 Нет и не было у меня такого счастья, наврное только в школе - с паскалем 😂
Givi
Hint - если выучишь JavaScript, сможешь писать и бек, и фронт, и декстопное ПО на одном языке. (Правда любить тебя никто не будет после этого) 😄
О да ладно, за 17 лет программерского ада я с ним справился, и досихпор по ночам плачу, когда разгребаю его, ладно, сам язык ещё куда ни шло, причесали в es2015, но вот качество кода.... Если с питоняшкой в большинстве случаев сторонний пакет, не вызывает желания найти разраба и повесить его за яйца, то каждый второй пакет в ноде, готовый протокол для доноса на автора в гестапо.
Givi
Давайте программировать на нашем ламповом Го, просто, грубо и без блекджека с куртизанками.
S
Накипело.....эххх
Pawel
О да ладно, за 17 лет программерского ада я с ним справился, и досихпор по ночам плачу, когда разгребаю его, ладно, сам язык ещё куда ни шло, причесали в es2015, но вот качество кода.... Если с питоняшкой в большинстве случаев сторонний пакет, не вызывает желания найти разраба и повесить его за яйца, то каждый второй пакет в ноде, готовый протокол для доноса на автора в гестапо.
ну так сам автор нодежс признал, что го на много лучше подходит для бэкенда, чем его детище. ну и тот факт, что на любой язык придумывают компиляторы/транспилеры в жс, говорит о том, что нормальные люди по саоей воле жс будут только палкой ковырять в противогазе и резиновых перчатках
S
я вот тоже по-тиху на го слажу))с питона)) хотя и питон казался ламповым))
S
а всегда GIL есть плохо?
S
это будет спор ни о чем)
Anonymous
Ruslans
В чем проблемка то? Лучше то пока не придумали
Artem
Который из? Говорят, что питонов аж два штука.
питона есть одна - это 3, остальное пережитки эры динозавров
Daniel
а всегда GIL есть плохо?
глобальный лок? да, всегда плохо
S
есть язык он решает какие-то бизнес задачи - решает достаточно хорошо. Суть в том, что тот же го на данный момент больше подходит для моих задач.
Givi
Питон ох...нен, но он настолько же прост, насколько хочет этого разраб, однако у большинства разрабов, слишком раздутое эго и позывы к творчеству, что-бы быть простым, в итоге, на больших проектах, каких только зверушек не увидишь...
Givi
Ну и def a(shugashuga) хуже чем func a(shugashuga string) раз эдак в 10, для чтения.
Givi
А читаю я куда больше чем пишу.
S
глобальный лок? да, всегда плохо
эммм. не согласен, я уже сказал, что это будет спор ни о чем.
Daniel
откуда вообще взяться спору?
Daniel
это было пофиг в одноядерной системе
S
есть бизнес задача, есть реализация. Мешает GIL - юзай другой язык
Daniel
но где вы видели одноядерную последний раз? и когда?
S
это было пофиг в одноядерной системе
согалсен, но а где Вы видели язык с 0 написанный для многоядерных систем?
S
я вот вижу ГО))
Daniel
да
Daniel
других пока нет
S
все остальные языки приобретабт свою способность работать с ядрами где-то сбоку
Daniel
есть те, что неплохо подошли (java), и те, что подошли по парадигме (функциональные)
Daniel
и все
S
Контейнер
это не язык - это решение проблем с многоядерностью
S
сторонними средствами
Daniel
это не язык - это решение проблем с многоядерностью
контейнер - это, типа, одноядерная система. что, вообще-то, не так со всей очевидностью...
Ruslans
это не язык - это решение проблем с многоядерностью
Это ответ на вопрос где вы видели одноядерную систему