LINUX.ORG.RU

Что за идиотизм с импортами в гуланге?

 ,


1

6

Вот уже несколько говнореп смотрю и вижу внутри репы github.com/hipstor/cococo импорты вида: import github.com/hipstor/cococo/internal-lib/functions.

Т.е. это нормально, что при форке мне нужно будет каждый сраный файл проверять на наличие таких высеров?

Это норма, или хипсторы слишком недоразвиты, чтобы понять смысл ..?

Перемещено leave из desktop

★★★★★

Последнее исправление: derlafff (всего исправлений: 4)

Ответ на: комментарий от anonymous

Лорчую, вон даже используют хипстер-старьё.

Казалось бы, причем здесь Ричи и Томпсон, работающие на современной по тем временам технике, но анонимуса не проведешь.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

When the three of us [Thompson, Rob Pike, and Robert Griesemer] got started, it was pure research. The three of us got together and decided that we hated C++. [laughter] ... [Returning to Go,] we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason.

Просто хипстеры так же известны использованием всякого устаревшего шатафа.

anonymous
()
Ответ на: комментарий от beastie

Скажем так — не самое худшее. ;)

из того, с чем мне приходилось сталкиваться, одно из самых худших. но сейчас вот go, и его инфраструктура, пытаются урвать первое место.

waker ★★★★★
()
Ответ на: комментарий от waker

А если у тебя n проектов с библиотекой foo, для которых ты используешь «npm без -g», то сколько копий библиотеки foo у тебя будет?

feofan ★★★★★
()
Ответ на: комментарий от anonymous

Просто хипстеры так же известны использованием всякого устаревшего шатафа.

Причем тут Ричи, Томпсон и современный (тогда) PDP-11?

tailgunner ★★★★★
()
Ответ на: комментарий от feofan

Ну он для меня более авторитетный источник

Авторитеты не нужны. Вся философия науки и результаты ее развития просто кричат об этом.

anonymous
()
Ответ на: комментарий от anonymous

Пока я не обладаю всей полнотой информации, я могу использовать мнения эксперта для предварительной оценки.

feofan ★★★★★
()
Ответ на: комментарий от tailgunner

А кто еще в тройке?

откуда взялась цифра «3»? по большому счету, подобные проблемы с организацией модулей, как в go и питоне, в основном если и существуют с другими языками/окружениями, то из-за идиотизма разработчиков конкретных проектов. а в этих двух они практически best practices.

назвать третий вариант, который очевидно хуже этих двух, не могу. слышал что в руби похожее, но сталкивался с ним только как юзер (как разработчик, не нашел достаточной мотивации чтобы его изучать).

waker ★★★★★
()
Ответ на: комментарий от waker

откуда взялась цифра «3»?

После фразы «одно из самых» представляется длинный ряд плохих решений - меня бы устроило перечисление трех худших.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

у меня есть претензии к организации модульности во многих окружениях, но там много субъективщины, и нет нерешаемых граблей.

давай будем считать, что номер 3 это CPAN (к счастью, в перле он на 100% опционален)

waker ★★★★★
()
Ответ на: комментарий от Deleted

Это точно не проблема Go.

Значит, когда одними штуками в языке стимулируют разработчиков делать что-то хорошо, то это — преимущество языка, а когда из-за других любую более-менее большую либу невозможно форкнуть без боли — то это не недостаток? Ога.

derlafff ★★★★★
() автор топика
Ответ на: комментарий от derlafff

любую более-менее большую либу невозможно форкнуть без боли — то это не недостаток?

Осиль уже sed

feofan ★★★★★
()
Ответ на: комментарий от loz

Так, и что будет, если я форкну либу и накачу на нее свой патч?

То ты можешь долго офигевать, почему твой патч не применился, пока не заметишь, наконец, этот долбанный абсолютный импорт

derlafff ★★★★★
() автор топика
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от derlafff

Когда вот уже совсем никак не получается, пора читать инструкциюдокументацию.

feofan ★★★★★
()
Ответ на: комментарий от templarrr

Весь тред о go, я о pip спрашиваю.

а, ну pip сам по себе ничем не примечателен. он просто ставит пакеты туда, где питон может их найти. проблема же в том, что питон не может их искать в нормальном удобном месте, например в поддиректории modules твоего проекта, а только у себя в site-packages. а это, в свою очередь, приводит к костылям навроде virtualenv и ему подобным.

(пройдись вверх по ответам, я как раз про pyenv/virtualenv писал, а не про pip).

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от feofan

А если у тебя n проектов с библиотекой foo, для которых ты используешь «npm без -g», то сколько копий библиотеки foo у тебя будет?

гораздо более важный вопрос: будут ли копии библиотеки foo одинаковыми? проекты развиваются асинхронно, и зависимости в них обновляются по плану, а не пуллом с гитхаба для всех одновременно с криком leeroy jenkins!

waker ★★★★★
()
Ответ на: комментарий от waker

В го тоже так можно, выше уже писали. Можно каждому проекту указывать свой GOPATH, можно использовать вендоринг зависимостей для конкретного проекта (и зависимостей зависимостей тоже).

feofan ★★★★★
()

а что если подменить репу на сетевом уровне и вместо нужного модуля говнокод будет импортировать vovan_wrapper где сверка ключей и прочее?

anonymous
()
Ответ на: комментарий от Deleted

Ага, а безопасность кода - не проблема pure C.

Руки программиста - это одно. Типовые ошибки, которых не избежать при программировании на языке - это другое. Ошибки, заложенные в язык by design сознательно - это третье.

