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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.