LINUX.ORG.RU

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

 ,


1

6

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

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

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

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



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

Вроде исключений?

Вроде дженериков. К примеру. Список можно длинный составить.

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

Слышал. Тесты не нашли баг. Тестеры просмотрели. В любом языке я склонировал либу, пофиксил, залил на продакшен за пол часа. Твои действия с го?

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

можно использовать что-то вроде «$HOME/myproject/modules»? без костылей? или на каждый проект отдельного юзера надо?

Да, можно. Помимо этого, это многие и делают. Этот путь это системная переменная, на которую смотрит компилятор при сборке. И если ты хочешь собрать с сорцов другого пути, ты просто перед билдом указываешь этот путь, и компилятор вытаскивает сорци с него. Было go build, стало GOPATH="$HOME/myproject/modules" go build.

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

Нет. Запрещает потому, что люди ошибаются.

Так можно вообще все запретить.

Приводит к тому, что нельзя написать нормальные библиотеки для работы с коллекциями

Да вообще нормальный код не написать...

Но это не смертельно.

Ну-ну...

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

python

Да, из них тоже приходят многие.

Но вот чтобы люди перешли с C++, Java или C#, к примеру, слышно крайне мало.

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

Да я так смотрю что половина го это грязные и непонятные костыли. В _нормальной_ системе пакетов способ получения пакета полностью отделен от его имени и использования в коде.

Или ты путаешь «нормальный» с «как везде», или ты не работал плотно с pip'ами и gem'ами (называю именно их с личного опыта). Про сипаны и прочее слышал только страшилки, но от коллег.

iu0v1
()

вообще импорт из мастера - это уже пушка и за это надо ссаными тряпками бить до просветления

Но в Go так принято, как я понимаю

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

в гугловском stl для ондроеда

без nothrow или --fno-exceptions это нарушение стандарта.

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

Какие же аналогичные? У тебя ошибка строкой, а либа во всех файлах проекта импортируется с гитхабовской репы разработчика.

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

Да я так смотрю что половина го это грязные и непонятные костыли.

+1

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

Поинт в том, явное лучше неявного.

Ага, и это хорошо. Привет рубистам. У них там одно и тоже можно сделать массой способов. Как правило из-за этого путаница в коде. Конечно они выходят из этого положения, запрещая на уровне «так мы пишем, а так не пишем». Сколько слез у рубистов было по поводу safe navigation operator.

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

ты не работал плотно с pip'ами и gem'ами

это скорее наоборот, ты слишком много с ними работал, что теперь тебе даже go сказкой кажется.

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

Проблема в том, что этой возможностью пользуются все, в том числе и для больших проектов. И тут начинается АДъ.

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

Так то не только языки, это платформы, инфраструктура. С жвм не так просто слезть.

Ну с C++ я бы давно перешел на что-то. Было бы на что. На go надеялся какое-то время, потом забил.

Сейчас Rust смотрю. За исключением синтаксиса и некоторых ограничений языка пока все устраивает. По крайней мере люди пытаются сделать грамотно. Что в Go совсем не видно.

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

так мы пишем, а так не пишем

И не используем чужие библиотеки? Чтоб всё было одинаково нужно запрещать на уровне компилятора.

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

new(nothrow)

это отдельный оператор. я чет думал, что речь об обычном new.

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

Тогда я не понимаю зачем их указывать в таком виде и как это работает.

(hint: я слушал доклад людей из git in sky, у них большая инфраструктура с кодом на го, и они правили апишечку в одном модуле, автору которого это было не очень интересно, и им пришлось заменять везде импорты)

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

Тогда я не понимаю зачем их указывать в таком виде и как это работает.

Если интересно, сам почитаешь.

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

Если используется в нескольких проектах - проще поменять и самим разрабатывать форк, чем в каждом проекте вендорить.

Мы стараемся форки не плодить, а делать PR.

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

можно использовать что-то вроде «$HOME/myproject/modules»? без костылей? или на каждый проект отдельного юзера надо?

Зачем отдельного? Да, можно. Я использую GOPATH=~/gocode

Твои пороекты будут в ~/gocode/src/whatever/whatever/whatever

PS: глянул на свой tree -d ~/gocode/src | wc -l ;) 3990

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

это скорее наоборот, ты слишком много с ними работал, что теперь тебе даже go сказкой кажется

У нас много всякой волшебной автоматизации с претензиями на гарантии. И когда тебе нужно разлить апдейты десятке тысяч разнообразных железок, и что бы все продолжили зарабатывать деньги - go закладывает за пояс всех, и жаб и змей и камни драгоценные. По стоимости интеграции продуктов (это и с инфраструктурой) - цена снизилась на пару порядков. Потому круто тут слушать что go говно, и годен он только для хэлловордов школоты: но на деле разработка, сопровождение, коммандная работа над проектами, явность какая-никакая - это его сильнейшие стороны (а это типа деньги, а деньги решают кто тут проект танцует, дешевый и работающй go или цацкели и C*(где даже за code style срачи не прекратились)).

// выдохнул, и даже сам не понял почему вылил это на тебя, но удалять жалко :) прости

PS: да, использовал слишком много, потому от них печёт сильно, когда слышу что это вау и золотой выход

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

Зачем отдельного?

представь себе ситуацию, что у тебя не 1, а 2 проекта на go.

представил?

теперь представь, что ты хочешь работать над обоими проектами на одном компе, под одной учетной записью (в одном $HOME).

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

то что ты описал (GOPATH) практически такое же дерьмище как virtualenv в пистоне.

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

да, использовал слишком много, потому от них печёт сильно, когда слышу что это вау и золотой выход

ну видишь, мне проще.. я вовремя понял, что в пистоне и руби счастья нет, и не стал в них «вкладываться».

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

Потому что их держит существующая кодовая база, которой у Go не было.

Нет.

«Given that Google's existing code is not exception-tolerant, the costs of using exceptions are somewhat greater than the costs in a new project. The conversion process would be slow and error-prone.

[...]

Our advice against using exceptions is not predicated on philosophical or moral grounds, but practical ones. Because we'd like to use our open-source projects at Google and it's difficult to do so if those projects use exceptions, we need to advise against exceptions in Google open-source projects as well. Things would probably be different if we had to do it all over again from scratch.»

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

Как уже говорили, всё своё можно носить с стобой. Наример: Go 1.5 Vendor Experiment.

Ну и никто не мешает имеить 2, 3... много $GOPATH. (В принципе тот же pyenv.)

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

Приведенный тобой в пример npm с тоннами копий одной и той же библиотеки не намного лучше.

я не приводил никаких примеров с npm и тоннами копий. ты снова что-то перепутал.

waker
()

Внесу свои пять копеек. Импорты конечно то ещё говно, но жить можно. А вот идею с GOPATH так и не удалось принять. Пришлось подключить gb и юзать либы, как я привык, например в PHP с его composer. Тут еще ссылку давали на vendor experiment, надеюсь таки запилят подобное поведение по умолчанию.

А что касается, pip и virtualenv в python, то уже долгое время пользуюсь buildout и другим советую, там конечно тоже есть свои минусы, но всё же лучше, чем возиться с виртуальными окружениями.

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

Свидетелей статической проверки типов.

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