Что есть что в данном случае - каждый решает сам.

Нет, понятное дело, guns do not kill people (c), и выстрел в ногу делает в общем-то программист. Только когда тебе в пистолет пихают ядерную боеголовку, только потому что это «модно» - это не смешно

Pinkbyte ★★★★★
()

а я то думал что питон топ1 по этому(после джаваскрипта,он вне конкуренции)

это го обхожу стороной,язык детектор проекта-проект для тупой блондинки из офиса-100% на го(причем тупой современной блондинки,тупой по максимуму)

anonymous
()
Ответ на: комментарий от Debasher

Я тут не понимал, почему они дженереки не запиливают. Но покодил тут серьёзно на джаве и утонул в болоте, затыканном @SafeVarargs и @SupressWarnings(«unchecked»). Уж лучше без них, чем так. Хуже только рефлексия

derlafff ★★★★★
() автор топика
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от anonymous

это го обхожу стороной,язык детектор проекта-проект для тупой блондинки из офиса-100% на го(причем тупой современной блондинки,тупой по максимуму)

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

Deleted
()
Ответ на: комментарий от derlafff

когда одними штуками в языке стимулируют разработчиков

программист должен выбирать сам каким путем идти, язык возможности предоставляет.

большую либу невозможно форкнуть без боли

тут уже к психиатру. или 50 оттенков посмотри, говорят там как раз похожая история.

Deleted
()
Ответ на: комментарий от feofan

можно использовать вендоринг зависимостей для конкретного проекта

Я одного не пойму: как вы разруливаете версии библиотек, если вся информация о них - это ссылка на мастер? Вот ты сделал «вендоринг», и какие теперь версии зависимостей у тебя в проекте? Как синхронизироваться с основными репами? Должны же быть стабильные версии, экспериментальные и т.п. Может я чего не догоняю, но завязка на мастер это детский сад какой-то. Советы заводить новые репы при смене API вообще ахтунг.

anonymous
()
Ответ на: комментарий от Pinkbyte

guns do not kill people (c)

Вот с этого и надо было начать. Как как использовать инструмент - дело программера, а не самого инструмента.

Deleted
()
Ответ на: комментарий от Deleted

программист должен выбирать сам каким путем идти

Объясни, почему везде первым делом запиливают пакетный менеджер с мультиверсионностью, и только гоферы по-простецки импортят из мастера. Все не в ногу?

anonymous
()
Ответ на: комментарий от leave

Ну это от организации разработки зависит. Я например с master мержрусь когда <feature-name>-ветка готова и протещщена. Таким образом в master у меня всегда самый «чистый» код.

На go не пишу, но картинные сцены я бы тут не устраивал. Это удобно (наверное). А если ты так зависишь от проекта - у тебя по-любому где-то есть бэкап его репы. В случае чего - можно и в свою репу утащить. А если следить за разработкой такой зависимости - параллельно разработке своего кода - то неожиданностей должно быть минимум. Плюс наверняка это каким-то образом стимулирует ... ээээ ... ну что-то хорошее наверняка стимулирует, лол.

anonymous
()
Ответ на: комментарий от anonymous

Советы заводить новые репы при смене API вообще ахтунг.

Обоснуй.

Как по мне — несовметимое изменение API равнозначно новому проекту.

Изменишь ли ты циферку (и всем скажешь, что начиная с 3.1.4.1.5.9 оно больше несовместимо с тем, что было раньше) или дашь проекту новое имя — суть теже яйца, вид в профиль. Но при втором подходе хотя бы сразу ясно, что оно больше не совместимо.

beastie ★★★★★
()

Тред не читал. ТС уже создал issue на гитхабе или так и продолжает ныть?

Deleted
()
Ответ на: комментарий от anonymous

почему везде первым делом запиливают пакетный менеджер с мультиверсионностью

А может первым делом лучше сделать, just works (as intended), и только потом заниматься мутью dependecy hell? ;)

beastie ★★★★★
()
Ответ на: комментарий от anonymous

как вы разруливаете версии библиотек

есть gopkg.in. А так, версия - это комит. Вот такой мрак, да.

Как синхронизироваться с основными репами?

Либо использовать один из менеджеров зависимостей, либо git pull.

Должны же быть стабильные версии, экспериментальные и т.п.

Есть пропозал про симвер. Сейчас в процессе обсуждения.

Советы заводить новые репы при смене API вообще ахтунг.

Как ни странно, это, в основном, работает :)

feofan ★★★★★
()
Ответ на: комментарий от loz

Ты сам то понимаешь что несешь? Пинать автора либы, когда ты сделал критический хотфикс на релиз? Ты в продакшен давно писал то? Я бы посмотрел как ты отмазываешься что проебал все сроки из-за того, что автор либы второй день не отвечает тебе и вообще в свадебном путешествии.

А в чём разница с выбросом сторонней либой std::string в качестве исключения? Или исключения с переопределённым fillInStackTrace() в Java?

korvin_ ★★★★★
()
Последнее исправление: korvin_ (всего исправлений: 1)
Ответ на: комментарий от Deleted

А если реально херню запилили и подгорает почти у всех - то разработчики вообще молодцы, да?

templarrr ★★★★★
()
Ответ на: комментарий от feofan

версия - это комит.
git pull
Есть пропозал про симвер.

Офигенно. Пожалуй стоит подождать лет 10, прежде чем тыкать палочкой в го.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.