GO (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего.Для вката в Go читай:- Донован, Керниган "Язык программирования Go" - https://www.golang-book.com/ - книги из списка https://github.com/dariubs/GoBooks - а также смотрим видео https://www.youtube.com/channel/UC_BzFbxG2za3bp5NRRRXJSwПэкеджи можно искать тут https://github.com/avelino/awesome-goЖивем в ожидании Go2, пробрасываем ошибки, смеемся над джавистами, которые не могут жить без ексепшенов, дженериков и размазанной бизнес-логики, ждем, когда нам подвезут аналоги эксепшенов и дженериковПрошлый >>1603114 (OP)
Поясните за реализацию паттерна шаблонный метод:https://golangbyexample.com/template-method-design-pattern-golang/Здесь промежуточные шаги в разных реализациях сделаны намеренно разными, чтобы не возникало лишних вопросов, но что если какая-то часть алгоритма для всех реализаций общая? В традиционном ооп-языке это было бы заключено в метод абстрактного класса, от которого бы наследовались конкретные реализации. В го, я так понимаю, надо просто объявить непривязанную функцию в пределах пекеджа, но так как реализации должны выполнять контракт интерфейса, такой метод должен быть и у них, и заключаться он будет в единственном вызове той функции. Коряво как-то.
>>1635903Нормальные книги по го написали только Брайан Керниган и Билл Кеннеди, остальные - какие-то дикие индусы от издательства Packt.
>>1636202Нет. С новой версией проекты в $GOPATH/src считаются устаревшими. https://blog.golang.org/go1.14Используй модули https://blog.golang.org/using-go-modules
>>1636207В основном это крупные конторы. Rambler, например, активно использует Go, проводят по нему митапы. Но есть еще куча криптовалютных стартапов, которые думают что у них хайлоад и по этому избегает динамикодрысни
>>1636226> Rambler, например, активно использует GoЯ думал там деды совковые сидят, судя по недавней ситуацией с нгинксом.
>>1636236Я думаю там дохера людей, которые получают на много выше рынка, и плюс к этому они еще за счет того что работают в крупной конторе имеют СТАБИЛЬНОСТЬ, которая мне, например, мелкогалерному ( <30 душ) рабу и не снилась. Так что не думаю что из-за этой истории от туда массово поперли работники
>>1636183>А на Го вообще есть вакансии в РФ? Есть, но не для начинающих программистскую карьеру с Go. И только в паре городов на всю страну. Без опыта кодинга на каком-нибудь легаси-шлаке не возьмут.
>>1636586Учат пщ в основном те, кому он реально нравится. Это не промышленные языки типа Java, JS или php, которые учат ради вакансий.
>>1636668я не он но мне кажется легаси за 10 лет накапливается меньше, чем за большее количество лет (за 15 или 20, например). ну это без учета географии. насколько там распространен был го в россии десять лет назад? у нас еще не весь сишарт на него переписали.
>>1636708>насколько там распространен был го в россии десять лет назад? Кстати, периодически слышу о компаниях, которые начали использовать пщ в проде до релиза 1.0. Как можно быть такими мудаками? Им на столько насрать на свои проекты? Там же API и стандартная либа пиздецки поменялась, при том почти все - ломающие изменения. Тогда еще паник не было, были тупо креши, нахуй так жить? Я в своей сраной конторе не могу убедить людей писать на пщ всякие микросервисы для потоковой обработки всякого (стримы в js-е имеют сверх уебищный API), а тут люди как-то начали на нем писать как на основном языке
>>1636776Это просто зависть слегка, что я не нашел на Go зп как у себя на ноде. Вот и проиходиться жрать что дают
>>1636711нет, с петоном и плюсами знаком, ну там sql еще. типичный набор выпускника инженерной специальности и несколько проектов без звездочек уровня "консольная программа" (ну как в вакансиях пишут) на гитхабе. я вообще хоть какую-нибудь вакансию по плюсам искал.
>>1636776Это просто зависть слегка, что я не нашел на Go зп как у себя на ноде. Вот и проиходиться жрать что дают
>>1636567дс вкатился с нуля, первый язык(работа), и я даун, то потому что был готов грести - прижился
>>1637003причем вкатился в 26, до этого ни разу не работал, прошел курсы на курсере от майлсру и все)
>>1637073да только первый курс, второй курс даже не успел начать, нашлась работа>>1637113ты сам кем рботаешь? сколько тебе лет? меня заставляли даже собеседовать людей нахуя непонятно, порофлить на до мной или посмотреть на что я способен, как по мне то и так видно что я даун социофобный, и приходили люди которые даже не знали что будет если в json.Marshal передать структуру где поле с маленькой буквы названо, при этом утверждали что на предыдущей работе получали 70к
>>1637145>какое тебе первое задание дали?брать жсоны по ссылке, запихивать их в БД, сделать фронт с отображением данных табличек БД, поиском и сохранением. ну и запихнуть все это в кубер >штат большой гошниковну, больше 50 точно
>>1637152> ну, больше 50 точнобля, случаем не вайлбериз?) когда челиков собеседовал, половина резюме от туда была, говорят там ад хотя и я по 10 часов сижу, да еще и по субботам иногда
Кто-нибудь писал на го логику для фронтенда (gopherjs или там комипиляция в webassembly)? Как оно на вкус?
>>1637157бинго. про ад не могу ни опровергнуть, ни подтвердить. я жду когда мне нормальную работу будут давать. в команде про особые напряги не слышал.
>>1637167У вас сайт как говно сделан. Зашел по коду по смс и нет в профиле настройки "создать пароль". Мне каждый раз по смс заходить?
>>1637236на моей галере 100 / 150-200но их мало, потому что в основном приходят джуны, год сидят и уходят, хотя к тому времени зп у них 60-70
>>1637164Присоединяюсь к вопросу только интересует не столько логика - с ней все понятно, сколько взаимодействие с DOM-ом
>>1637260На изичах можно устроить в jetbrains если соответствуешь требованиям. Ой, как и в любую другую компанию в мире.
>>1637568Да на нём ничего нет, даже MVC-фреймворка нормального, которые, конечно же, нинужны.https://github.com/avelino/awesome-go#gui
>>1637568Третьего дня, по совету проверенного индуса попробовал https://github.com/veandco/go-sdl2. Ощущения — АТАС.
>>1637727Ну в чем прикол толстых бинарников, если все равно придется тащить следом тысячу зависимостей.
>>1637774> Ну в чем прикол толстых бинарниковДействительно, в чём? В пщ ведь есть единственное правильное мнение на этот счёт, выбора-то и нет. Так что это никакой не "прикол", а тупо поставили перед фактом.
>>1638115>From Java to Go 2017-01-15 Придурки, новый свитч в 14 джаве не дождались.И свитч условие без скобок написали, уже совсем мозги гошкой отбили.
Кстати, как в Go в свитче сделать несколько кейсов с одинаковым телом? https://play.golang.org/p/T6cF-2gSOvn - не работает
>>1637157>я по 10 часов сижу, да еще и по субботам иногда8 часов работаешь как обычный человек, потом останешься на пару часов, чтобы писать if err!= nil, а по субботам пишешь с нуля ассерты к тестам?
>>1638890> ассерты к тестам> к тестам> тестна моей галере нет времени писать тесты тесты пишет тот кто мало работает - слова тимлида
>>1639075Процедура - это когда языкоделы въебали упорина и решили для функций без возвращаемого значения ввести отдельный термин.
>>1639047>>1639051Нет, это koins такие https://play.kotlinlang.org/koans/Introduction/Hello,%20world!/Task.kt
>>1639162Вообще, я натыкался на мнение, что с семантической точки зрения функции предназначены для того, чтобы что-нибудь посчитать/сконвертировать/etc, основываясь на параметрах, и вернуть результат, а процедуры выполняют какие-то действия, изменяющие состояние (глобальное или у параметров). Под это определение могут попадать и борщехлёбские IO (), и сишные void.
>>1638153>2020-03-02>Our team already had plenty of prior experience with comparable projects in a similar environment using JVM languages like Java or Kotlin. This time, however, we chose Go. and here is why.читать далее https://tech.trivago.com/2020/03/02/why-we-chose-go/
>>1638115блин, тока щас узнал, что TJ Holowaychuk теперь гофер https://medium.com/code-adventures/farewell-node-js-4ba9e7f3e52b
Суп гоч. Учу го попутно пишу бота для телеги. Сейчас пытаюсь управиться с GORM. Вот хочу узнать когда мне нужно модели с базой синхронизировать? До этого писал на пистоне (Django ORM), там с этим строго и понятно. Тут пока не могу в workflow вьехать. Можешь пояснить по хардкору?
>>1640034Не выёбывайся, плез. Я пишу бота не для того, чтобы написать бота, а чтобы познакомиться с конкретными технологиями.
>>1640061ну да, берешь какой-нибудь sqlx или squerrel и вперед, так у нас делаем и в майлру также челики делают.
Алсо, у меня подбамбливает с тулзов пиздец. В каком редакторе вообще на пщ пишут? Почему gopls не видит структуры из пэкэджей в соседней папке, так блядь ещё и ругается, что нужно либо напрямую с гитхаба импортить пэкедж либо добавлять в GOPATH.>>1640064А если мне внезапно понадобится переехать с одной БД на другую?Я, конечно уже успел прочитать мнение что в GO предпочитают писать чистый SQL, но наравне и мнение что желательно всегда использовать ORM для чистоты кода и переносимости к смене БД.
>>1640068> А если мне внезапно понадобится переехать с одной БД на другую?через интерйфейс-репозиторий методы пишешь, будет новая бд - реализуешьте же методы под новую бд> Почему gopls не видит структуры из пэкэджей в соседней папке тоже эта параша бесила, сидел на vs code год и потом плюнул и сижу на goland'e, сбрасывая себе триал переодически
>>1640068>А если мне внезапно понадобится переехать с одной БД на другую?То ты сядешь и пререпишешь разово весь sql код путем автозамены или статической трансляции с одного диалекта на другой. Немогёшь?
>>1640068сижу на вскоде. захожу в проект, делаю го гет пакет. и пакет становится виден. ну разве что иногда перезагрузить ленгичсервер нужно.
>>1640068> А если мне внезапно понадобится переехать с одной БД на другую?На практике такое бывает крайне редко такого не бывает никогда.И следует помнить, что раз ОРМ призваны поддерживать любые СУБД сразу, то в результате получается пересечение их возможностей, то есть где-то на уровне ниже SQLite.
>>1640072> тоже эта параша бесила, сидел на vs code год и потом плюнул и сижу на goland'e, сбрасывая себе триал переодическиДа, это пиздос. Я от несовершенства этого мира страдаю пиздец. Хотел одновременно изучить emacs (нравится, что можно делать абсолютно всё без мыши) прпуиер с ищучением го, но вот уже как месяц (а то и больше) пытаюсь изучить го, так я 95% времени пердолился с его тулзами, и жалкими потугами запустить эти тулзы в emacs'e. Бляяяя так бесполезно время я ещё не проебывал. Даже если бы в игори играл там я хотя бы удовольствие получал бы.Думал VSCode будет лучше (а по скорости настройки нового языка он действительно лучше), но все тулзы языка используются прежние. Собственно сменилась только обертка, а кривой инструментарий остался. Блядь я всей душой хочу слезть с JetBrains (швабода, членукс, вот это всё), но мне стоит только один раз запустить IDE, как сразу приходит гнетущее меня осознание, что все эти "бесплатные", "свободные" редакторы кода это ебучий notepad по сравнению с полноценными IDE, и что для развития проекта одной "свободой", "открытостью" и "сообществом" сыт нихуя не будешь, и проприетарщина этому миру просто необходима.Пиздец, похоже нужно забивать на все эти члениксы и дроч на СПО, возвращаться на винду, и учить какой-нибудь сисярп или жабу.>>1640076Я вообще с SQL на "Вы". Да, я понимаю, что его надо бы учить в первую очередь, но сейчас я хочу Go и бота по-быстрому>>1640078Вот у меня пакет users. Как мне сделать так, чтобы gopls увидел что в нём есть или хотя бы просто перестал срать, что я не нахожусь в GOPATH?>>1640097Я с тобой согласен. Но в вакансиях вроде видел, что иногда требуется опыт работы с gorm. К тому же вот такой интересный документ нашел https://github.com/Alikhll/golang-developer-roadmapGORM там тоже не на последнем месте. В общем лишним не будет.
>>1640101Лишним не будет, да.ORM обычно берут не чтобы поддерживать все СУБД разом, а чтобы легко отображать объектную модель в реляционную и не писать все запросы руками. Более того, в больших проектах часть запросов может делаться через ORM, а часть может быть нативными.
>>1640106Согласен. Как по мне еще профит в читаемости кода, чтобы не засорять исходники программ raw sql. А расширяют чистым SQL в том случае, когда гибкости ОРМ не хватает для хорошего решения конкретных задач. Собственно, нужно знание и чистого SQL и ORM языка на котором работаешь, в идеале.
>>1640101>Вот у меня пакет users. Как мне сделать так, чтобы gopls увидел что в нём есть или хотя бы просто перестал срать, что я не нахожусь в GOPATH?а ты go mod init вообще сделал??????
>>1640114Вот этой хуйни я не понимаю. Мне типа надо для моего проекта govno-test-project сразу заводить реп на гитхабе и ассоциировать с ним пакет? Код работает и без этого. В goland линтер не показывает никаких ошибок, а вот gopls, как сказано в одном issue, "пока не поддерживает такой функциональности" (я так понимаю это называется "модулями")
>>1640125если ты не пользуешься гопатхом, ты делаешь модуль. ты первый день на го что ли? назвать свою залупу можешь как угодно, никто тебя не заставляет репу создавать.
>>1640125Не гитхаб, а гит. Можно завести локальную репу с произвольным адресом и никуда не пушить.Ну и политика у гугла - заставить всег гошников юзать гит и семвер, я в ахуе просто.
>>1640134Я вообще с этого хуею. Думаю, скоро привыкну к специфике. >>1640130В основном туториале про пэкеджи нихуя не сказано. На данный момент я прошел только его, и как написал выше 95% времени пердолился с тулингом и с дохлыми language server's чтобы все это говно работало в emacs. Оказалось, достаточно было поставить goland, и никаких go ьщв init он мне писать почему-то не говорит.
Серьезно, как большие дяди работают с sql в go?В питоне, например, если проект на джанго, то там своя орм, иначе sqlalchemy. Для энтузиастов есть всякие peewee и ponyorm. Итого учишь 2-3 фреймворка. В го же куча каких-то репозиториев на гитхабе, хуй проссыш.
>>1640612авторитетно заявляю что все действия с бд должны происходить через хранимки, а все запросы из языка должны быть простыми силектами и инсертами и никак иначе.
>>1640655>авторитетно заявляю что все действия с бд должны происходить через хранимки, а все запросы из языка должны быть простыми силектами и инсертами и никак иначе. Ну так го бацк ту ДВУХЗВЕНОЧКА ДЕВЯНОСТЫЕ ЕЛЬЦИН ДЕФЛТ тогда:https://github.com/PostgREST/postgrestИ бекэндеры нинужны - достатчно одного дида-DBA от короны соответствующими мероприятиями спасать.
>>1640675>https://github.com/PostgREST/postgrestНемного проиграл. А нельзя rest поднять на sqlite, тогда вообще будет удобно, бросил один файл в дропбокс, вот тебе и микросервис.
Сап, двачек. Мимо фуллкек с 1.5 годами опыта на самом слабо типизированном языке в мире. Чё там у вас за пизда? Вкатываться? Камни какие?
Дан массив ['мама', 'мыла', 'раму', '']. Преобразуйте массив в строку 'мама+мыла+раму'.Как написать такое на го?https://pl.kotl.in/JAUGtlBt1
>>1640775>Чё там у вас за пизда?Пизда и пизда.>Вкатываться? Как хочешь, зависит от задачи. Для большенста хуяк-хуяк-и-в-продакшен проектов тебе будет достаточно обмазаться TypeScript'омЛично я понял, что мне не хватает ноды, когда появилась куча задач с потоковой обработкой. Вроде как уже давно везде async-await, благодать, но как только речь заходит за работу со стримами - снова хотнический пиздец из переплетенных, словно щупальцы, калбеков>Камни какие?отсутсвие дженериков и if err != nil { return nil, err }
>>1640832> Для большенста хуяк-хуяк-и-в-продакшен проектов тебе будет достаточно обмазаться TypeScriptТак я обмазываюсь. На галере просто больше популярен ванильный жосэ. Такая хуйня. > но как только речь заходит за работу со стримами.then параша? > отсутсвие дженериковА шо, так нужны?> if err != nil { return nil, err } А это хуже чемtry { whore.vagina } catch(hiv) { die }?
>>1640820Опять выходишь на связь?https://play.golang.org/p/3TPtLO4ayS1Кстати, до 1.х в Go были .filter и .map, но их выпили, т.к. не нужно, к тому же без дженериков - теряеться безопастность типов.Ну и самое главное - вызов функции - слишком дорогая операция, чтобы при обработке больших массивов делать это на каждый элемент (по этому компиляторы стараються заинлайнить все вызовы, которые возможно)
>>1640863>>компиляторы стараються заинлайнить все вызовыВ котлине это инлайн функция (пикча)>Опять выходишь на связь?Мне кажется вариант с циклом был бы даже читабельнее. хотя вам может так привычнее, я не сразу прочитал этот код
>>1640101>но вот уже как месяц (а то и больше) пытаюсь изучить го, так я 95% времени пердолился с его тулзамиу go с русскоязычной литературой для начинающих туго, то ли дело у раста https://doc.rust-lang.ru/book/title-page.html где всё легко и просто
>>1640846>.then параша? Нет, там .on('eventName', cb) параша>А шо, так нужны?Нужны, никто же не спорит. Не просто же так https://github.com/cheekybits/genny запили и используют. Сейчас в core-тиме идет активная разработка. Видел статью, но не могу найти, где описывалось как скачать бета-версию компилятора с поддержкой контрактов, но API может еще быть изменен, да и IDE или go-pls скорее всего еще не будут поддерживать новый синтаксис >А это хуже чем>try { whore.vagina } catch(hiv) { die }?Зависит от ситуации: с одной стороны в js-е (с async-await) ты можешь взять в try-catch вызов на самом верхнем уровне (например, в случае веб-сервера - http handler), и больше нигде внутри не обрабатывать ошибку, и писать только логику в случае успеха, а потом все обработать.С другой стороны - если тебе нужно отлавливать в коде определенные ошибки - тогда как раз и начинаеться >try { } catch(e) { if (e instanceof MyErr) { handle(e) } else {throw e}}, которые выглядят просто ужасно, если их становиться больше 1-йА вот в го у тебя просто все, что может вызвать ошибку - оно ее возвращает как обычное значение, и тебе нужно ее либо проигнорировать, либо обработать, либо вернуть вызывающему. В результате код на половину состоит из проверки ошибки на nil и возврат, если не равно.
Почему у меня пщ так сильно ассоциируется с JS? И почему все переходят на него не с JS, а именно с питона???
>>1641088>почему все переходят на него не с JS, а именно с питонаПотому что писали на питоне бекенд и в итоге охуели, потому на питоне легко писать, но никто не пишет так, чтобы потом легко читалось. Встречаешь в чужом коде def foo(param) и кто его знает, что за тип у этого параметра, потому что всем западло использовать typing, вот и сидишь читаешь простыни кода, чтобы увидеть, что в это foo передается, и не факт, что сразу правильно увидишь из-за утиной типизации. В го тебе иде мимоходом все это подскажет за секунду.А бэкендеры на жс - хтонические безбожные существа, им для запуска хеллоуворлда нужно 200 метров библиотек, они уже не могут жить вне этой скверны и над перекатом на языки для людей не задумываются.
>>1641095Питонщикам лень юзать typing, но не лень учить новый язык? Странно получается.JS - это полный пиздец, конечно. Я тут недавно искал плагин для одной либы, и вместо простого скрипта мне предложили поднять бабель, вебпак, коммонжс, ноду и хуй пойми что ещё. Забил, выдернул фрагмент из исходника плагина и подстроил под либу, сразу заработало, и вся эта хуйня на десяток зависимостей нахуй не нужна оказалась.
>>1640890>А вот в го у тебя просто все, что может вызвать ошибку - оно ее возвращает как обычное значение, и тебе нужно ее либо проигнорировать, либо обработать, либо вернуть вызывающему. В результате код на половину состоит из проверки ошибки на nil и возврат, если не равно. Щас будет анпопулар апинион, но код с проверкой на эрроркод пижже чем трайкеч
>>1641341Справедливо заметить, что у них разные назначения. Невалидные данные от юзера, с последующим ответом 422 статусом - вполне ожидаемая ситуация и её есть смысл хендлить как ошибку. Невозможность сохранить что-то в базу, потому что она внезапно отъехала - не ожидаемая ситуация и тут нужен експешн, который на нужном уровне будет пойман и обработан как ответ с 500 или 503 статусом.
>>1641429Тут еще проблема в том, что на уровне, где случилась ошибка - совершенно не понятно, на сколько она критична для вызывающего. Даже взять твой пример,>Невозможность сохранить что-то в базу, потому что она внезапно отъехала - не ожидаемая ситуация и тут нужен експешнМожет быть как критичным, так и нет, если у нас есть врапер над драйвером базы данных, в котором мы хитрожопым образом в случае падения базы перенаправляем запрос на реплику/новый мастер
>>1641341Так же ексепшены часто использовались как ROP для бедных. Такое себе отделение happy path от обработки всякого говна. И часто это был misuse, учитывая, что исключения нужны, внезапно, для обработки исключительных ситуаций, а не всего подряд. Не так давно индусня сделала фундаментальное открытие, что для ROP исключения вообще-то не обязательны. Например, уже более 20 лет известен отличный обобщённый вариант через Either + Kleisli composition в стиле type `TwoTrack a b = Either [a] (b,[a])`. В принципе, в любом мало-мальски прогрессивном языке есть его специализированные вариации. К сожалению, в убогих парашах, где ничего нет, приходится пилить свои низкоуровные реализации, пердолить тормозные развесистые try catch блоки, или вообще как диды в 80х руками обрабатывать все ошибки по месту.
>>1641450>если у нас есть врапер над драйвером базы данных, в котором мы хитрожопым образом в случае падения базы перенаправляем запрос на реплику/новый мастерКоторые тоже могут закончиться. Олсо, >хитрожопым образомВ обработчике исключения, очевидно!
>>1641429в чём суть? делать два синтаксически разных типа ошибок, чтобы обозначить какая ситуация ожидаемая, а какая - нет? для этого нужен точный критерий, какие ситуация ожидаемы, а какие - нет. а то получится так, что будут ожидаемые ситуации с ексепшнами. зачем? что если отъезд базы это ожидаемая ситуация?> не ожидаемая ситуация и тут нужен експешнмне кажется тут пропущено много предложений, в которых выводится и обосновывается связь между необходимостью эсепшена и категорией ситуации
>>1641477Всё очень просто - исключения нужны там, где происходит то, что не должно происходить при нормальной работе приложения.
>>1641479Так же есть такой вариант: нужны там, где дальше продолжать работу (по какой-то цепочке) невозможно.
>>1641479В том-то и дело, что когда ты пишешь либу ты понятия не имеешь, что для вызывющего кода будет нормальной ситуацией, а что - нет. Например - OOM: для кода в юзерспейсе это редким исключением - неожиданная ситуация и кроме как упасть - нельзя ничего сделать.С другой стороны во всяких драйверах такая ситуация вполне себе обычная и ожидаемая, и с ней нужно как-то работать.
>>1641482т.е. плохой юзер инпут, из-за которого мы прерываем цепочку обработки юзер инпута.>>1641479т.е. сегфолты. если у нас несколько баз и одна отвалилась. где-то должна быть настройка не кидать эксепшены из-за баз?
>>1641488Если ты ещё можешь как-то рыпаться, например, как в примере про переключение соединения базы, то это не исключение, потому что ты продолжаешь работу. Если переключаться тебе некуда - продолжать работу бессмысленно и это исключение. Насчёт инпата, те кто делают на эксепшенах ROP, сказали бы что да. Является ли это исключительной ситуацией? Зависит от домена. Если твой клиент - это уникальный источник данных, который внезапно поменял формат, что тут можно сдеать? Можно только кинуть исключение. Если это корявый юзер инпат, который предположительно может быть корявым, это ещё не конец - тебе надо сформаровать правильное сообщение об ошибке, отдать его в нужном формате и ответить. Т.е. по существу цепочка обработки никак не отличается от обработки валидных данных. В таком случае, ошибка - это данные и это не исключение.
>>1641487Зависит от либы.При попытке сохранения записи с неправильными типами данных в таблицу я бы предпочёл получать эксепшен, потому что нет смысла это хендлить, да и хендлить нечего. Но в большинстве случаев ексепшены в библиотечных функциях - зло (но иногда никак).
>>1641539>При попытке сохранения записи с неправильными типами данных в таблицу я бы предпочёл получать эксепшенА я предпочел бы получить ошибку компиляции
Вся разница в том, что другие языки не ограничивают программиста и не заставляют его юзать эксепшены с дженериками, а в пщ мнения рабов не спрашивали.
>>1641957>в пщ мнения рабов не спрашивали.Ты так говоришь, словно кого-то заставляют использовать Go, и люди от этого страдают
Да, в го есть недостатки, но для меня преимущества го их перевешивают, особенно в сравнении с остальными языками, которые я знаю (python, js, c++)
>>1642067Как ты догадался? А над ней милионный репост "акчуали дажа струспуп не знает ц++", узнаешь?))
Расскажи, как работает defer?>Go's defer statement schedules a function call (the deferred function) to be run immediately before the function executing the defer returnsЕсли выполняется перед return, то почему здесьhttps://play.golang.org/p/klPxLsZ7KqFон подменяет возвращаемое значение?Или вот на пике код из стандартной библиотеки. Если файл закроется перед ретурном, должна же быть ошибка? Так в какой момент выполняется отложенный вызов?
Аноны есть какая нибудь простенькая книженция или дока, по базовым вещам типа http, порты, tcp и всему вот этому ?
>>1642746>>1642836>>1642866>Есть, называется Википедия.Плохо, садись в угол.>"Компьютерные сети - нисходящий подход"Отлично.>http://encyclopedia.kids.net.au/page/tc/TCP-IPХорошо.
>>1643014У него же огромный монолит на 500к строк, который долго пересобирать после добавления каждого принта.
>>1643039Сегодня вам дебагер, а завтра исключения и джинерики попросите? Нет уж.И вообще го очень быстро компилиться, отлаживай принтами
>>1643042>отлаживай принтами Как что-то плохое.Всегда пишу свою отладочную обертку со стектрейсами и логами не на ГОвне, конечно же
>>1643114Есть много способов получить его на халяву, либо просто пройди по ссылке в проект дебагера, который опенсорсный
>>1643208Не слушай даунов. 500loc это достаточно крупеный монолит. Если у вас проект значительно больше, ну там 2-3 млн loc, и это монолит - то вы пишете говнокод
Бтв, монолиты еще не сдохли в современном мире и в современных проектах? Все же давно уже перешли на микросервисы, которые легко поддерживать, скейлить и заменять в случае чего?
>>1643281Не сдохли и не сдохнут никогда.Микросервисы не решают всех проблем и в ряде случаев они не применимы вообще.
>>1643246>А как устанавливал его? https://github.com/go-delve/delve/blob/master/Documentation/installation/osx/install.md>какая версия гоgo version go1.12.1 darwin/amd64, из docker desktop>длвТо что в мастере>макоси10.14.1 (18B75)
>>1643294Дефолтный бекенд>А, у меня 10.15, может в этом проблемаВполне возможно, в go.mod go 1.11 прописан
>>1643314Не, я имел в виду версия макоси 10.15У дефолтного бэкенда проблема в том, что он на всех обращениях к nil pointer падает, даже если они потом где-то обработаны, пишут что это какой-то баг в lldb которому лет 5 уже
>>1643281Ты отстаёшь от хайпа. Все уже пожрали микросервисов и поняли, что это просто другой компромисс
>>1643514Пентестер я. Смотрю что программисты нахерачили и где они понаделали ошибок, если таковые естьПопутно пишу всякую всячину на го для себя
Здравствуйте. Я дико извиняюсь за флейм. Ответ на свой вопрос искал в гугле-но там все както слишком лаконично.А какие перспективы и востребованность Go в Европе? Через 3 месяца еду туда работать, не прогером, и хочется через n месяцев/лет сменить деятельность.Один коллега писал на Go, после чего лампово свалил в другую компанию за 250к, он и очень лестно отзывался о Go.В РФ я понимаю "ГО в дополнение, чистый не нужен нахой иди впизду" и 1.5 вакансии
>>1643517А какая разница, оно же использует тот же delve, который у меня не работает ни в vscode, ни из терминала
>>1643608Молодой язык, со временем будет больше легаси, больше вакансий.Если гугл его не убьет, просто потому что может.
>>1643730Я утрирую фразы с прошлых тредов и вообще, что пишут пор Пщ в prНу знаю, что можно делить на 2 пиздеж
>>1643608>1.5 вакансиив ДС-ДС2 вакансии есть, это видно по хх, но всем нужны мидлы, ждуны нахуй никому не нужны, впрочем такая ситуация во всех языках, кроме пхп лол.
>>1643715>>1643728Эти детские маневры, 10 лет для айти индустрии это очень много, просто го не выстрелил и поэтому кажется что он молод и набирает какие-то обороты.
А как вы локально разрабатываете микросервисы?Вот есть россыпь микросервисы. Когда они запускаются в композе или кубере, связи разруливает трафик, все отлично и удобно.Но вот разрабатывать таким Макаром не круто.Что-то изменил - пересобери образ - перещапусти контейнер. Дебажить и так можно (закинуть в докер дела), но не сильно удобно.А можно как-то вытащить доменные имена трафика наружу, на хостовую систему? Что бы запустил все, оно работает, и по запуску приложения на хосте оно могло ходить куда угодно?
>>1644448Человечек, ты путаешь корпоративный сектор и айти в целом. Стартап можно писать на чем угодно, он или умрет, или его зальют деньгами и его можно будет переписать. Корпорации не будут использовать то, что через 10 лет возможно умрет. Го за 10 лет не умер, сейчас он наконец вскарабкался в топ-10 tiobe, у разработчиков есть роадмап и поддержка гугла. Его будут использовать, хотя джаву он конечно не вытеснит.
>>1644475Дарт и перл там тоже жив.Поддержка гугла на фоне закрывающихся проектов тоже ничего не стоит>tiobeЛол, деревенщина.>есть роадмап О, ну все, теперь точно выстрелит.>хотя джаву он конечно не вытеснит.То есть, он останется на обочине ненужных языков?
>>1644475>Корпорации не будут использовать то, что через 10 лет возможно умретДа сплошь и рядом. (1) одни копрорации покупают других копрораций; сливают АйТи отделы, конвертируют говно в мочу (или обратно)(2) переходят к другому вендору (пушто дешевле на пять копеек; и/или новый вендор подсуетился и занёс кому надо) ; опять конверсия г в м (или обратно)
>>1644475tiobe вообще классный показатель. По нему получается, что корпорациям правильнее писать на бейсике, чем пщ, раз он выше.Где треб про бейсик? Даже про 1С тред есть, а про бейсик нету. Но в тиобе он есть и даже выше c#, js и php.
Что ж вы сретесь о языках, до чего тупо.Нормальные программисты знают и используют разные языки.Сейчас Гошка - лучшее, что есть на рынке под высоконагруженные вебсервисы.Скоро люди распробуют Раст и перекачуют туда.Джавы/шарпы - тырпрайзное говно.Плюсы - ад.Скриптовые языки давно не тянут.Есть только го и Раст.
>>1644902Для нормальных программистов это может и работает Но сейчас же конкуренция и количество джунов для каждых яп на порядок вышеГо не так популярен - отсюда можно решить, что шанс устроиться джуном выше
>>1644970А что ты можешь предложить как альтернативу? Жабу с ее жирнющим рантаймом и стартом в несколько секунд (привет aws lambda)?
Тем временем московский офис Gett работает из дома, 4-дневная рабочая неделя с сохранением 85% заработной платы. У компании ПРОСАДКА ПО КОЛИЧЕСТВУ ТРАНЗАКЦИЙмимо ваш инсайдер
>>1644973> стартом в несколько секундМинут, ты хотел сказать? И есть мнение, что похуй, сколько она стартует, всё равно на проде её запустят только один раз, и будет она там работать дохуялион лет до следующего обновления сервера.мимо
>>1645012>Минут, ты хотел сказать? На сколько я знаю - там не на столько все плохо. Я хотел сказать - десятки секунд.>И есть мнение, что похуй, сколько она стартует, всё равно на проде её запустят только один раз, и будет она там работать дохуялион лет до следующего обновления сервера.Лет 10 назад - я бы согласился. Но сегодня, в эпоху кубера и всяких облачных сервисов с еще большим уровнем абстракции - везде происходит постоянный up- и downscaling, и время запуска - это вполне себе релевантный показатель на сегодня.
>>1645561У нас на работе один жирный монолит, и да, он запускается минуты. С микросервисами были бы десятки секунд на каждый, тоже небыстро.
>>1645567А что там так долго запускаеться? Вы профилировали это? Для меня это просто очень дико звучит, у нас проект на ноде (правда он не особо крупный, но тоже монолит) стартует 1.5 секунды, при этом почти все это время сжирает соединения с облачными базами, ну и совсем немного времени на занятие порта
>>1645579В жабе это повседневность, профилировать нечего. Даже хеллоуворлд на спринг буте стартует секунд 5-10. А у нас тут дохуя компонентов, каждый инициализируется, настраивается. Всего понемножку, в сумме дохуя.
Гоферы, поделитесь интересными бложиками о го, которые вы читаете. Предлагаю составить топ блогов и прикрепить к шапке в дальнейшем . Начну с себя, очевидный https://www.ardanlabs.com/blog/ - много интересный статей от небезызвестного Вилльяма Кеннеди. Сейчас еще читаю https://www.pixelstech.net/article.php?sortby=time&type=0&tag=4626&page=1
Что гуглить чтобы написать скрипт для автматической проверки и скачки сториз из инстаграмма на мой ноут? пока я в отлучке, он должен чекать их каждые скажем 15 минут и скачитваь новые
>>1646955И не будет. Нахуя им с кем-то ею делится?Вэлком в еблю с симуляцией под бровсер и парсинг хтмл-говен.
>>1647090Хотя нет, пизжу, есть у них апишка. Причём простая рест апишка депрекейтед и закроется к июлю, а эти хипсторы уже графкуэля навернули.
>>1646769>Что гуглить чтобы написать скрипт для автматической проверки и скачки сториз из инстаграмма на мой ноут?'python instagram api'
>>1647237Практически никогда так не бывает ни в каком языке. Скорее нужно будет пару часов продираться сквозь срачи на стэковерфлоу.
>>1635774 (OP)> не могут жить без ексепшеновПиздец. Язык в котором нет экспешенов. Такой существует? Даже в жс, даже в Прологе есть экспепшены. Как можно жить без выкидывающихся ошибок? If'ы на каждый вызов функций вешать, проверяя ERROR_CODE?А варнингов там тоже нет? Ну хотя бы лямбды есть? Если есть типы, но нет дженериков, то как вы вообще делаете полиморфные функции?
>>1647667эксепшены блевота, у тебя неприязнь от сдвига парадигмы. КАК ЖА ЕКСЕПШОНЫ ВСЕГДА ЖИЛИ С НИМИ ВОН ВЕЗДЕ ЕСЬ. пройдет.>А варнингов там тоже нет? Ну хотя бы лямбды есть? Если есть типы, но нет дженериков, то как вы вообще делаете полиморфные функции? хотя бы тур пройди. нахуя что-то рассказывать человеку, которому даже это лень сделать?
>>1647741> эксепшены блевотаЧем?Я серьезно не понимаю, как ERROR_CODE времен 20 века может быть удобней эксепшенов.
>>1647667> Язык в котором нет экспешенов. Такой существует?Сишка. Но в ней есть longjmp для упоротых.В расте, вроде, тоже зачем-то пытаются победить эксепшены.
>>1647790незаметность в количестве строк в логах при падении выражается? так можно и без ексепшнов стактрейс в сотню строчек вывести. эксепшоны не заставляют твой код падать заметнее. это всё хуйня. в коде ошибка - сразу жалоба компилятора, вот это я понимаю.
>>1647667>Если есть типы, но нет дженериков, то как вы вообще делаете полиморфные функции? Интерфесы, иногда - пустые, иногда - нет, кодогенерация. Что ты такое лицо скорчил? Сказано же, контракты будут ближе к Go2
>>1647667Я пару раз зашел в этот тред в прошлом году и вот сейчас, и каждый раз встречаю здесь тебя. Ты очень преданный хейтер, нужно отдать тебе должное.
>>1647826А по-моему люди указывают на одни и те же проблемы, которые не фисятся годами. Хотя странно что-то ожидать от just use for loops языка, где даже хуитка типа питонячих генераторов - недоступное удовольствие.
>>1648030>хуитка типа питонячих генераторовЗдесь вообще улыбка истории. У питонист GIL и поэтому они пытаются в асинхронность через генераторы. У гошников ПРОСТОТА и поэтому они делают свои генераторы на горутинах.
>>1648030>одни и те же проблемы, которые не фисятся годамиСемантическое версионирование же, ожидайте го2 1.15 теперь неизвестно когда зарелизят.
>>1648404А как они это рационализировали? У меня, например, довольно много строчек вида _ GovnoInterface = new(MochaStruct), просто для того, чтобы голенд мне сгенирил методы интерфеса, да и для наглядности
Грустно от того что го всё захватит наподобие пхп, несмотря на то что разрабы с айкью чуть больше дверной ручки будут страдать от слабости абстракций. Бизнесу важнее урезать стоимость, в том числе обучения нового мяса.
>>1648428Простота Go - на самом деле просто маркетинговый ход. Да, простой синтаксис, минимальный необходимый набор возможностей языка. Но когда речь заходит о поддержке реального когда - оказываеться, что нужно довольно серьезно понимать как работают OS, память, процессор, межпроцессорное взаимодействие, примитивы синхронизации, вот это все. В большей степени, чем для всяких js, питона и php.
>>1648443Простота всяких js, питона и php - на самом деле просто маркетинговый ход. Да, простой синтаксис, минимальный необходимый набор возможностей языка. Но когда речь заходит о поддержке реального когда - оказываеться, что нужно довольно серьезно понимать как работают OS, память, процессор, межпроцессорное взаимодействие, примитивы синхронизации, вот это все.
>>1648482>Как много мьютексов в твоем типичном jsЭто тот js, в котором 20 лет был callback hell, потом добавили промисы и сразу же получили promise hell, который, в свою очередь, заменили async/await hell'ом. Ну да, куда уж го до всего этого.В питоне же асинхронность сейчас пилят с оглядкой на го, а до этого параллельное выполнение там было не сказать что простым.
>>1648488> заменили async/await hell'ом.Не слышал о таком. В чем там проблема-то может быть? Ну, кроме https://habr.com/ru/post/466337/
>>1648412Я не помню, нуждался ли я хоть раз в дженериках. Ставлю на то, что после их введения 99% гоферов не будет ими пользоваться.
>>1648501Я пару раз нуждался. И оба раза - при реализации хелпер-метода работы со структурами данных, вроде мапы или слайса. Решал каждый раз через https://github.com/cheekybits/genny, в целом - доволен, единственное - он никак не анализирует код, и если попросить его сгенерить некомпелируемый код (например, если передать в качестве типа слайс в метод, который сравнивает дженерик-аргументы) - он просто сгенерит его и все, вместо какого-либо ворнинга или ошибки. С контрактами такой херни не будет, на сколько я могу судить по черновикам.
Т.е. я думаю, что ими будут пользоваться все, но далеко не в основной логике, а во всяких util- методах
>>1648501ну знаешь, мне вот хотелось написать вспомогательную функцию чтобы вставить элемент в слайс или удалить из него.
>>1648517Хотелось, но потом ты просто писал одну-две для конкретных интерфейсов/типов и все было хорошо.
>>1648519Хорошо, если у тебя в laba1.go пара типов (int и string, да?). А вот в большом проекте бывает очень много типов слайсов
>>1648604смотря ему в глаза монотонным голосом цитирую заученное наизусть ""The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software."
>>1648607>learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant languageТо есть Пайк считает, что эти языки под категорию "brilliant language" никак не подпадают.
>>1648759Конечно. Это наименее спорная и заслуживающая внимания часть его высказывания. Вся суть создания Go заключалась в том, что языки вроде плюсов, петона, жавы, хуевые по какой-то причине.
KissХорош наворачивать абстракции. Го снова сделал программирование простым, каким оно было для меня два десятка лет назад Нахую я вертел ваши фабрики, создающие фабрики, магию и прочую хрень.Забудьте, как страшный сон Просто программируйте. Просто, понятно, многопоточно.
>>1648788> простымПримитивным. Кому-то процедурная лапша на сях, го или паскале может быть в кайф, но это точно не может быть нормой.
>>1648804если go такой примитивный, то почему до сих пор нет транспайлера go в твой_любымый_язычок? гошные библиотеки пригодились бы
>>1648788>фабрики, создающие фабрикиТаким же только в джаве и шарпе страдают. На том же питончике можешь вообще без классов писать.
>>1649067Судя по формулировке> многопоточно, его не устроят языки с GIL (питон, руби) или с убогой асинхронщиной (жс, пхп). Понятно, что потоки =/= параллелизм, но всё же.
>>1648843А какой юзкейс у такого решения? gopherjs можно запускать в браузере, тут - да. А транспайлить в другие языки какой профит?
>>1649670Никакого профита нет. Хомячки увидели, что куча языков транспайлится в js и решили, что это правильно и так должно быть со всеми языками. То, что это сделано не от хорошей жизни, и что это может понадобиться только в браузере, им в голову не приходит.
>>1649670>А транспайлить в другие языки какой профит?>>1649693>Никакого профита нет.ууу... как всё запущено...
>>1650289Они не могут уйти в свой загон, в закрытой среде оказывается, что они пишут на языке для тех, кто не осилил scala, а так они самоутверждаются в своей голове за счет го и им немножко легче жить.
>>1650291> в закрытой средеВ фантазиях самих скалистов? Ну раз на то пошло, на жабе пишут те, кто не осилил шарпик.
>>1635774 (OP)Я тут выбираю 3 язык для изучения, стоит ли учит Go?Где он вообще используется, кроме написания всяких консольных штук?
>>1650411Go это синоним высокопроизводительный вебоориентированных микросервисов.+ Серверлес+ да, теснит питон для консольных утилиток
>>1650464Полезно для расширения кругозора. Многие гуру рекомендуют учить один новый язык в год, желательно отличной парадигмы от твоего рабочего.мимопроходил
>>1650479Если ты программист, то языки программирования, если ты какой преводчик - то человеческие языки. Нельзя давать мозгам застаиваться.
>>1650504Go слишком утилитарный.Для мозгов надо идти либо ближе к железу - асм.Либо в абстракции - хаскель, эрланг, раст, пролог
>>1651382Раст-то?Моззиловцы тупо натащили туда баззвордов, тупо по приколу. Это суперсолянка концептов.Неплохо ломает голову.
>>1650506У го есть интересная работа с потоками, если всю жизнь сидишь на промисах - то полезно будет поработать по-другому.
>>1651835Так то да, именно csp достаточно редко встречается.Но именно n:m конкурентность много где есть, но на акторах.
>>1651835> всю жизнь сидишь на промисахЯ понял, почему уровень треда такой. Потому что здесь все хоть и делают вид, что они перекатываются с питона, на самом деле они все латентные джаваскриптеры, лол.
>>1652310Все херня.Кроме дженериков и перегрузки функций. И, подаоуй, надо работать над gc, отсутствие поколений и compaction - позор.Хотите адового беспорядка, пиздуйте в плюсы или расты.
Каминг аут тайм>>1651911Я, например, не латентный, а я вполне себе js-разработчик, просто все еще не нашело нормальную работу на Go. Но первый язык у меня таки Питон.
>>1652549Потому что иначе ему пришлось бы кодить на котлине, а это гораздо хуже, чем срать на двачике.
>>1652313>дженериков и перегрузки функций.это рельно нужно лишь 0.0001% гоферовлучше бы размер бинарников привели в порядок>Хотите адового беспорядка, пиздуйте в плюсы или расты. раст-то тут причём? язык молодой и продуманный, там нет этих исторических нелепых нагроможений
>>1652606>дженериков и перегрузки функций.>>это рельно нужно лишь 0.0001% гоферовВот реально, дженерики нужны были пару раз, когда дублировались всякие util функцииПерегрузки - вообще не помню, когда были нужны
>>1652313>надо работать над gc, отсутствие поколений и compaction - позор.они выбрали mark-sweep gc из 70-х потому, что он создаёт минимальные задержки, а на большое потребление памяти им пофиг, ибо память дешёвая
Хорошо, что в Go принудительный опенсорс. Можно скопипастить исходник уже готовой функции и заменить тип на другой.
>>1648788Два чаю!Достался проект на го, который писали экс-пхпшники. Долго думал зачем мне фасады и фикстуры, импорт пакетов и структуры дают все что надо.
>>1652312>Two implementations of random numbers, math/rand and crypto/rand.О! А вот и гуглозонд проглядывать начал.
>>1652641Поколения как раз помогли бы перфомансу.Незачем каждый раз тратить процессор на обход всех объектов.
>>1652627Чаще пары раз.Кодогенерация конечно помогает, но хотелось бы что-то более интегрированное в язык.
>>1637226Чёт копейки какие-то. Даже я, околоджун, получаю 90к в месяц. И это в условиях кризиса из-за короны-чан.
>>1652606>лучше бы размер бинарников привели в порядокТы это серьезно? Это же было осознанное решение - пожертвовать размером бинарей ради удобства эксплуатации и относительной независимости от окружения. Если очень надо - есть https://github.com/tinygo-org/tinygo
>>1652644> Хорошо, что в Go принудительный опенсорс.Ты это о чем? Ты вполне можешь использовать приватные репозитории для своего кода
>>1653046У нас московские джуны получают +-100.А вот провинциальные - до 50.Поправка на уровень выживания.
>>1640136Едь в Европу Я щас сам перехожу с js на go; чтобы было меньше конкуренции намутить оффер в Германию
>>1653107Довольно высокая зп Порог вхождения высокий? Не просто же знать синтаксис?На го вообще возможно обрасти экспертизой, сидя дома? Как в мобилках или фронте
>>1653232Ничего запредельного. Для джунов задачи по алгоритмам и пара задач на многопоточность.Можно и дома, запили борду на микросервисах, задеплой ее в кубер. запили что-нибудь на серверлес.
>>1653241Ну вот я сейчас глянул, crypro/rand в основном использует crypto/cipher. Все написано на го.
>>1653327> ну я вышку закончил моаис, но один хуй эникеем 3 лет работал потом, периодически пытался учить питон, но забивал член доходя до ооп
>>1653340Ты там совсем обкотлинился? Кроме андроид-смартфонов есть ЕВМ и других форматов и назначений.
>>1635774 (OP)Я думал, го - худший язык программирования, а оно вон оно че. Лучший! Давно он таким стал? Я думал, лучший это раст. Ты, кстати, перед тем как пост высрать, рейтинг на СО смотрел?
>>1653443Рейтинг твоей мамки тоже не впечатляет, но мы же об этом не пишем. Проявляй больше увожения.
>>1653240Чтобы просто кодить хватит и пары дней, если у тебя есть опыт с другими языками. Для собеса можно поготовиться месяц, почитать, покодировать разные штуки.А вот чтобы проникнуться общепринятыми подходами и в одиночку разрабатывать качественные сервисы, надо как обычно, потратить хотя бы год на коммерческую разработку в команде с уже сеньористыми сотрудниками.Но таких мало, я сменил за последние 5 лет уже 3 компании, и везде сраные миддлоджуны. Заебали, я хочу научиться чему-то у скилловых чуваков, а не учить недомиддлов прописным истинам.
>>1653352Круто звучитсам бы даже попробовал вкатиться, но работаю на маке и максимум могу работать в винде, а для линукса ебать какой тупой
>>1653512Больно только в первые разы. Я уже 3 года сижу на дуалбуте кубунта+винда, мне норм. Винда нужна только для игорей, для остального вполне хватает линупса.
>>1653489мне мака не хватило (такой же паренек как я который пришел на пару недель пораньше, сидит на маке), так что я на убунте, слава столману
>>1653684Не обязательно, но если есть желание - можно обмазаться всякими unsafe вещами, но не советую.
Го-бояре, а есть ли какие-нибудь годные, углублённые материалы по escape-анализу? На просторах первой страницы гугла в основном базовая теория и некоторые узкие примеры, а хотелось бы что-то более конкретное, вроде описания оптимизации крупной кодовой базы или best practices работы с указателями. Или я латентный байтоёб и мне надо в другой язык?
>>16546011) в 90% случаев тебе это не понадобится2) там где всё таки понадобится -- всё придётся лезть профайлером и обмазываться флагами3) помни, что эскейп -- не часть спеки языка, а деталь реализации, и когда выходит следующая версия компилятора всё может стать лучше или хуже
>>1654601> Или я латентный байтоёб и мне надо в другой язык?thisПщ value-based язык, не выебывайся и не передавай дто по пойнтеруИ вообще покажи профиль, вангую, что оно тебе не надо
>>1654601В го работа с указателями в большинстве случаев сводится к следующим случаям:1) Надо менять структуру, а не создавать копию2) Для экономия памяти при передаче аргументов3) для того, чтобы значение было nullableВот доклад про указатели https://www.youtube.com/watch?v=yEiaCx0fR9k
>>1655874>>1655851Объясняю обоим, внимайтеэскейп-анализ именно для того и нужен, чтобы видеть и страдать, как все, от чего берется указатель улетает в кучу посмотрите еще как работают интерфейсы, че такое dynamic dispanching и минимизируйте плз использование сигнатур вида func(h *Handler) DoSmth(), посмотрите че по факту лежит в структуре Handler и если там одни пойнтеры на другие структуры, то копируйте ее блять!это значит, что память при схлопывании стека сама собой не очистится, и гц придется лишний раз по-работать, резонный вопрос - а зачем?с текущим железом (2к20й уже наступил ёпт) скопировать десять бит на стеке не стоит ничего, скопировать эти же 10 бит в кучу стоит дороже на порядок, а переодически поглядывать на эти 10 бит и перепроверять, а щас они доступны, а щас, а щас - бонусный оверхедпоэтому пойнтеры нужно для1) Надо менять структуру, а не создавать копию3) для того, чтобы значение было nullableда и то, иммутабельность рулит и педалит, а за нулабля надо пиздить по рукам чтобы нормально сигнатуры проектировали
>>1657086То есть, если я например хочу записать строку в таблицу, я должен неиронично сначала написать insert запрос с плейсхолдерами, передать куски моей структурки как аргументы запроса, а потом еще дернуть lastinsertid и в эту структурку впихнуть?
>>1657082Да, чистый SQL лучше всего. Охуеный язык. Я вообще не пойму, зачем понапридумывали всяких ORM, мало того что ограничивающих разработчика, так ещё и тормозных. Толку от них 0, используемая СУБД всё равно никогда не меняется, а в выразительности нет равных SQL-ю. И сложные запросы намного понятнее, когда написаны на SQL, а не на очередной бестолковой поделке с синтаксисом для особенных. И проблем от них КУЧА, они вносят в проект столько неявной и неуправляемой магии, что через некоторое время вообще хуй проссышь, что к чему и куда. Нахуй. Лучше SQL для работы с данными ещё ничего не придумали.
>>1657100Примерно так. Можешь еще всякие sql-builder попробовать.В гошных Ормах много неявной магии, поэтому лучше их не использовать
>>1657364Пока лучшее что видел - это https://github.com/pressly/goose.Eго, кстати, в Авито используют, пруф - https://youtu.be/hKnWq4RmNKE
Анон, где можно почитать простым языком о том, что такое интерфейсы и как они работают?А то у меня от большинства объяснений как_нарисовать_сову.jpg
>>1657794Попробуй сначала вживую руками с ними по-работайПотом попробуй обсудить с кем-то кто понимает что это и зачемА потом можно попробовать снова почитать статьи/книжки
>>1657794> как_нарисовать_сову.jpgЗакономерно, учитывая, что интерфейсы - абстракция, не имеющая аналога в реальном мире.
Суп гач. Че посоветуешь, сначала написать бота для телеги или прочитать "Язык программирования Go". Привет мир уже готов (а хули его там готовить), на пути БД. Базовый туториал прошел, но пока не чувствую язык. Сложно ориентироваться с модулями и тонкостями. Или забить на это всё, гуглить по ходу и пилить своего бота?
>>1658644Ладно, задам немного другой вопрос. Сейчас меня больше всего интересует организация и управление состоянием БД.Вопрос: есть ли какие-либо общепринятые инструменты в GO для управления состоянием БД? Т.е. вот я пишу бота, мне надо создать схему БД. Мне её тупо SQL'ем писать?Стоит ли сразу использовать ORM?
>>1658655>Мне её тупо SQL'ем писать?Да, потом накатываешь инструментом миграции. goose чисто гошный, flyway просто популярный.>Стоит ли сразу использовать ORM?Почитал разные мнения, тру-гоферы пишут запросы вручную, в крайнем случае кодогенерация. В популярном горме пустые интерфейсы => теряются преимущества статических анализаторов => можно было не укатываться с питона.А когда начнешь писать вручную, начнешь стрелять себе в ноги с транзакциями, prepared statements, context.Cancel(), но за такие шрамы тебя будут уважать другие гошники.
>>1658664Спасибо. Приходится по крупицам собирать информацию "как надо" и "как принято". Не хочется стрелять себе в ноги, но без этого конечно никуда.Все-таки решил что сначала нужно прочитать книгу, т.к. я нихуя не понимаю, а чтобы нормально себя чувствовать в языке для меня нужно его почувствовать (я хз как еще это описать). Придется смириться с тем, что я не гений программирования и не рок звезда, и не могу "писать что-то осмысленное через пару дней изучения go, пройдя одно руководство" как говорят всякие пидарасы на youtube. Самооценка, конечно, страдает, но ничего не остается кроме как принять свои слабости и упорно трудиться.Хотя читать книгу гораздо проще чем писать код, поэтому даже тут проеб.
Антон приветКороче есть вопросЯ пишу что-то типа поисковика, логика которого крутится на серваке, написанном на ГОЯ нахуячил (запрототипировал) логику поиска на питоне - с токинезацией, графами и тдВОПРОСа как мне это в го воткнуть? реализовать именно на нем или запускать процесс питоновский? во втором случае не проебу производительность?
>>1658697Читай Кернигана, чтение небыстрое, но он действительно хорошо объясняет.А потом читаешьhttps://github.com/Alikhll/golang-developer-roadmapи понимаешь, что все тлен.
Анон, а что как предпочтительнее хранить данные, в слайсе из струтур, или в аналогичной по структуре мапе?
>>1658898ты наркоман, зачем так сложно-то?у тебя есть несколько стульев:синхронная коммуникация по сети/юникс-сокету (делаешь в своем питухоне веб сервер и ходишь в него из го)асинхронная коммуникация по сети (мессаджброкеры/очереди на бд и прочее)шаред-мемори между процессамитреш вида os.Exec() питоновского кода из гоНа какой стул сам сядешь, куда мать посадишь?>>1658934в анусе но зависит от кейсов
>>1658997Просто проиграешь. С микросервисов никто не начинает. Все сначала делают монолит, а когда он станет слишком большим его итерационненько переделывают.
>>1659120Нормальные пацаны сразу делают на микросервисы.Не имеет смысла сначала делать плохо, что бы потом ебаться с легаси. Тем более, только у новичков (и динозавров) есть представление, что микросервисно писать больше.Уже всё готово и разложено по полочкам.
>>1659120>>1659201Кто-нибудь, быстрее, человеку плохо, вставьте сюда скорее пасту про НЕПОНИМАЕШЬ СУТЬ переписанную на микросервисы
>>1658904Таки начал, и с первых страниц уже некоторые нужные и непонятные ранее вопросы прояснились. Я так подумал, а куда вообще спешить. Роадмап тоже находил, очень годно. Думаю после книги все пойдет как надо. 400+ страниц все-таки не труда по 1.5к, если постараться за пару недель осилю с конспектами в md, майндмапах и примерами
А го вообще подходит на адекватной обработки текста? ну типа похожесть определить, или косинусное расстояние?
>>1659347по сравнению с DSLами для обработки текста? >ну типа похожесть определить, или косинусное расстояниенет, в го такого нет. на уровне компилятора запрещено. из-под земли вылезет гофер, а в гофере роб пайк, который набросится и загрызет тебя.
>>1659347Если ты студент или сотрудник большой компании - да. Всего, что не хватит, напишешь сам.В остальных случаях, бери питон
>>1659226Ну правда, уже все на автомате.Берешь gokit, быстро пилишь микросервисы. Когда требуются транзакции, берешь airflow.Закидываешь в managed cloud.Ты прекрасен.
>>1659440Глупо спорить и переубеждать кого-то в этих ваших интернетах, поэтому и я не стануно интерисующимся по-рекомендую почитать, в инете этой инфы хватает, не как "правильно" делать микросервисы, а какую проблему их придумали решать
>>1659347Любой тьюринг-полный язык подходит для этой задачи, рекомендую sed, попробуй, базарю, ещё захочешь!что ты как маленький, тебе не язык нужно выбирать а развитую экосистему, где уже есть готовые билиотеки для решения твоей проблемы
Гач поясни что не так с этим вашим go?Я то и дело натыкаюсь на популярные инструменты с мертвыми репами, которые тупо бросили разрабатывать то в 12, то в 15 году.Что не так с тулзами языка? Почему гугловский gopls не поддерживаем модули? Это же какой-то пиздец! Этим языком же не 3.5 Васяна пользуются. Как так вышло-то вообще?
>>1635774 (OP)Джун-джанго спрошу: блять, почему ТАК мало позиций для джунов в европе? Извиняюсь за ВЫСЕР бесполезный, но блять, живу в Гермашке, за 2 неделе 15-20 сообщений от рекрутеров по джанге и 0 по пщПитон заебал, думал сменить
>>1653651Какой пердолинг? Приведи пример?Пересобирают ядро каждые 5 минут? Ставят haskell-notebook на AIX?
Кто может пояснить, в чем разница между csp и акторами?Вроде все тоже... Управляемые легковесные потоки и коммуникация между ними...
>>1660007> Почему гугловский gopls не поддерживаем модулигугловский гоплс отличается от обычного гоплс? обычный вроде поддерживает.
>>1635774 (OP)Вброшу платину, я тут залётный. Остался без хлебушка как и многие, решил вкатиться в го, за месяц-два самоизоляции его можно задрочить чтобы взяли на работу стажёром за еду?
>>1660970НетУже много раз писали, что вакансий по пщ очень мало и чаще идет в дополнении к дргому языку.Анон выше писал, что они долго ищут джунов, но это скорее исключение.Лучше вкатывайся в js - работы дохуя, что по фронту, что по ноде, тем более последняя давно опережает пщ
>>1660991Ориентируйся на город.В мск можно найти работу на любой экзотике.Если ты не из дефолта, то лучше выбрать пыху.
>>1661068Это конечно так, но не без опыта.Зависит конечно от хотелок. Если хочется сидеть в офисе со стабильной (хоть и меньшей) зп — пхп, иначе жс и удалёнка.
>>1660979Наоборот, чем более популярна технология, тем больше конкуренция.А вот взять что-то вмеру популярное, вроде го, раста, эрланга и вайтивайти, мне кажется будет легче.
>>1661165я с тобой бы согласился, но про РФ это пока не так работает, по моим наблюдением: типа, опять же, только один анон, вроде писал, что ищут джунов чисот с пщ. А остальные вакансии - как 2й язык.Про эрланг, ТОЛЬКО СЛЫШАЛ, что еще хуже-полторы вакансии
>>1661178>А остальные вакансии - как 2й язык.Что там за вакасии для многостаночников? До обеда на питоне, после - на го, после работы остаешься виндоуз переустанавливать и картриджи заправлять.
>>1661223Ещё мало компаний, где все на го.Обычно есть монолит на джава/пыхе/питоне. И в вакансии требование на него, как основной язык.И расстаскивание этого говно на микросервисы на go.
>>1661165> Наоборот, чем более популярна технология, тем больше конкуренция.шок этот парень сводит экономику к линейным уравнениям первой степени бесплатно без смс
>>1635774 (OP)Кто пишет на голенг типичные КРУДы - я вас нахуй не понимаю. Язык для этого ну максимально уебанский. Лапша и боль гарантированы.А так как С с гц если то язык конечно достойный. Нахуй тупые пидорасы-менегеры его пихают в круды- хуй знает.
>>1660970Я тебе больше скажу.Сейчас в айти грядет жопа, так что чтобы ты не выучил за 2 месяца, тебя никуда не возьмут
>>1661302айти отрасль прикладная не будет заказывать бизнес, погромисты первые под мост пойдут.условно ресторан может работать без сайта, а сайт без ресторана не может
>>1661316Без сайта - даБез бухгалтерии, склада, еботы с партнерами, скидочками-карточками, интеграции с доставками - ниетНе переживайте, нормальные пограмисты только поднимутся на этом кризисе, конечно, будет и те, что лососнет тунца и не маленькая вероятность, что таких будет большинство>>1661245Как понадобится 1к+ рпс с одного инстанса (и учитывай, что такой круд и метрики будет писать и ивенты кидать ну и бонусом, не обязательно дрочить один инстанс пг/мускуля/шины ивентов, а можно работать с несколькими нодами кластера) - приходи
>>1661330ты только что описал аутсорс и продуктовые галеры, аутсорс заглотит так, как даже котогейчик не глотает
>>1661316> условно ресторан может работать без сайта, а сайт без ресторана не можетЕсли у ресторана проблемы, то закрыв сайт - он их не решит, ресторану придется закрыться, таким образом айти пострадает в последнюю очередь условно - после всех ресторанов. Живу в городе с жесткой самоизоляцией, рестораны могут работать только на вынос, сейчас сайты и мобильные приложухи - последний способ как-то работать и многие все что осталось вкладывают в айти и доставку. После карантина безработица будет высокая и борьба за платежеспособных клиентов будет нешуточная + привычки к онлайн потреблению у людей тоже останутся. Айти остается максимально актуальным занятием.Айти конечно же не стоматология или сантехника, но чтобы айти рухнуло нужен прям капец в экономике.
>>1661359это был пример коней в вакууме, но принцип ты понял, бизнес не дает заказы, ойти собирает бутылки
>>1661359Сразу видно, что ты не в теме.Работаю на галере сейчас: 20% проектов закрыли - всех, кто оказался без дела, сократили. Также поурезали всякие бонусы типа выплат за спорт, бонусы за рекомендацию и тд.А проблема в том, что кризис начался в мире, и они экономят, в первую очередь на айти.
>>1661363На айти не экономят.Во время кризиса срезают левые расходы, которые не жалко было в хорошие времена, но могут потопить в кризис.Если вашей компании стало плохо, знайте, вы занимались хуйней.
>>1661379Ну ты тупойЯ тебе говорю реальную ситуацию: на айти начинают экономить в первую очередь, поэтому сейчас все аутсорс галеры начинают экономить и сокращать людей или зарплаты
>>1661381У меня всё норм. Вообще ничего не поменялось. Нанимаем людей.У моих знакомых плохо только у говноедов, тьфу, битриксоедов. Потому что накуй оно не нужно.
>>1661379В целом согласен, но есть компании где IT отдел - это как раз "левые" расходы. Помню читал пасту, где кабанчик расказывал, что завел IT отдел, по тому что это статусно>>1661381В аутсорсе все скорее плохо, но аутсорс это не все IT. Да и аутсорс бывает очень разный, в том числе и компании, которые продают IT-продукты, над которыми не могут остановить разработу, и компани с большим горизотном планирования - которые понимают, что если они распустят команду - они потом потратят очень много времени на то, чтобы новые сотрудники вошли в курс дела и начали делать хоть что-то полезное, и есть компании, деятельность которых в современных условиях стали более востребованы чем обычно, и они сейчас гребут деньги лопатами
>>1661393>но аутсорс это не все ITты малость не понимаешь структуру рынка нашего ойти снгшного погреб я на галерах, даже выпало мне как то порулить одним небольшим проектом, проект я сдал и в рот ебал больше тимлидом работать но ща не об этом, и я видел некоторое дерьмо, так вот в украихе/белорахе аутсорс почти и есть все ойти, ибо внутренний рынок там баблом небогатый и делать продукты под него тупо нахуй не упало из-за открытого настежь рынка аутсорса в котором в жирные времена платили в разы больше да и заказов поболее, так внутренний рынок там или мертв или в зародышевом состоянии остался, в рахе ситуация обратная из-за общего протекционизма поток бабок за аутсорс был не такой обильный и это позволило внутреннему рынку выжить и потихоньку развиватся. что же происходит когда все плохо в кризисные времена потом заказов падает, своих надо кормить, и галерки мелкие и средние получают финансовую пробоину и идут ко дну, выкидывая бомжевать погромистов, галерки крупные у кого есть бабос могут впасть в спячку перебиваясь заказами какие есть и попутно отлавливая бриллианты в море говна которое разлили галерки помельче, у галерок продуктовых, коих в рф много, обычно есть клиенская база, расти она врятли будет, да и оборот упадет, но так как она работает в основном на внутренний рынок падение внешнего спроса не бьёт по ним как кувалдой, так что как то так это работает.
>>1661361Бизнес будет давать заказы пока есть хоть в каких-то отраслях рост, если весь корабль тонет целиком, то ясеньхуй айтишная каюта пойдет ко дну с остальными. Но до этого надеюсь не дойдет.>>1661363Чем жестче условия, тем больше бизнес выкручивается, чтобы оставаться конкурентоспособным. Новые проекты, если они не критичны для бизнеса, конечно закроют, но поддержка существующих становится фактором выживания бизнеса. Мб в странах без жесткого карантина другая специфика, конечно.А 20% это не 20% людей часом? Потому что даже в таком случае, просадка не такая сильная как в других областях. И при этом после кризиса айти будет расти еще быстрее остальных отраслей.
>>1661431>для проброса логгера. Интересное решение, никогда не думал о таком использовани контекста. Я логгер получал либо из синглтона, либо - через dependency injection'а
>>1661441Нужно из контекста.Что бы в логгере уже были полезные поля, вроде id запроса, идентификатора пользователя и подобных штук помогающих отладке.
>>1661393> В целом согласен, но есть компании где IT отдел - это как раз "левые" расходы. Залетный ИТТ. Работаю как раз в такой конторе, пилим внутреннюю CRMку. В команде нет ни одного действительно опытного IT специалиста. У всех опыт не больше года-двух и тот опыт был получен в этой конторе. Считай все на своих ошибках. При чем эти ошибки везде: в бизнесе, в бизнес логике, в архитектуре, у менеджеров при построении задач бизнеса. Пиздос, в общем. Решил остаться на этой работе из-за широкой свободы действий.Как только начался карантин прямой босс тут же начал искать сторонние заказы. Сразу стало понятно, что высшее руководство поставило ультиматум, и скоро наш отдел пидорнут.Босс начал браться за какие-то лютые окологосударственные милионные заказы. Сказать, что я охуел это не сказать ничего.Команда из начинающих менеджеров, незнающих девопсов и пяти джуниоров разной степени прожарки, да милионный муниципальный заказ с кучей интеграций...Страшно представить, какой ад нас ждем если мы случайно в это втянемся. А с другой стороны, если не втянемся, то скорее всего половину, а то и весь отдел тупо пидорнут, а учитывая, что у меня полтора года не очень качественного опыта и 5 лет работы на обыкновенным быдлом на заводе, в моей мухосрани мне тупо придется возвращаться пахать быдлом на завод.Короче, не так и рушатся мечты, анон. Я же пошел в программирование за мечтой, и планировал её достичь к 30, в апреле собирался съебывать в коронавирусную за опытом и заработками.Но случилось то, что случилось. И теперь потребуется несколько лет чтобы все хотя бы устаканилось, не то что вернулось на круги своя.
>>1661330А как понадобится гибкий код и возможность быстро и дешево подстраиваться под новую бизнес-логику - съебывать в ужасе. Это понятно, ок.
>>1661733Дело не в вертикальном масштабировании.А в том, что сейчас век интернета и все больше проектов переползает в ранг хайлоада.И заливать железом проблемы выливается в суммы с 4-5 нулями в месяц от Амазона.Поэтому скриптовые языки и загибаются.
>>1661733Сними плз видео как девопсы будут тебя пиздить за 1000 кубовых подов с php-fpm/gunicorn и пара-тройка гиговым вендором>>1661729Не клади много логики в ручки таких крудов - не надо будет переписывать используй ивенты, Люк
>>1661485переведу на язык биологии, вы жили в комфорте пилили какую то хуйню для кишков компании(которая особо и не нужны были), в итоге из-за кризисы новые вызовы, если ваш отдел сейчас не войдет в резкий поток изменений, если вы не выйдите из зоны комфорта и в стрессе не начнете хуячить что- то новое, то вы по всем законам рынка должны умереть.
>>1640061звезды на гите не повод для дрочки на технологию. Некоторые не стесняются подъебывать, выкладывая библиотеки-подъебки.
>>1640068> А если мне внезапно понадобится переехать с одной БД на другую?Для того, чтобы у тебя код на go остался неизменным при смене базы, он у тебя должен быть ну очень абстрактным. И то непонятно, иногда нужно написать запрос с группировками, with, оконной функцией и ещё парочкой очень специфичных вещей. Как ты это сделаешь через свою ORM? Скорее всего никак, и будешь делать 10 запросов из кода, а потом в коде же мерджить их результаты, что будет в разы неэффективнее.В итоге мы приходим к такому выводу, что ORM подходят только для случаев, когда ты просто гоняешь json'чики между кодом и интернетами, причём самыми что ни на есть типовыми CRUDами.А как только у тебя появляется сложность в работе с данными, ты резко начинаешь использовать функциональность и особенности базы на 100% и код запросов, во-первых, становится слишком сложным, чтобы его могла сгенерировать ORM'ка, а во вторых слишком специфичным, чтобы просто так взять и поменять базу.Поэтому в мире пехапе ормки распространены повсеместно - там чаще всего нет нагрузки и абсолютно любой говнокод неэффективный код проканывает. А на го просто по области применения обычно пишут нагруженные сервисы, которые должны использовать эффективные запросы.