Go (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и мега крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего. Батарейки почти как в питоне.Пщ едва не единственный язык который на уровне синтаксиса позволяет синхронизировать подпрограммы, разве только не Pony или Erlang. Это в 2018 году-тоДженерики нужны, дженериков нет. Просто смирись.Обработка ошибок получается охуенно через http://github.com/pkg/errors | в приложениях обычно можно просто паниковать на ошибках.HTTP-сервер для убер максимального маня-хайлоада: https://github.com/valyala/fasthttpВ 1.8 или 1.9 уже можно "нормально" сортировать через sort.Slice()Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.Вкатываемся в эпоху докера, микросервисов и адово кошерной сетевухи.Илюша, https://github.com/tucnak
Сажа скрыл
>>1119395Молча)
>>1119389 (OP)> разве только не Pony или ErlangИ чем го лучше пони или ерланга?
Влюбился в этот ваш голанг с первой строчки, уже неделю угораю пройдет или это навсегда/надолго?Какие перспективы? Что на нем пишете, сколько зарабатываете?жаваскрыпт мидл кун
>>1119525Влюбился в этот ваш голанг с первой строчки, уже неделю угораю пройдет или это навсегда/надолго?Какие перспективы? Что на нем пишете, сколько зарабатываете?жаваскрыпт мидл кунфикс спойлера
>>1119389 (OP)Где нормальная шапка со списком литературы?
>>1119526>>1119525Просто ты увидел язык, который не является рвотным сблевом говна собаки, вот и зашло с непривычки.
>>1119535Зачем она нужна? Я куратор этого треда, я сам список литературы. Короче, нахуй литературу.
>>1119513Но реально решает задачи, уровень технологий там зашкаливает. Пони и эрланг хороши, но Го по практичности просто берёт и выносит остальных ногами вперёд :-)
>>1119568Ну и зачем ты такими заявлениями даешь лишний повод думать о Гоферах, как о дебилах, отрицающих книги?
>>1119389 (OP)>Пщ едва не единственный язык который на уровне синтаксиса позволяет синхронизировать подпрограммы, разве только не Pony или Erlang. И clojure, и х-ль с экстеншнами, и так далее, и тому подобное.Алсо, >на уровне синтаксисаКак будто что-то хорошее.
>>1119725Ты с говнарями спориь собрался? Этот гуглепаскаль только отбитый даун использовать будет. Благо, вакансий по говну нет. Так-о.
Поясните за этот ваш пщ, на нем есть что-то для статистики и машинного обучения?
>>1119842Загугли awesome go. Есть
>>1119842язык умер алло
>>1119729Есть хайп на него, платят хорошо
>>1119846Уже нет. Ни вакансий, ни задач.
>>1119934двачую
>>1119729>>1119934>>1119937Как так? Только что же был на хайпе острия острия.
>>1119934Я так и знал, что эта параша сдуется.
>>1119934В дс2 на хз вакансий на го, больше чем на ноде.
>>1119952На хх*
>>1119952>В манямирке
>>1119952Нода это совсем дрисня. Даже ее создатель сказал, что она не нужна, когда есть любой другой язык программирования Го.
>>1119965Нода не дрысня.
> Го> Современный язык
>>1119976Нода дрисня, а не дрысня. > Даже ее создатель сказал, что она не нужна, когда есть любой другой язык программирования Го.>>1119982После JS-хуиты любой нормальный язык кажется божьим откровением, а если он еще и прост как три копейки, что даже шлемазл с поврежденным мозгом разберется, так вообще.
>>1119994Жс нормальный язык, в последних версиях он просто ахуителен. Нода топ 1 платформа для разработки. В то время как жс от стандарта к стандарту становится лучше, создатели го игнорируют сообщество и за столько лет не добавили ни менеджер пакетов и ни дженерики.
>>1120002> Жс нормальный языкЯ мог бы обоссать тебя, но вместо этого просто кину тебе пример твоего "нормального" читаемого языкаhttps://github.com/mui-org/material-ui/blob/v1-beta/docs/src/modules/components/AppDrawer.js> Нода топ 1 платформа для разработкиДля JS-разработчиков.
>>1120002>ни менеджер пакетовhttps://github.com/golang/dep
>>1120085> Windows Build Status: failed> Go report: A+инб4 не нужон
>>1120088https://docs.microsoft.com/en-us/windows/wsl/install-win10Зря пилили что ли?
>>1120085>dep is the official experiment, but not yet the official tool> Windows Build Status: failed> Go report: A+Гоферов кормят говном, а они едят и просят ещё.>>1120004> Для JS-разработчиков веб разработки.Пофиксил, не благодари.
>>1120178Чем вызван смех?
>>1120178его давно в продакшене используют.
>>1120269Вот когда NY Subway начнут использовать вот тогда.
>>1120002Чет проиграл с функции reduce, в которой есть > = null> arg.push...> return arg
>>1120266Отсутствие нормального менеджера пакетов.>>1120289Пздц, ты даже по нужному почту не можешь попасть. Алсо нахуй вы всякий говнокод обсуждает?
>>1120329Посту*
Тем временем >Announcing Go Support for AWS Lambdahttps://aws.amazon.com/blogs/compute/announcing-go-support-for-aws-lambda/
>>1119389 (OP)>2017>MakefileПросто убейтесь.
>>1119389 (OP)>ИлюшаОн что, поехавший?
Го это байтоебский язык или на нем можно делать и высокоуровневые вещи?
>>1120792Нишевой язык для того, чтобы транслировать в него Python. Если хочешь — это байт-код Пайтона. И не более.
>>1120792что-то среднее
>>1120862> транслировать в него PythonЩто?
>>1120895Трансляторы есть уже давно:http://www.opennet.ru/opennews/art.shtml?num=46912Всё остальное — быдлохуита навроде COM DCOM ActiveX MFC POUWERЪ TOYEZЪ.
>>1120901Лолблядь. Зачем в него гнидобейсик транслировать?
>>1120903Но ведь у процессора кеши не резиновые...Чем меньше скачков по оперативной памяти — тем лучше.Google, Pitfalls of Object Oriented Programming
Почему то го не показался мне таким простым как его нарекают. Ключевых слов действительно не так много, но вот типы для это просто пздц. Возвращение функцией нескольких значений тоже довольно неявно для меня, что в итоге только усложняет все для меня. Стрелочный оператор тоже сбивает с толку. И с горутинами пока не успел разобраться. Начал решать задачки на exercism.io. В итоге застрял на самых простых. Пошел читать доки - в итоге не могу найти нужную функцию или опять же проблема с типами. Стоит ли ещё что нибудь почитать или просто продолжать превозмогать, надеясь со временем во все разобраться?
>>1121005The Go Programming Language Phrasebook [Chisnall 2012-05-10]little go book
Киньте картинку, как к хомякам прилетает тарелка и говорит GENERIC, а хомяки кидаются копьями.
>>1121005Поддвачну. Привык к функциям которые работают с переданным параметром. А в го функции воруют, убивают, ебут гусей, а возвращают вообще ошибку.
>>1121180
>>1120714Net
Спешите видеть: итт хейтеры спорят на тему объективных качеств языка. Абсолютно похуй на все эти мелкие недостатки — как вы это не можете понять. Ещё есть такой прикол что полноту многих проблем вы просто не понимаете потому что что-то не знаете. Язык это не только дизайн, это ещё производительность и поддерживаемость. Го делает это хорошо, многие компании даже считают что очень хорошо. Зачем хейтить охуенный проверенный инструмент из-за какой-то мишуры на которую не похуй трём — трём с половиной юным максималистам?Нет дженериков? Ок, нет. Не сделали. И что теперь? Диллема дженериков хорошо описана и создатели языка многократно аргументировали свою позицию. Они не против дженериков per se, просто с учётом всех факторов они посчитали что лучше не делать их вообще. Это не мешает. Если бы это было фатальным недостатком, то Го не получил бы тот успех который он получил.-Илюша
>>1121322>охуенный проверенный инструментПодожди-ка, но ведь это не джава и даже не си тред.
>>1121358Go используют как минимум с 2012 года сотни компаний. И в большинстве случаев остаются довольны.Если для тебя 5-6 лет это недостаточно большой интервал чтобы делать статистические суждения, ты мало представляешь себе жизненный цикл поддержки кода (который итерирует чаще чем раз в 5 лет).-И
>>1121362>Go используют как минимум с 2012 годаНу тогда при выборе языка точно не стоит смотреть на качества этого языка - раз его используют с 2012 года (минимум!), то нужно брать!
>>1121322>Абсолютно похуй на все эти мелкие недостатки — как вы это не можете понять.Мы не намерены это понимать. Дженерики спрашивают на собеседованиях → обязан выучить дженерики. Всё, закончили с этим!
Илюш, а тебя с хабра прогнали) Ссаными тряпками))
>>1121435У меня там есть как минимум два аккаунта с положительной кармой — это раз. Я не сижу на хабре с 2015 года — это два.-И
>>1120713Что ты имеешь против мейка? На самом деле в этом конкретном случае достаточно build-optimized.sh, но я предпочитаю запускать make и всё.
>>1121440> build-optimized.shПентиум четыре уже купил?
>>1121438А у меня у папы самолёт и вертолёт!
Вроде в версии 1.10 собирались впелить поддержку создания .dll плагинов под виндувс, оно живо?
>>1121443При чем тут это? Бинарники в Пщ по-дефолту содержат кучу отладочной информации и т.д. Чтобы эти (ненужные) данные убрать, есть флаги. Я их не помню, поэтому у меня просто мейкфайл и я могу делать просто make или make stripped.>>1121444Молодец, я рад за тебя.
>>1119389 (OP)И сюда тоже запостирую:https://www.opennet.ru/opennews/art.shtml?num=47869>Наиболее сильно теряют свои позиции Java (-3.06%), Go (-0.76%) и C++ (-0.70%). Запомните это сочетание: джава, го и сиплюсплюс.
>>1121600>0.76>0.70Щас бы на спичках экономить
>>1121286Спасибо. Проиграл еще раз.
>>1121394Их учить надо? Я думал, посмотрел и все.
>>1121675Я думаю это была шутка.
>>1121661Щас бы терять позиции, когда все остальные растут. Хайп на говно прошел - он уже схлопывается, так толком и не успев взлететь.
>>1121751>Хайп на говно прошел - он уже схлопываетсяНо все же никуда он не денется, ниша пщ в целом востребована, разве что появится нормальная альтернатива как с пхп->питоноруби.
>>1119389 (OP)Как перекомпилировать hello world на виндоус? Я устанвил этот ваш GO с официального сайта на Linux Ubuntu 64 bit. Вообщем, hello world на нем работает. Но я хочу, чтобы работал под Windows 64 bit. Как это сделать? На команду 6g ругается, что не найдена.
>>1121600БЛЯТЬ! ЕБАННА В РОТ! АССЕМБЛЕР ПАДАЕТ ТОЖЕ, ВСЕ ТЕПЕРЬ ОН НАХУЙ НИКОМУ НЕ НУЖЕН! ПИШЕМ МИКРОКОНТРОЛЛЕРЫ НА ПЫХЕ
>>1121888Какая блять пыха? Не видел, там SCRATCH РАСТЕТ! Перекатываемся на него аки колобки.
>>1121829Нужно указать при компиляции флаги GOOS и GOARCH и в них указать необходимую архитектуру ОС, короче погугли
>>1121896>env GOOS=windows GOARCH=amd64 go buildПолучилоась, работает! Спасибо, братишка, век багов не видать!
>>1121907Круто, на гитхабе где-то есть библиотеки, которые автоматически собирают бинарники под все доступные ос
А на нем можно написать программку с окошком и кнопочкой? Ну, типа маленькое окошко на экране, в нем надпись Hello, world! А под ней кнопочка OK. Нажимаешь и и окошко закроется..
>>1121923Устанавливаешь VS2017. Открываешь Windows Forms...
>>1121927A Go?
>>1121930Да можно, ну лучше это делать на с#, как посоветовали свышеhttps://github.com/avelino/awesome-go#gui
Давайте теперь поговорим о смысле существования данного языка. Как мы только что узнали, они не может в GUI. Остается сфера применения для веба, а преимущество языка - многоядерность. Но на вебе совершенно не нужна поддержка многоядерности. На вебе для обработки каждого запроса пользователя запускается новая копия скрипта. При высокой нагрузке, т.е. одновременных запросах от нескольких пользователей, скрипты будут работать на разных ядрах. Узким местом на вебе являются базы данных и каналы связи. Go никак не адресует эти проблемы. Получается, он бесполезен.
>>1121958Ты очумел1) статическая типизация2) малое потребление памяти3) джанго/питон 4000rps, golang 40.000 rpsЕстественно, когда маленький сайт, то не нужно а когда почта.маил.ру/дропбокс, etc, где миллионы пользователей, то нада
>>1120002Мечты жс-неосилятора нормальных языков
>>1121958>они не может в GUI. Остается сфера применения для вебаЕсть только две сферы: гуи и веб?
>>1121999Нинада.
>>1121999>статическая типизацияЭто его недостаток для веба. Дальше?>малое потребление памятиокей. Одно достоинство. Скрипт может отожрать 100mb, но при нынешних 32ГБ памяти этого хватит на обслуживание 300 пользователей одновременно. Сервер ляжет скорее от чего-то другого, чем от недостатка памяти.>джанго/питон 4000rps, golang 40.000 rpsЧто такое rps? Запросов в секунду? Тогда это влажные мечты кукаретика. В реальности будет всего сотня, а дальше ляжет база.
>>1121958Прикручиваешь кути и он сразу может в гуи>>11220371. Спорно, это недостаток только для макак.2. "Маам, маам, смотри, мой жс/пхп/питон/хуитон говнопроект жрет всего 16 гигов под нагрузкой и течет как похотливая сучка"ну если ты кроме хоум пейдж и вонючих интернет магазинчиков ничего больше не разрабатыва/не видел, это не значит, что нет систем с большим количеством рпс.
>>1122053>16 гигов под нагрузкойЯ вижу, что ты ничего не разрабатывал, иначе знал бы об ограничении памяти для каждой инстанции.
Что означают подобные этому фразы в документации?func Command(name string, arg ...string) *Cmd-что означает многоточие?- что означает ежик и Cmd через пробел? - это можно копировать в код и использовать?
>>1122205Многоточие - переменное число переменныхежик - это указатель*Cmd - возвращемое значение ( в Го возврат пишется после функции)
>>1122205Если на си++, то аналог этого это*Cmd Command( string name, string arg,...)
>>1119389 (OP)Какого хуя присвоение := Это паскаль ебаный блядь? Хули нельзя было нормально сделать?
>>1122218Есть и обычное.Когда через двоеточие, то еще и типизация происходит
Как класс описать? Или в этом языке такое понятие отсутсвует. Поиск выдает какую-то петушню type userStruct struct {}
>>1122233Классов нет. Есть структуры.Если тебе надо объединить структуру с методами, то используется связывание.Типа такfunc(user *userStruct)Method() {user.UserName = "User"}
>>1122235и как в классе создать защищенный от наследования или изменения параметр (protected, private)?
>>1122236private параметры пишутся с маленькой буквыtype userStruct struct {privateName stringPublicName string}
>>1122235Ну и впизду тогда.Без классов есть более гибкий и быстрый срр,А для нормального ООП -- что угодно, начиная с рнр7 для веба и, допустим, Ява для остального.Нахуй надо-то? Пытаюсь понять.
>>1122239Можно создать аналоги классов. Язык похож на си, но проще по синтаксису, и меньше требует, чем джава
>>1122237Разве это поддерживается на уровне компилятора? Из примеров я делаю вывод что НЕТ http://www.golangprograms.com/go-language/struct.html
>>1122248Да, поддерживается. Всё что с маленькой буквы доступно только в пределах пакета. "Наружу" для доступа экспортируются только симболы с большой буквы. Это удобно на самом деле: по названию симбола можно сразу сказать будет ли видно его снаружи или нет. Т.е. это касается не только полей структур, а вообще всех сущностей пакета: переменная, постоянная, функция/метод, структура, интерфейс.-И
>>1122067Скоропалительные выводы, как это мило.
>>1121790Зарепортил неймфажество и щитпостинг.>>1121800>разве что появится нормальная альтернатива Вообще, когда появились раст и свифт, я думал, что сейчас начнется эра новых сиплюсплюсов с лямбдами и монадами, но как-то пока велосипедов в этой области меньше, чем хотелось бы - нет чего-то аналогичного по простоте легкости пщ. Ну, впрочем ерланг\еликсир в каком-то смысле оно самое и есть.Короче, насчет ниши - согласен, но вот этот хайп "вау гугл нарисовал такую няшную аватарку давайте перепишем все бекенды на пщ" уже прошел\проходит. В евангелистах остались только шизики вроде опа, лол.
>>1121888Щас бы асм с пщ сравнивать, хехмда
>>1122331Я просто угарал с логики этих маминов аналитиков.Го сосет
>>1121999>1) статическая типизация>нет дженериков>1) статическая типизация
>>1122333Бегемоты - круто.
>>1122332Так ты соврешенно зря "угарал", не разобравшись, в чем, собственно, логика. Ассемблер был, есть и будет всегда; тот факт, что он в рейтинге падает - следствие прогресса в разработке компиляторов, это ожидаемо и нормально. То же касается, например, и си. А го дарт, ещекакаямаркретолушнаяхуйнянейм - еще не взлетевший язык, и если он в фазе взлетания вместо стабильного роста сдает позиции, то конец немного предсказуем.
>>1121800>ниша пщ в целом востребованаИ что же это за ниша таинственная никому не известная?
>>1122445Всем, в принципе, известная. кроме тебя Высоконагруженные бэкенды, сетевуха, CLI.Cloudflare гоняют преимущественно код на Go, а у них 10% всего трафика в интернете.Докер и вся экосистема вокруг него тоже построена на Go.Кубернетес и разные базы данных, типа cockroach.
>>1122450Т.е. для написания узкоспециализированной прокси. Я бы сказал это к веб-разработке отношения не имеет. Докер сдох.
>>1122452>Т.е. для написания узкоспециализированной проксиНет, я тебе перечислил для чего, не нужно передергивать.>Докер сдох.Нет, это не так.
>>1122452>Докер сдох.Откуда дровишки?Лол кек
Илья, скажи, что нужно знать/уметь, чтобы джуном взяли? Ну и какого типа и уровня должны быть прожекты на гитхабе?
>>1122330Ерланг\еликсир – языки с охуэнно узкой нишей даже относительно пщ, плюс динамические, плюс вм, плюс функциональные. Это все совсем не то.C похожих языков есть Д, но гц у него тормозное текущее говно из-за того что язык перегружен плюсовыми фичами которое пщ и подметки не годится. И есть ещё пони-last-hope, который вроде бы хорош но целесообразность memory-safety концепций все ещё под вопросом да и хуй знает выберется ли оно вообще когда нибудь из альфы.В общем для сетевухи у пщ сейчас конкурентов нет и в ближайшее время не предвидится.мимо-пщ-хейтер
>>1122452> Докер сдох.Да неужто? И когда/как это произошло? А то пацаны не в курсе.
>>1122685>Это все совсем не то.Так я и имел в виду, что вместо переписывания всех бекендов на пщ их теперь переписывают на эликсире, а пщ остается там, где и должен.
Бля, отправил пост случайно.>>1122685>есть ещё пониТаки есть? Оно вообще шевелится? Что-то про него совсем ничего не слышно.
>>1122851На ладан дышит, после того как их контора пытающаяся продавать язык обанкротилась создатель языка сьебал в microsoft research, остальные core-разработчики в основном вяло пилят компилятор и пытаются сделать так чтобы он не сегфолтится на каждый чих.
>>1122957Печально, чо. Да хотя и хуй с ним.
Недавно решил написать мини проектик на Go. Кароч мне нужно место где выместить злоТезисно:- Роберт Пайк - пидор - Разрабы самого go в целом - долбоебы каких мало- Комьюнити go - самое макаконасыщенное после комьюнити js- Язык изобилует уебанскими решениями, которые дауны яростно отставиваютGOPATH мог быть придуман только долбоебом. Мудацкое, неудобное и бесполезное решение. Все бы хорошо если бы оно было опциональным. Но, нет оно жестко захардкожено, потому что ятакскозал! Даунята активно защищают такой подход. Если тут комуто GOPATH нравится - подойдите ближе к сцене, я поссу на ваши лица.gofmt - Революционный удобный тул!! - заорете вы. Пиздец вы дауны - отвечу я. Автоформат есть в любой IDE к любому языку вот уже 30 лет. Но вот жестко захардкодить уебанские, неправильные, неудобные настройки додумались только гоферы-даунята.Открывающиеся скобки только на той же строке - Ебаный кромешный пиздец. Есть общеизвестный факт: так скобки ставят только билюбознательныекак минимум люди. Натуралы ставят скобки на новой строке потому что преимущества такого подхода очевидны. Но так как авторы go - поголовно состоят в ЛГБТ сообществах и соответственно любят хуйцы, то они блять ЗАХРАДКОДИЛИ скобки как им нравится. Хочешь писать как натурал? А хуй тебе - код не скомпилится.Путь к репам прям в коде - например import "github.com/go-chi/chi". Ну и ебланы. А если завтра гитхаб накроется? Менять исходники? Дебики блять. Ну ладно, гитхуб напрядли накроется, но более малоизвестных хостинг - изиВ остальном пока язык устраивает, http сервер, роутинг, sql из коробки + язык дизайнился под бекенд, для моего проекта хватает.>>1119525>жаваскрыпт мидл кунУгарнул. Сеньйор джиес примерно равен джуниору в нормальных областях. А теперь оцени свой уровень.Вообще специализация удел насекомых. Если человек знает один язык\технологиях, то он - макака вне зависимости от зп.>>1121438>два аккаунта с положительной кармойПоложительная карма на хабре - зашквар. Адекватные люди все с отрицательное. Хабромакаки в основном братьев по разуму плюсуют
>>1123528>GOPATH мог быть придуман только долбоебом. Мудацкое, неудобное и бесполезное решение. Все бы хорошо если бы оно было опциональным. Но, нет оно жестко захардкожено, потому что ятакскозал!В смысле захардкожен? Всегда можно переопределить.>>1123528>Открывающиеся скобки только на той же строкеКажись, в джаве аналогично принято ( конечно можно по-своему, но желательно именно так). А ты открой питон, еще сильнее забугуртишь.>>1123528>Путь к репам прям в кодеНе совсем так. Он у тебя по этому пути скачается, а дальше будет просто лежать в GOPATH/src/github.com/go-chi/chiДа, если твой проект зависит от другой библиотеки, ты залил его на гит, а потом путь поменялся, то будут проблемы.
>>1123545>В смысле захардкожен? Всегда можно переопределить.Лол. В смысле он есть и проекты должны лежать в нем. А я хочу чтобы рабочий проект на go лежал в одной папке, а личный в другой, а в третьем проекте у меня только часть на go и я хочу чтобы она лежала вместе с проектом. Ну т.е. стандартный кейс. >Кажись, в джаве аналогично принято ( конечно можно по-своему, но желательно именно так). А ты открой питон, еще сильнее забугуртишь.Мне плевать как у джава-петушни принято. В своих проектах я пишу как считаю нужным, в рабочих пишу как принятов в проекте. Да и в джаве это лишь рекомендация, а уебанских рекомендаций я не придерживаюсь, в своем коде на джаве ставлю скобки на новой строке.Питон прекрасный язык, и к тому же не си-подобный, так что там со скобками нет проблем. PEP8 можно спокойно игнорировать если не нравится.>Не совсем такДа, ты прав. Но всеравно так себе идея, выглядит уж точно не красиво
>>1123558>выглядит уж точно не красиво По-моему дело не в том, что "не красиво", а в том, что когда тебе понадобится по какой-то причине сменить вендора (ну, например скачивать пакеты в CI со своего локального зеркала репа), ты как бы немного соснешь хуйца и пойдешь городить костыли. Самое смешное, блядь, что уже дохульон лет, как это проблема решена (хотя бы у той же джавапетушни с мавеном), уже найдено корректное, блядь, решение проблемы зависимостей и сборки проекта - но нет, нахуя нам это, давайте лучше сделаем гопатх и урлы в коде. Это просто пиздец. И с дженериками один-в-один та же ситуация. Черви-пидоры просто.другойанон
>>1121933А что посоветуешь на каждый день из своего списка?
Играем в игру. Блиц вопрос-ответ любой технический вопрос на тему языка Go.
>>1125292Ненужно.
ИТТХочу сделать на Go систему на основе блокчейна для поддержки свободной журналистики: факт-чекинг, пруф-ридинг и поддержка свободных журналистов посредством оплаты востребованных публикаций через любую валюту. Вопрос: стоит ли для этих задач брать именно Go? Мне кажется, что это отличный выбор, но может быть есть инструменты получше для блокчейн сервиса.
>>1125790На чем написан ethereum?
>>1125794На Go.
>>1125264Итак, такой вопрос, почему по супер развивающемся языку, всего 1700 вопросов в неделю а по тому же питону 6000?https://stackoverflow.com/tags
>>1125833Тьфу 170 а не 1700
>>1125833>>1125834Потому что этот супер язык не нужен?
Go это такая быстрая и красивая замена питона+асинкио для написания чятиков. Ну ещё на хайпе случайно докеры на нём сделали. Дискасс.
>>1125833го выстрелил в последние три года, а статистика ведется со времен основания сайта.
>>1126035> вопросов в неделюНеправильно ты маняврируешь, нужно говорить что го такой простой и понятный что по нем и спрашивать нечего.
>>1126041Так и есть, лол.
Для чего хорош го, а где его лучше не использовать?
> хорош гоАсинхронные чятики, сервера обрабатывающие потоки мелких сообщений.> не использоватьТам где неприемлим гц, там где охуенно нужны дженерики и прочий хайлевел.
Добрый день, анон, фронтедер на связи.Пытаюсь развернуть проект, чтобы посмотреть, как взаимодействует реакт с го, в будущем проекте пригодитсяhttps://github.com/olebedev/go-starter-kitустановил golang, прописал gopath, тестовая прога получилась (hello world), в общем, когда прописываю make install получаю хуйню, как на пике. Гуглеж ничего не дал, все зависимости, насколько могу судить, установлены.Yarn установлен глобально, glide установлен глобально, просто, почему-то, не хочется видеть @yarn и @glide и иже с ними.Если просто прописываю yarn install && glide install, все проходит, но, опять же, make server выдает хуиту.Гуглеж не помог, в чем может быть дело?Спасибо.
>>1126294Не нужна тебе, Вовка, такая машина
А просто glide запускается?И что будет, если ввести make glide ?
>>1126154Смотри, rule of thumb: Если твой софт будет крутиться на сервере или в виде демона или в виде консольной утилиты, то его стоит писать на Go. Если твой софт требует GUI, то подумай, может быть ты можешь сделать интерфейс на основе веба, тогда браузер станет интерфейсом для твоей программы.
>>1126294Можешь показать мейкфайл?
>>1126334https://github.com/olebedev/go-starter-kit/blob/master/Makefile
>>1126335Точно, туплю. Попробуйgo get ./...
>>1126337Поясни подробнее за `go get ./...` фронтендеру, который первый день с го работает.
>>1126341Это значит "установить зависимости всех пакетов внутри текущей директории.
>>1126351Не помогло, мейк то же выдает.Попытался новую версию ноды -- чот не то.Такое чувство, что какой-то ВАЖНЫЙ компонент при установке го или мейка пропустил.https://medium.com/@patdhlk/how-to-install-go-1-8-on-ubuntu-16-04-710967aa53c9Это корректный мануал? За исключением GOROOT
>>1126353Ну тебе еще надо glide поставить и походу yarn тоже. Короче ставь!
>>1126353Тебе же явно пишет, что проблема не в гоПоставь glideКогда поставишь, проверь, запускается ли он командой glide
>>1126333С гуй приложениями все понятно. А что насчёт серверных приложений? Го байтоебский же язык. Какого типа приложения можно писать с помощью го?
>>1126371>>1126365>Yarn установлен глобально, glide установлен глобально, просто, почему-то, не хочется видеть @yarn и @glide и иже с ними.Если просто прописываю yarn install && glide install, все проходит, но, опять же, make server выдает хуиту.
Знатоки Пщ, расскажите, пожалуйста, что в этом Пщ хорошего, и, главное, что плохого. Для каких областей программирования этот Пщ предназначен, а для каких нет/не очень?
Речь не про установкуВ консоли напиши glideОн запустился?
Антон, подскажи, как правильно обработать строку "12753 FGGFDN", в массив нужно отправить только данные до пробела, все что справа от пробела выкинуть, данные справа от пробела имеют разную длину и значения.
>>1129428Строку в слайс, из слайса новый слайс с параметрами начала и старта?
>>1129428https://golang.org/pkg/strings/#Split
>>1129432>>1130472а регулярки в голанге не в моде?
>>1130657регулярки там где хватит сплита?
>>1130657Надо делать микросервис с REST API
Котаны, расскажите, какие must-have тулзы надо иметь для разработки на go в 2018? - пакетный менеджер или GOPATH + go install наше все? - управление версиями компилятора или /usr/bin/go норм? - фреймворк для tdd или стандартного t за глаза?
>>1132066>какие must-have тулзы надо иметь для разработки на go в 2018?>go >201847 хромосому.
>>1132078go это новый php, проще говоря стало дохуя вакансий на нем и платят хорошо. Стало быть любить го не нужно.
>>1132079> >47 хромосому. >go >дохуя вакансий>платят хорошоУ тебя уже есть главная тулза - поздравляю.
>>1132098Ты можешь опровергнуть эти высказывания?
Пацаны, в тред таки врывается тот самый Юмпутун, я тут смотрю вы вообще забыли про Голанг, всего 10 тредов за 4 года, не очумели ли, не изучать язык 21 века? Хер я вас позову на свое радио-т.
>>1132079>go это новый phpЕбнутый? Ты хотя бы сравни эти два языка. PHP - высокоуровневой язык с сильным ООП. Го - низкоуровневной. В нем даже классов нет. Это как Си. В вебе нет места Си.
>>1132200>радио-тРедкостное говно, 90% тем - го, эпл, пиар какой нибудь параши.
>>1132582Я не сравниваю языки с техническое точки зрения, я сравниваю степень говноедства основной массы пользователей.
>>1131088ну хуй знает. А зачем тебе остальные подстроки, полученные в результате сплита?
>>1122034странная пикча. php 7.1+ в семь раз быстрее питона в вебе, а на пике это не так
>>1132744>php 7.1+ в семь раз быстрее питона в вебеПыходаун as is.
>>1132877https://benchmarksgame.alioth.debian.org/u64q/php.htmlплез
>>1132894Лол, я же говорю, пыходаун.
>>1132904По существу подискутировал, молодец
>>1132911О чем с дебилом говорить то? Его нужно просто обоссывать.
Анон, я честно пробовал такое загуглить, но чего-то даже хз как нормально. Хочу, собирать инфу с разных ресурсов (ну там обрабатывать и все такое) и переправлять в другой серивис, так вот, собирается это все несколькими горутинами допустим раз в 30 секунд каждая + время на обработку и я хочу чтобы отдельная горутина копила это все допустим минуту и отсылала. Есть ли для этого адеватный паттерн/пример/туториал_для_чайника ?
>>1133243bump
>>1133243https://blog.golang.org/pipelines
Golang уже сколько существует? 9-10 лет? А большого распостранения он так и не получил. Из важных програм, написанных на Go, я знаю только Docker. Более того хайп уже года два-три идёт на убыль. Ничего нового в языке не появляется. Даже Java до сих пор развивается. А Go упёрся в границы примитивного мышление своих создателей. Они так и не смогли generics в язык ввести. До сих пор надо использовать кодогенератор. Да это просто пиздец какой-то! Говно этот ваш Go, сраное, вонючее говно! А те, кто его жрут - пидары, ублюдки и говноеды!
>>1133851Да не бомбит у меня!
>>1119389 (OP)Тут на блокчейн платформе для распределённых приложений раздрают токены всем гитхаб юзерам, которым больше года: https://github.com/GenesisCommunity/go-genesis.Уже эфир обгоняет.Что думаете, ананасы?
>>1133870что терминатор 5 - параша
Поясните что здесь происходит[code="go"]func (c Container) Put(elem interface{}) { c = (c)[0]}[/code](c)[0] <- что это за хуйня, блять?
>>1133878Блять, макаба ебаная https://pastebin.com/5Er4KbZJ
>>1133880Как мы то твоему должны догадаться что такое Container?
>>1133889https://play.golang.org/p/v70RyuD78C3
>>1133899Или даже так https://play.golang.org/p/q1ubTD4NBIF
>>1133899https://play.golang.org/p/gn0lEKXFaIa
>>1133901А зачем там скобки?
>>1133903Из-за приоритета операторов.Взятие индекса имеет больший приоритет, поэтому чтобы сначала разыменовать, а потом взять индекс добавляются скобки.
>>1133905Спасибо.
>>1133908https://play.golang.org/p/bF64_h68fRs
Такой вопрос:Я запускаю из кода процесс cmd := exec.Command("fbi", "-d", "/dev/fb0", "-T", "1", "-noverbose", "-a", "yoba.png") if err := cmd.Run(); err != nil { // panic(err) }Как мне получить id этого процесса чтобы потом убить его?cmd.Proccess.Pid возвращает какое-то левый id.
>>1133938В гугле забанили?https://play.golang.org/p/zU_cucDb2Tq
>>1133941Это только с Start() работает? С Run() не работает.2018/02/07 09:53:41 failed to kill: os: process already finished
>>1134000Ну ты в глаза долбишься? Почитай документацию-то или хотя бы ошибку.Run() запускает и синхронно дожидается выполнения. Ошибка тебе говорит о том что ты пытаешься прибить процесс который уже закончился. А он ясен хуй закончился, потому что ты вызвал метод, который дожидается завершения процесса.
>>1134003Хорошо, тогда такой вопрос. Я вызываю определенный процесс с помощью Run(). После запуска он висит и в определенное время мне нужно его убить. Как это сделать?
>>1134011Что значит висит? Статус какой?
>>1134018Ну он работает. fbi - это утилита, которая передает во фреймбуффер картинку. Покуда процесс работает картинка будет отображаться. В определенный момент мне нужно сменить картинку, для этого я собираюсь убить процесс со старой картинкой и запустить с новой.
>>1134021Вероятно он форкается сам. Кури доки. К го треду это отношения не имеет.
>>1134028Да как не имеет-то? Я в коде запускаю стороннюю программу. Получаю ее PID. Потом с помощью sudo kill <PID> пытаюсь ее убить, а у меня это не получается потому что PID левый, а запущенная программа продолжает работать. Go мне дал PID какой-то хуйни, а не того процесса, который я запустил. А ты говоришь не имеет отношения.
>>1134031Блять, какой же ты тупой. Перечитай еще раз все что тебе уже написали и уебывай.
>>1134031https://www.kraxel.org/cgit/fbida/tree/fbi.cНа, читай исходники, мудила. Смотри как он форкается.
>>1134040Какие исходники, какой си? Я даже не знаю что означает "форкается".
>>1134042Откуда вы такие лезите?
>>1134043Я, например, только начал в линукс вкатываться. Откуда остальные лезут - не знаю.
>>1134044https://en.m.wikipedia.org/wiki/Fork_(system_call)Почитай для саморазвития
>>1134045Спасибо.
> В определенный момент мне нужно сменить картинку, для этого я собираюсь убить процесс со старой картинкой и запустить с новой. exec.Command("killall", "fbi")?
>>1134074Вообще подход довольно днищенский. Нормальный человек бы взял биндинги к либе и сделал обработку картинки внутри процесса.
>>1134074да че там, давай уж сразу, pkill f
>>1134074Пока так и делаю. Но между завершением предыдущего процесса и запуском нового на дисплее проскакивает консоль. Поэтому хочу сначала вывести новую картинку поверх старой, а потом закрыть старую.
>>1134078>Нормальный человек>взял биндинги к либеКакой либе? xlib? Нет спасибо.
>>1134087Поэтому хочу сначала вывести новую картинку поверх старой, а потом закрыть старую.exec.Command("killall", "--older-than","1ms","fbi")Убивает все fbi старше чем 1ms - одна милисекунда.
>>1134100То что нужно!
Привет, котоны. Запилил небольшой веб-сервер и возникла проблема. Если бинарник запускать вручную, то все работает хорошо. Если же прописать его запуск в rc.local, то вместо главной страницы я получаюСайт не отправил данных.ERR_EMPTY_RESPONSEПочему так?
>>1119389 (OP)Тред, можно ли с помощью Go реализовать что-то типа графической оболочки и связующего элемента для БД?Есть БД с заказами, работниками, запросами, процедурами, триггерами и хотелось бы это все завернуть с помощью Go.Можно ли так, подскажите соурсы или альтернативы реализации.Спасибо.
>>1134590Можно с помощью веб-интерфейса. Или тебе десктопное приложение нужно?
>>1134590На этом тоже можноGo + Qt + Mysql
>>1134610Десктоп нужно, на веб-интерфейсе уже делают люди.
>>1134667Будет отлично еще вариантов услышать, посмотрю каждый.
>>1134590https://github.com/avelino/awesome-go#guiпосмотри в списке, может что приглянется.Под десктоп я бы делал, так по приоритету (больше -> меньше)Native gui (C# WPF / Cocoa Obj-C) -> C++ Qt / Imgui -> Electron -> Все остальное.Ну если, ты только с Go дружишь, можешь попробовать go-imgui (ибо go-qt уже посоветовали). Ну если честно, то go и гуй, это такое себе (вот через пару лет, можно будет глянуть, а пока мало либ).
Антон, скажи что там с работкой на го? Хочу побаловаться этой хипстерской хуйней, но не могу въехать. Смысл этого языка? Пилить круды? Настоящий хайлоуд? Системное проганье? Игрули? Мобилы?
>>1135163>Пилить круды? Настоящий хайлоуд? Системное проганье?Вот это точно, на счет остального не знаю. Круды пилятся легко, для хайлоада подходит потому как язык компилируемый и довольно шустрый. На счет системного проганья - сам проверил, сделал несколько встраиваемых систем с использованием го. На самом деле нормальные люди пилят на си, но я не люблю си ибо он стар, неуклюж и сложен. На го все то же делается гораздо проще и быстрее.
>>1133851K8s, etcd
>>1135175Я крудописер, делаю MVP, если что-то выстреливает, то потом становится тормозным гавном потому что языки интепретируемые, смогу ли я легкостью рельсы перескачить на го? Ну так чтобы пару либ и всё работало из коробки, минимум приседаний.
>>1135439На счет рельсы ничего сказать не могу, но вот>чтобы пару либ и всё работало из коробкиэто про него. В первом веб-приложении, что я запилил на го я использовал всего две либы: для MySQL и для маршрутизации, остальное из коробки. MVC-модель составил сам, написал несколько функций для удобства и получился очень компактный фреймворк.
>>1135175> си ибо он стар, неуклюж и сложеСейчас системное прогонье нужно делать на Rust. В сравнении с ним Go слишком медленный.
>>1136054И не только системное. Вебня, игры, да все что угодно лучше на расте, чем на го.
>>1136057>ВебняНет. Как раз для веба Rust подхожит совсем плохо. Слишком низкоуровневой. Впрочем, и Go не намного лучше. На вебе правят бал совсем другие.
>>1136063http://diesel.rs/Ты просто попробуй.
>>1136066Тьфу, блять, не тот линк.Вот правильный: https://rocket.rs/
>>1133870Уже сегодня аккаунт со всеми репозиториями удален. Даже гитхаб-странички еще не обновились, лол: >>1136060
>>1136067>Rocket doesn't have built-in support for databases yetясно
>>1136074Ну и нахуй оно нужно? diesel во все поля.
>>1136079А еще ООП нету
>>1136080ООП не нужно. Плюс оно там есть.
Карочи не палите годноту, пусть жрут свою ноду )))
>>1136080Вместо ООПа там куда более мощная система типов.
>>1136422> Мощная система типов> GO> Отсутствие шаблонов> Ебашу для каждого типа дублирующую функцию
>>1136493> Ебашу для каждого типа дублирующую функцию> Доказываю всем что дженерики не нужны!
>Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.Анон, просвяти про флаги для билда
>>1136493Вообще-то разговор про раст был. Там все есть.
> Готред всплывает со дна только с залетным жирдяем решившим постебаться с говноедов от скуки> Индекс популярности пщ стремительно падает даже на фоне мертворубей> Работодатели неспособные найти пщ кодеров готовы сами переучивать хоть скрпитодетей на гоЧто-то пошло не так? Гуглу нужно ещё хайпануть малехо?
>>1138466Вакансий стало довольно много, поэтому и хантят. А то что вниз пошло, ну пошло и пошло. В последнее время много нового появилось, и раст и свифт. Так что неудивительно что фрагментация увеличивается.
>>1138466Так-так, что тут у нас? ааа, это же ТАЙОБЕ. Где всегда растет какая-нибудь ху* VB .NET, PL/SQL, SQL - programming language =), так ладно html5 еще не завезли туда.Опаньки, внезапно падают web-oriented языки, серьезно?Javascript - падает. Это вообще, смешно. У нас наверное все конференции теперь про VB .NET, а вовсе не про React/Angular/Vue/Aurelia/ Node/Express/Koa/Hapi/Docker/Heroku/AWS и еще 10к веб-технологий и веб-сервисов.
>>1138639Я еще могу понять Си растет, ибо IoT, ROS, Robotics, Embedded devices, Smart Homes, Python extensions (CPython). Но еп... JS падает, ну нах...
>>1138640А что не так?..«Фреймворки» это и есть вершина айсберга, как с посраллем было.
Кто-нибудь сталкивался с такой поеботой в Голанде? Возникает, если в хелловорлде указать не main пакет. Должна же быть по идее другая ошибка, а тут вообще нихуя не понятно. Кстати, при первой попытке запустить с неверным названием пакета, просил установить эту самую ntvdm, после которой началась эта ошибка.
>>1140035Забыл картинку.
>>1138640>IoT, ROS, Robotics, Embedded devices, Smart HomesНе в России
>>1140036> указать не main пакет> линкер собрал exe без головы> голый объектный модуль> Мастдай определил его как 16 бинтый DOS файл и попытался запустить.Как то так.
Анон, подскажи бест_практис по написанию высоконагруженых сервисов на Го. Вот предположим мне надо написать сервис, который будет по одному URL отдавать одну из 400к строк. Особой выборки нет, просто по очереди отавать строку за строкой. и все это где-то 450 запросов в секунуду. Планирую взять какой-нибудь fasthttp. Строки может все в память прочту или использую MySQL просто он уже развернутый есть
>>1141974само собой я не прошу за меня строить, но может ты скажешь чего почитать, куда посмотреть
>>1138466ЙОБА-индекс то еще чудо чудес, нашел чем мериться.Го подкупает техническими решениями которые он предоставляет, а не верой в совершенный код (особенно для веб/сетевого макакинга).Более того его стоит любить только за то, что он плюнул в лицо ООП и не ушел в ФП (где народ тискает у другу друга за лямбды генерируя новый молодежный спаггети-код). То есть, стоит любить за старый добрый процедурный кодинг.И пока народ натирает на всякие асинк-авейты (или калбэчит в подворотнях), гофер пишет не парясь как есть и сразу получает все асинхронно (как на самом деле и должно быть).Ну и так же не забываем что нет никаких вирт машин и прочих чуда чудес невидимого мира (JIT-компиляции например).В реале у го есть еще один большой скрытый плюс - когда он появился, отпала необходимость писать на джаве или упаси на node.js или питоне.Он реально смог вклиниться в нужное место и никуда уже не пропадет (так как технически необходим, а не дань какой-то очередной моде, которая ничего и не решает сейчас на рынке)>Что-то пошло не так? Гуглу нужно ещё хайпануть малехо?Так вроде скоро начнут dart всем заливать в уши? Не?Го это про другое - чисто технический выбор для нагруженных, многоядерных/процессорных систем с асинхронщиной.Идеальный язык для веб-разработки на сегодня.
>>1142522>Так вроде скоро начнут dart всем заливать в уши?>Идеальный язык для веб-разработки на сегодня.Проиграл в голос сейчас. До вашей деревни все с лагом в пять лет доходит, да?
>>1142575Вроде какой-то выпук и вроде старался, но нифига не понятно. Что сказать то хотел?
>>1142522Поясни тогда, почему Go в 2 раза медленнее пишет в файл , чем java?? Попробовал записать 200.000.000 цифр
Что для создания GUI используете?
Что такое дженерики?
>>1142614генераторы кода.например захотел ты, чтобы твоя функция была универсальной к любым параметрам (которые ты задумал).Вместо того, чтобы писать сто раз:f Add(int a, int b){return a +b;}f Add(float a, float b){return a +b;}f Add(short a, short b){return a +b;}f Add(double a, double b){return a +b;}___можно просто написать в том же (C++):template<typename Type>Type f(Type a, Type b){// ну и здесь ты напр. обрабатываешь, какие-то эксклюзивные ситуации связанные с конкретным типом.return a + b;}
>>1142667Но ведь это легко заменяется пустым интерфейсом?
>>1142671Ты проебываешь типобезопасность. Вместо статической проверки типов на этапе компиляции, ты получаешь проверку в рантайме, которая может покрашится.
>>1142594Говнокод в студию!
>>1142667Чтобы завести дженерики, нужно сначала завести перегрузку функций
>>1142725Хуйни не неси. В расте нет перегрузки функций, но есть дженерики, например.
>>1142675С какого перепуга будет крашется? (если конечно ты сам в условиях панику не добавишь, но паника это не "крашится")
>>1142726Что за новый тренд, не могут осилить перегрузку функций (ну конечно же, очередное "ненужно")
>>1142726Что выглядит убого.
>>1142734Для чего тебе нужны перегруженные функции, приведи пример.
>>1142609Бамп.
>>1142614Гугли "параметрический полиморфизм".>>1142725Неверно.
>>1142779Ухты, вопрос из девяностых!!!Чтобы на однотипное действие, с разной сигнатурой функций - было одно имя.Банально, рассмотрев перегруженные функции в API ты сразу можешь бегло понять с чем эта функция работает вообще, а не ломать голову, как там автор ее назвал.
>>1142801Зачем тебе гуи в 2018? Возьми браузер и пили свои формочки под каким-нибудь ангуляром (или что сегодня там в моде).
>>1142821Вопрос решается передачей объекта с конфигом или как в го, набором функций с разными именами.Когда у тебя одна и та же функция решает разные задачи в зависимости от типов аргументов, это так же плохо, как использовать одну переменную для совершенно разных задач.
>>1142724package mainimport ( "bufio" "strconv" "os") func check(e error) { if e != nil { panic(e) }} func main() { f, err := os.Create("file.txt") check(err) defer f.Close() w := bufio.NewWriter(f) for i := 0; i<= 100000000; i++ { w.WriteString(strconv.Itoa(i)+"\n") } w.Flush()}
>>1142838Какой размер буфера в го и в жаве?
>>1142823Браузер? Программирование деградирует.
>>1142850Только программисты, и го тому яркий пример.
>>1142824>Вопрос решается передачей объекта с конфигомБольше магии и разовых объектов для простых функций, о да. Снова разрабы решили не париться и переложили бойлерплейт на плечи программистов, а те и рады.>Когда у тебя одна и та же функция решает разные задачи в зависимости от типов аргументовТы понимаешь вообще для чего перегружают функции? Ты мой пост прочитай, где ты увидел что я про разные задачи говорю?? Сам придумал условия, сам опровергнул?
>>1142883Просили привести пример. Примера нет. Нет и предмета разговора.Передача явного параметра удобней чем рысканье по докам в попытках разобраться какую из 30 версий метода вызывают.
>>1142839Java:FileWriter actually uses its own fixed-size 1024 byte buffer. The BufferedWriter on the other hand, show that it uses and 8192 byte buffer size (default), which can be configured by the user to any other desired size.В го по умолчанию 4096, ну если даже буффер на 2 помножить, то скорость не меняется
>>1142675type assertion же есть.
>>1142910Оно работает в рантайме. Нет нужды проверять в рантайме то, что прекрасно можно проверить в компайл-тайме. Когда ты последний раз копипастил slice tricks?
>>1142883Перегрузка функций - условно-абсолютное зло и антипаттерн, как и, например, гото. Это просто плохая идея. Не путай перегрузку функций с параметрическим полиморфизмом ("дженерики" на языке быдла).Единственный оправданный кейс для перегрузки - изменение поведения в зависимости от числа переданных аргументов.
>>1142667Спасибо
>>1142994>кококок нинужно!! яскозал!!
>>1142885>Передача явного параметраЧего???>в попытках разобраться какую из 30 версий метода вызывают.Ох лол
>>1143062Ты уже покажешь реальный пример, где перегрузка решает проблему лучше альтернативных вариантов, или так и будешь ололокать?
>>1142885>Просили привести пример. Примера нет. Нет и предмета разговора.Пример чего? Перегруженный функций? Ты совсем упоротый?
>>1143065Да, будь добр. Покажи проблему и как она решается при помощи механизма перегрузки.
>>1142994>Единственный оправданный кейс для перегрузки - изменение поведения в зависимости от числа переданных аргументов.Ляпнул и сразу наружу весь свой опыт "программиста" вывалил.Или джава-джун, который видел только как джависты компенсируют отсуствие дефолтного значения у аргумента, или же скрипто-макака, где толком не было реальной работы с типами.Что же вас в раст то тянет, в системный то язык, с таким опытом??
>>1143075Если уж на то пошло, то в расте нет и дефолтных значений. Есть только Default трейт, который один хер требует явной передачи параметра. varargs в целом удобная фича, когда она используется в стиле ...rest.
>>1143064Каких альтернативных вариантов? Ну раз ты такой способный, на:Что лучше:save(User)save(id, name)save(ContainerUsers)save(WebForm)или же:saveFromUser(User)storeFromNativeData(id, name)preserveFromUserList(ContainerUsers)persistenceFromWebForm(WebForm)Так что тут лучше смотрится? Одно-именный метод, выполняющий из разных "структур данных" но одно сохранение, или же маскарад наименований, которые делают одно и тоже, но не факт что называются одинаково (и не факт что будут начинаться с "save")
>>1143080Ну парни вообще отличились, что я могу сказать. С вечным желанием сделать что-то необычное, показать свою уникальность - они, конечно, справились. Но нужно ли это "не такое как все" изящества на рынке - конечно нет. Люди продукты пилят, а не стараются перед друг другом отличиться.Это имхо, а так конечно же сейчас больше зависит от того, сколько хайпа может зависти на тот или иной язык.
>>1143084fn<T: Into<User>> save(user: T)То что ты не знаешь как нормально можно решить проблему и при этом сделать её расширяемой, не означает что предложенное тобой говнорешение хорошее.
>>1143088Я специально добавил разные структуры данных, которые не могут быть использованы с обобщением (раз уж пугает слово "дженерики") ибо алгоритм работы разный, так же эти данные не могут быть "обернуты" в полиморфизм.Так что уноси свое говно, перегрузка важная вещь и реально делает код удобнее в использование (если ты не джун-диверсант) реально бывают случае, когда добаляется новый тип данных и нам нужно только перегрузить функцию (где под капотом скармливаем нативному методу типа save(id, name)).
>>1143091>Так что уноси свое говноНадеюсь ты понял, что обобщение тут не работает, это понимание придет со временем, когда начнешь по-настоящему программировать, а не учить один лишь синтаксис у языков, чтобы казаться умным.
>>1143091Мань, в твоем случае надо лезть в модуль где твой save лежит и добавлять частный случай. В том варианте который показал я ты просто где тебе нужно пишешь реализацию для своего типа данных.Напримерimpl Into<User> for (i32, String)чтобы скармливать в метод кортежи видаsave((32, "shit"))
>>1143094Хватит маневрировать, я показал как удобно читается API с перегрузкой, с разными структурами данных. И что это будущее наступило еще в годах восьмидесятых. Нам глубоко пофигу - частный там случай или нет, нам важно куда-то "заперсистить" имеющиеся у нас данные и мы лишь выбираем подходящую сигнатуру (зная заведомо что наш сервис-объект отвечает за сохранение).Понятно что если ты увидишь saveFromUser(User)persistenceFromWebForm(WebForm)Первое что будет в голове - "эти два метода делают одно и тоже или нет??" - и вот тут ты полезешь в доку, чтобы перестраховаться, ведь перегрузка ненужна.И хватит меня троллить (хотя не исключаю факта что ты просто тупой), в жизни не думал что буду кому-то объяснять - какой удобный кейс - эта перегрузка
>>1143100>в жизни не думал что буду кому-то объяснять - какой удобный кейс - эта перегрузкаЕсли ты реал программист, а не синтаксический червь, расскажи, где вам такое в уши заливают, что вот перегрузка зло, исключения зло, ...все зло, а писать когда как в 70-е круто и модно?
>>1143104>а писать когда как в 70-е круто и модно?фикс:а писать код как в 70-е круто и модно?
>>1143100Тебе уже объяснили, что твой костыль хуевый и решается нормально другими средствами.По факту в приведенном тобой примере метод сохранения делает одну полезную вещь: кладет какие-то данные, предположим, в базу. При написании нормального ортогонального кода, ты отделяешь все юз кейсы, связанные с конвертацией данных, для того, чтобы метод сохранения непосредственно данных не зависел от того, что ты решил добавить новую форму.
>>1143007-> /b>>1143075Ты совершенно не понял, о чем речь. Можешь перечитать пост, можешь не перечитывать. Кстати, это тред про го, а не про раст.>>1143084Вот это тот самый ужас, о котором я говорил. Скриптоманькам, впрочем, не привыкать. Кроме того, уровень владения английским как бы намекает на уровень владения навыками программирования.>>1143104Перегрузка и исключения (aka "гото") - это как раз артефакты из 70-ых. С тех пор прошло много времени.
>>1143108Поддвачну вот этот пост и отмечу, что это буквально первая вещь, которой учат в любой книжке или курсу по написанию программ.
Парни, что вы думаете насчет зарплат у гоферов? (~+15% java, python...) Чому так? Хайп? Зачем дяде платить больше за хайп, если его интересуют только $? (не гугл офк)
>>1143187Сам себя похвалил? Узбагойся
>>1143108Тебе показали для чего перегрузка нужна, а не как нужно апи писать.Если тот "сэйвер" не имеет состояния, он как раз выполнен в лучших традициях современного программирования ("анемичная модель предметной области").Но, опять же, тебе показали для чего нужна перегрузка с разными структурами данных, хера ты там додумываешь какое-то свое поведение какому-то псевдо-коду и рассуждаешь потом, что это плохо, ты вменяемый вообще?? (если настолько упорот, замени save на build и будет тебе билдер, но опять же, не маневрируй, тебя тут учат именно перегрузке)А теперь важное (реально теорема и доказательство)Перегрузка не нарушает никаких таинственных знание по проектированию, банально компилятор делает тоже самое - добавляет к именам функций некий свой хэш (зависит от указанных типов в аргументах) типа "save$isl()" или "save$kjLL()" (теперь имя функции это не только его прямое имя но и типы аргументов - то есть сигнатура)доказательствоНикак это не может повлиять на проектирование (и быть антипаттерном каким-то) потому, что абсолютно без разницы - определяется ли метод по одному только имени - или же по сигнатуре (имени и типам в аргументов)
>>1143212>метод по одному только имени - или же по сигнатуре (имени и типам в аргументов)То есть (разжую для самых самых) в твоем расте или в го идентификатором функции является это:saveFromSome(int, float)а в нормальных языках это:save(int, float)И никак это ни на что не влияет. НИКАК
>>1143194Вероятно один гофер делает полезного кода больше, чем мартыхи наворачивающие один фреймворк на другой усложняя проект на пустом месте.Яркий пример - гофер тупо проинжектит через main все зависимости в небольшом проекте, а какой-нибудь джавист определенно возьмет целый спринг и потом будет копаться в нем и побеждать всей командой.Если одним программистом можно заменить целую команду месителей грязи - то я бы ему платил +15-30% $
>>1143212Ладно мань. Накопишь опыта, поймешь что не так в твоем видении мира. Пока что ты предъявил говнокод в качестве обоснования фичи, которую сейчас не тащат в современные языки. Мы тут все прекрасно знаем как работает перегрузка и многие ей пользуются в тех же скриптовых языках повсеместно. Но это не значит что от этого она стала хорошей идеей.
>>1143195Чини детектор, обиженный. >>1143212>это хороший стиль проектирования, потому что под капотом компилятор делает то же самоеГениальная цепочка рассуждений, тут только в /me отправлять. Ты, конечно, молодец, что уже в школе интересуешься всем, за хайпом следишь и все такое, но этого недостаточно, чтобы не быть школотроном.
>>1143218Этот манямирок гоферов.
>>1143084А в го для такой задачи разве не используется интерфейс?
>>1143445Использует, но это слишком сложно для адептов говнофичей.
>>1143270>Накопишь опыта>в твоем видении мира.Тебе привели железные доказательства того, что два различных идентификатора функции НИКАК НЕ ВЛИЯЕТ НИ НА ЧТО (только на восприятие, если ты неопытный программист и не понимаешь что такое сигнатура функции)Так что хватит маневрировать, не позорься. Просвещайся, пока мне не лень тебя кормить.
>>1143351Я соглашусь с тобой сразу как будет норм ответ на >>1143194 Пока топовый ответ: >>1143218Язык убогий, нормальных адекватных облегчающих вещей нет -> качество/скорость будет ниже, но зачем платить больше за это.
>>1143186> С тех пор прошло много времени.Лол блять. Все эти ваши охуенные абстракции до сих пор внутри живут на сишке и этих goto. Ебаные макаки везде.
>>1143712>до сих пор внутри живут на сишкеТы не поверишь, но сишка до сих пор компилируется в машинный код, машинный код до сих пор исполняется на процессорах, процессоры до сих пор из транзисторов, ну и вообще там до сих пор электрончики туды-сюды прыгают, прикинь? Ты не понимаешь значение слова "абстракция", но для байтослесаря это нормально, так что не парься; байтослесарь - не программист.
>>1143695Тебя уже даже в других тредах детектят и обоссывают, лол, кто бы говорил про "не позорься". мимо
>>1143746Лол, как раз наоборот. Человек, пишущий на высокоуровневых языках не программист.
>>1144062Помню в юности, встретил такого "программиста", он мне рассказывал, что даже ассемблер это все фигня, а реал тру пишут на машинном коде и я развесив уши слушал и верил.Как же приятно встретить таких специалистов тут.
>>1143748Лол, спрятался и тихо сам собой бугуртит, слили уже тебя, иди в другой тред лови фантомов.
>>1144153Чини детектор, неудачник.>>1144062Ну, хорошо, слово "разработчик" подходит больше, уговорил. От "программиста" веет проперженными труханами и усики-пропуск-в-трусики.
>>1122218Уже давно ходит тема, что использование = ис бед бай дизайн из-за того, что оператор сравнения есть ==, я думаю лет там через 10 все переменные будут чисто через : юзаться
>>1145637Жирный, уйди.
>>1122218чтобы компилятор различить объявление от присввоения. Хуй знает почему нельзя было сделать автоматически, наверное чтобы неявностей по типу очепятался-проебал пересенную/содержимое было меньше
>>1145679Блять, ну вы и мудаки.:= это оператор для объявления переменной с автовыводом типа. Присвоение делается через =
>>1145682а я, блять, что написал, мудила ты пиздоглазая
>>1145685> s := "2"> s := toInt(s)Вот зачем.
>>1145686ну тогда объясни почему нельязя было это на обычное присвоение повесить
>>1145706Мань ну ты че?Потому что в приведенном мною примере используется shadowing. Если бы там было простое присвоение, ты бы получил ошибку компилятора о том, что ты пытаешься стринг в инт пихнуть.
>>1145707нет, не получил бы, просто сменился бы тип. Как в скриптопараше сделано.
>>1145735Это не скриптопараша. Здесь ты типы указываешь явно. А значит и смену типа ты тоже указываешь явно.
>>1145735Потому что в го статическая типизация>>1145686Разве этот код будет работать? Тип присваивается единожды>>1145706Чтобы различать, когда у нас создается новая переменная с типом, который возвращает функция, и переменная, у которой тип известен.
>>1145738Будет, но придется новый лексический скоуп добавлятьhttps://play.golang.org/p/PzsEzv6LhrK
>>1145740Ну так будет, но это немного не тот случай.
>>1145738>статическая типизацияНенужное говно без задач. Сажи треду.
>>1145784Одноизвильный дебилоид подъехал. Куда уж мы без вашего мнения-то.
>>1145788Даже в Java планируют отказаться от статической типизации к 12й версии, потому что это уже давно устарело.
>>1145807> Java> Считать говно уровно кобола хорошим примером
>>1145807Шизик, ты почему режим не соблюдаешь? Опять какой-то бред несешь.
>>1145807
>>1145807Хоть чел и толстит, но все же, я тоже стал задумываться - нафига статическая типизация. Нет, конечно, строгая типизация нужна (чтобы не складывать строки с числами), но нафига статическая?>Якобы она помогает ловить самые страшные ошибки и прям еще на этапе компиляции.Блин, да так и так тесты писать. Типа нужно больше в тестах страдать? Да нет, зачастую в динамических языках тесты еще короче, за счет динамизма исполнения (и не нужно байткод или рефлексию теребить ради динамизма). И если ты пишешь функции через if/switch, где сразу отбрасываешь все кроме нужных типов, то вообще заморачиваться не нужно (да и никто никогда в этих юнит тестах особо и не заморачивается). И да, на всякие null ситуации статик-господам тоже нужно делать проверку (прям кусочек динамической радости в их суровом псевдо-статичном мире).>Якобы помогает в больших проектах.О да, 5000 классов и интерфейсов в жаба-проекте этому способствуют, конечно. Как ты в динамическом языке через страдания будешь разбираться с типом, так и в статике играть в угадайку, что за очередная имплементация из сотни объектов провалилась там через интерфейс.В общем, без хорошей документации в большой проекте и так и так сложно будет.И так, тесты все равно писать, документацию писать... То что мы получаем? Только убогую задержку. Пока очередная жесть компилиться - скрипт уже выполнился. Пока оно компилиться и потом еще перезапускает сервер, ты уже через "альтаб" все проверил (или просто повернул голову на второй монитор, особенно если какой-нибудь пхп с лайф-кодом). А этот костыль в виде обобщенного программирования (дженериков)? Если на контейнерах еще ниче смотрится, то во всем остальном это какой-то длиннющий, адовый синтаксис (в джаве вообще фиг в строку уместишь этот рай из угловых скобок и длинных типов).PS.Ну еще и эта мода с автовыводом типов - без IDE вообще не разобраться что там вернулось с функции, так что визуально получается та же динамическая причуда, но со страданиями (бегаешь мышкой по коду и гладишь каждую переменную, хотя ты вроде как взял язык со статик типизацией).
>>1145984У меня к тебе пару вопросов:1) Какой максимальный объем проекта, который ты писал? В строках кода.2) Писал ли ты когда-нибудь на хаскеле или другом подобном языке, где система типов гораздо более мощная, чем то говно, которое есть в жаве
>>1145987>1) Какой максимальный объем проекта, который ты писал? В строках кода.С линейкой не бегаю, да и как считать когда у тебя на пол страницы портянка из доков (особенно в интерфейсах) или в чужом проекте (наверное любители помериться ЧСВ придумали какую-то линейку для системы контроля версий, но я не в курсе)? Скажу, что пишу более 12 лет (прям работаю, а не там в школе бэйсик в тетрадке рисовал или дома игрался), проекты были разные и очень большие и видел всю энтропию с которой обрастает любой код (зачастую из-за проблем документации и каких-то разъясняющих моментов для всей команды).Так что тут вопрос скорее в том, как решать проблему возрастающей сложностью и то что статические типы не особо тут и помогают (так как на большой проект у тебя будет херова туча абстрактных сущностей, которые ты тупо в голове не удержишь чтобы даже понять, а в динамик языке у тебя всегда по сути будут либо контейнеры (перечисления), либо дата-структуры (данные), либо примитивы - чаще строки, булев и целые числа).>2) Писал ли ты когда-нибудь на хаскеле или другом подобном языке, где система типов гораздо более мощная, чем то говно, которое есть в жавеЧем тебе более "мощная" система типов спасет? Как я уже говорил, проблема и не в типах, а в возрастающей сложности. Единственное что тут может спасти - это обобщаться сложность (абстрагировать, упрощать, сводить к общему). Есть ли в хаскеле инструменты или парадигмы ФП позволяющие делать это? В ООП есть (это особо ярко видно когда в методах почти декларативно (можно сказать - на боле высоком уровне) делаются вызовы какие-то объектов и таких вызовов не много и иногда даже нет управляющих конструкций)
>>1146001...один момент. Я не хочу сказать, мол вот что-то есть в ООП, а в ФП этого нет и типа плохо, "зафасадить" можно в любой парадигме это и так понятно. Я как раз спрашиваю есть ли какие-то свои другие инструменты в ФП? Потому что если нет, то ничем это от того же ООП не будет отличаться (куева туча сущностей и сидишь собираешь пазл по этим типам)
>>1146001Тебе определенно стоит изучить ФП. Расписывать не буду - раз у тебя 12 лет опыта, то ты гуглом пользоваться, наверное, умеешь. Сейчас со стороны прям очевидно, что у тебя достаточно узкий кругозор не хочу обидеть, извини, если что.мимо
>>1146010Дваждую. Это как пытаться объяснить нахуя нужен дворак, человеку который привык пользоваться кверти.
>>1145984>Пока очередная жесть компилится - скрипт уже падает в райнтаймеПофиксил.Срач динамика vs статика - это надежды против гарантий, почему последнее в разработке крупных систем предпочтительнее, надеюсь, объяснять не нужно. Наличие null в текущем виде - очевидный проеб для современного языка, дизайнеры того же свифта оказались более обучаемыми.Я вообще охуеваю от того, что эта тема так часто поднимается. Разве не очевидно, что если что-то можно спихнуть на надежный кудахтер, который не ошибается и не устает - то это сделать нужно? Никто же не спорит, что ci/cd - это пиздато. Перенос проверок из райнтайма в компайлтайм - то же самое.
>>1146029Более того, тесты придуманы не для того, чтобы проверять типы, чем должен заниматься компилятор.Тесты придуманы для того, чтобы проверять логическую корректность кода, дизайнить интерфейс до его реализации и для дублирования логики другими словами, опять таки для увеличения надежности.
>>1146010Ну так объясни. Я прекрасно имею представление о ФП, я просто не понимаю, что ты хочешь там выдать за серебряную пулю? На самом деле ни ООП и тем более ни ФП (без обид, но многие ФП-сторонники и не щупали больших проектов) не имеет инструментария для решения задач такого уровня.Реальный пример решения сложности (как пример из реального мира, а не мира бизнес приложений) - это то как пишут игры. Зачастую пишут или берут движок, скажем на С++, а бизнес логику выносят в какой-то скрипто-декларативный язык (иногда на привычные языки, типа питона). И получается что реальная значимая вещь (бизнес-логика игры, описания уровней и прочие) пишется уже на другом уровне, где даже типы то не важны, а важна вся эта логика (где бы эта логика могла даже затеряться из-за статик типизации и необходимости заворачивать что-то в очередные паттерны)Можно ли так сделать (обобщить/абстрагировать) это в ФП до такого уровня - да конечно можно, можно и в ООП. Но возвращаясь к нашей теме - статическая типизация тут роли не играет вообще и никак не поможет.PS Если ты реально хочешь проникнуться в мою мысль, а не просто с пеной у рта отстаивать свое мировоззрение, приведу один пример:в какой-то игре (по-моему майнкрафт, деталей не помню) был баг, который обнаружили игроки. Смысл его заключался в том, что если убить какого-то осла с лутом, под каким-то зельем и определенными вещами в луте, переходя через какой-то портал (ну буквально чуть ли не в определенной фазе луны) - то с юнита(осла того) выпадал двойной лут.И суть этого бага в том, что в реально сложной системе, где реально туча взаимосвязанных по логике сущностей (где есть магия, зелья, порталы, ослы...) - появляются совсем другие по уровню ошибки, где проблема с типами уходит в самую дальнюю полку (да вообще теряется просто, так как такая сложная система просто до блеска покрывается тестами и если была бы динамическая типизация, то проверкой на типы, в таких тестах было бы самое простое и малозначимое для всей системы).Так что статическая типизация, это скорее старый хак для удобного использования памяти (аллокации её) и не более, так как в сложных системах, проблема типов уходит далеко на второй план. А если кому-то в 2018 еще нужна помощь в том, чтобы компилятор их ругал когда они передают строку, а не число в метод - то это уже какой-то аутизм (ну серьезно если это число в строке, то метод бы сам привел к нужному ему типу и вычислил или же отругал в противном случае если аутист не проверенные данные и просунул невалидное число).Не хочу холиварить, но за 12 лет опыта, можно проанализировать весь опыт и понять - что писать приложение быстро и просто - куда важнее долбежки в типы, рефлексию, дженерики и паттерны (некоторые).
>>1146033Типичная необучаемая обезьяна. Скриптопараша в игровых движках нужна, для того, чтобы1) Максимально сократить срок получения результата для вещей, которые подбираются опытным путем. Нет нужды пересобирать все двигло для обновления логики поведения моба. За 12 лет ты мог заметить что кресты пиздец как долго собираются2) Логику часто пишут геймдизы и прочие люди, которые вообще в рот ебали это ваше программирование. Еще для них придумали блюпринты. Может ты тоже будешь на блюпринтах теперь кодить? Быстро и просто, никакой долбежки!
>>1146034Как же тебя разорвало. Пример с играми, был просто примером из реального мира, о том как решают проблемы со сложностью и о том как та самая типизация там и ненужна вообще (и даже мешает - пример с долгой компиляцией С++).Нечто подобное делается и в крупных приложениях, достигая декларативного эффекта, но пример оттуда был бы какой-то абстрактный (поэтому я показал пример на играх).То есть, мы обсуждаем проблему типизации и о том как она не нужна (и даже теряется в крупных проектах, так как требование к тестам увеличивается и так), а ты мне отвечаешь как делают игры - как тут можно вообще диалог вести, когда ты даже не держишь нить разговора?
>>1146031>Более того, тесты придуманы не для того, чтобы проверять типыЛол, проиграл чуток с этого мастера знаний. Тесты придуманы чтобы проверять программу на ошибки (корректность работы программы), а что там стало причиной ошибки, дело третье.
>>1146033>Ну так объясни.Я же сказал, что не буду объяснять. Если тебе интересно, то ты и без меня можешь сам во всем разобраться, текста на эту тему написаны гигабайты. Ни о какой серебряной пуле я не говорил, и никакого "своего мировоззрения" я не обозначал и отстаивать не собираюсь; к апологетам type-oriented programming я тем более никакого отношения не имею. Я сказал ровно то, что постом выше написано.Если у тебя есть какие-то конкретные вопросы, я постараюсь помочь, но катать пасты на изъезженные темы мне элементарно лень.
>>1146044Тесты не проверяют программу на корректность.
>>1146029Очередная вера в то, что проблема типов самая яркая проблема в программирование.То что программа падает в рантайме не самое страшное для динамического языка, у динамического языка выше шанс появления плавающих ошибок - то есть, чтобы писать корректно на динамическом языке - скилл должен быть выше.Гордиться тем, что компилятор показывает, что ты где-то всрал тип данных (корректность данных для динамического языка) - ну просто верх скила разработки, да?
>>1146048>Я же сказал, что не буду объяснять.В разговор то зачем влез тогда?>Если тебе интересно, то ты и без меня можешь сам во всем разобратьсяВ чем разобраться то? Я говорю нет там инструмента, мол фигня полная, и типы не решают (кроме аутизмо-проблемы). Да и вроде (точно не помню) само ФП к типам никого отношения не имеет, матанская парадигма, далекая от мира железок в пк. >текста на эту тему написаны гигабайты.Ох, какой манямир. Тут ты меня на лопатки положил буквально.Вы все такие из ФП маневровые? :)
>>1146049В золотой фонд цитат.
>скилл должен быть вышеСильное заявление. Ну ты понял, превозмагатель.Корреляции со скилом не вижу. Мы всё же не в 60 году на перфокартах программируем, когда один раз написал и ждешь неделю. Программу ты запустишь и проверишь на работоспособность в большинстве случаев. Ошибка выявленная на этапе компиляции вылезет ещё до запуска программы. Это экономит время. Время - деньги. Всё просто. Потому, кстати, nullable references и были названы ошибкой на миллиард. Хорошо, что всего через 50 лет в современных языках и это проверяется на этапе компиляции. Значит ли это что нужно обмазываться типами как сумасшедший и пытаться выявить все возможные ошибки на этапе компиляции? Нет. Разумно использовать возможности компилятора для облегчения себе работы? Да.
>>1146056>>1146050
>>1146050>Очередная вера в то, что проблема типов самая яркая проблема в программирование.Это где я такое писал? Про "яркость" проблемы ни слова не было, было про то, что статика > динамика.>Гордиться тем, что компилятор показывает ... верх скила разработки,Это где я такое писал? Ты частенько приписываешь мне что-то левое, на что в сообщении не было даже намека, это что-то в твоем динамическом мирке опять попуталось?Особенно проиграл с "верх скила разработки". Намакачил такой везде нужные типы данных в динамикодрисне, обмазал тестами и побежал одноклассникам хвастаться, это же ебовый скилл, не то, что у статикодебилов, да? Лолблядь.
>>1146054Ты какую-то хуйню несешь. С тобой пытались нормально поговорить, а ты реагируешь, как школьник. Алсо, я не из ФП, а ты долбоеб 1с-ник.
>>1146055Подпиши "Капитан Очевидность". Алсо, можешь почитать какую-нибудь книку про тестирование - столько золотых цитат для себя откроешь, что охуеешь просто.
>>1146056>скилл должен быть выше>Ошибка выявленная на этапе компиляции вылезет ещё до запуска программыА должно быть так: Ошибка выявленная на этапе тестирования.Видишь в чем разница? И каких результатов может достичь тестированием в противовес одной только компиляции (на которую все так надеются и готовы даже время свое разменять)?!Вот понимание этого и есть "скилл должен быть выше", так что юзай пока языки со статической типизацией.>>1146058>Это где я такое писал?Тебе не нужно это писать, это же выводы по твоим словам. Если же я ошибся, поправь меня, скажи, почему мне тогда стоит пожертвовать гибкостью динамического языка, мета-программированием, высоким уровнем полиморфизма типов - ради статической типизации (а именно компиляции, так как динамическая типизация не должна исключать строгую типизацию).То есть статическая типизация это ключевой (яркий) момент в выборе языка? Нет?>Особенно проиграл с "верх скила разработки".С точки зрения типов, динамическое программирование это работа с "высокополиморфными" типами данных. Понятно, что тут уже компилятор тебе не поможет и на плечи программиста ложиться дополнительные условия - более качественное покрытие тестов, более качественное написание документации и предоставляемой информации по всем типам с которыми работает функция.Конечно это скил выше.
>>1146070Скажи ещё, что прокомментировать каждую строчку = скил. Нет, братишь, это проёб времени. Ты под скилом какие-то левые вещи подразумеваешь, отношения к непосредственно программированию не имеющие. Писать документацию я могу и джуниора посадить. Ух у него скил вырастет! Здоровый сука!
>>1146073Представь ты берешь на работу программиста и открываешь его код. Ты видишь отсутствие или огрызки документации, отсутствие или частичное покрытие тестов (или некачественное их покрытие).Какое сразу мнение о нем будет как о программисте?Конечно это часть работы программиста и даже понимание того что это часть твоей работы - это уже плюс в скилл.Тесты - гарант качества твоего кода (хотя бы что оно вообще работает), а дока - это описание работы твоего кода (для остального коллектива, ты же не один программист. Да и даже для тебя через год)Аналогия (если совсем туго) - электрик провел проводку - но не сделал принципиальной схемы подключения, это часть его работы? - да. Является ли это показателем уровня его профессионализм? - да. Даже если он там красиво подключил все и все правильно подключил.
>>1146075Попробуй писать код понятный без коментариев. Вот там и будет скил, малыш.
>>1146075>электрик провел проводку - но не сделал принципиальной схемы подключения>писать документацию я могу и джуниора посадить.И электрик посадит джуна принципиальную схему рисовать, лол.
>>1146076>Попробуй писать код понятный без коментариев. Вот там и будет скил, малыш.Ох, ты походу еще не знаешь что такое формат для автогенерации кода типа javadoc или phpdoc..., ты думаешь я о каких-то комментариях пишу, типа к коду обычные такие, да? Ахах, жесть. Вот вам и скилл
>>1146078>fix>автогенерации кодаавтогенерации доки
>>1146070>Тебе не нужно это писать, это же выводы по твоим словамА ты сосешь хуй, это же выводы по твоим словам.>Если же я ошибся, поправь меня, скажи, почему мне тогда стоит пожертвоватьКак из того, что ты "ошибся" (я не писал, что типизация - самая главная проблема погроммирования), следует убеждение тебя же в превосходстве статический типизации? Как ты код с такой логикой пишешь?>пожертвовать гибкостью динамического языка, мета-программированием, высоким уровнем полиморфизма типовДа ничем ты не жертвуешь, все то, что в динамикодрисне ты делал неявно, в статике ты просто делаешь явно на уровне кода. Что параметрический полиморфизм, что аннотации к типам. Ты ведь когда пишешь код, в голове держишь инфу, что вот эта переменная должна быть строкой, а вот эта - булом? Нет, блядь, я документацию на это напишу, но аннотации мне поставить трудна, не допущу, чтобы грязный комплухтер облегчил мне жизнь. А нужно зарефакторить код или дописать - так начинаем рыться в доках, чтобы восстановить в голове как там чо, не дай бог нам типизация в этом деле поможет.Гарантии > надежды. Твоя "гибкость" - это гибкость ошибаться. Именно поэтому тебе стоит пожертвовать этой "гибкостью".>Понятно, что тут уже компилятор тебе не поможет и на плечи программиста ложиться дополнительные условияШкольный хоркор. Без ci/cd тоже нужно больше руками делать, выкинем его, покажем одноклассниками свою скилловость.У меня просьба, можешь без пиздежа написать, сколько на каком языке профессионально погромировал за деньги и какова была твоя роль?
Даунидзе пхп-макака с 12 летним стажем, расскажи почему все крупные конторы из жс мира внедряют статическую типизацию?Miscrosoft = TypescriptGoogle = DartFacebook = FlowМожет быть они знают чего-то, чего не знаешь ты?
>>1146168Ты не понял. Динамическая типизация - это для элиты. Для скиловых ребят. А всякие макаки пишут на статике. Дураки потому что, которым не суждено подняться до уровня великих динамических программистов. Ну правда же мам? Мам, ну правда же!
>>1146185Ну так и есть же - статика для глупых. Размен времени написания кода и теребоньканьем компилятора, ради отлова базовых ошибок.Пока питоно-макака завершает проект, какой-нибудь джава господин накручивает еще одну фабрику на фабрику фабрик.Не даром го послал все нафиг и сделал быструю компиляцию и ложил болт на джинерики (что в действительности является говно-хаком в мире Статики<Фигатики>).>>1146168А нафига с говно-ФП носились в 2010?? Нахуя с асинхронной херней носятся, которая оправдана только для хайлода и чатиков (зато каждый школьник теперь знает как это важно в его пет-проекте). Просто хайп на хайпе. Появиться еще что-то, будут так же 5-10 лет теребонькать.
>>1146556Пишу абстрактную фабрику абстрактных фабрик абстрактных билдеров абстрактных сущностей. И хули ты мне сделаешь, омежка? Джава-боярин
>>1146168>Facebook = ReasonMLПофиксил.>>1146556Ты очень тупой и иррациональный. Либо у тебя просто слишком мало знаний, либо ты сейчас по факту всерьез отрицаешь научный метод, математику и логику.
>>1146596>Ты очень тупой и иррациональный.Жесткое утверждение, хм...>Либо у тебя просто слишком мало знаний, Пошли сомнения, возможно...>либо ты сейчас по факту всерьез отрицаешь научный метод, математику и логику.Ох, тут нужно больше авторитетов озвучить, даже может имена ученных, чтобы казаться еще более внушительным и убидительным.Диагноз: НЕБОМБИТ
>>1146569>Пишу абстрактную фабрику абстрактных фабрик абстрактных билдеров абстрактных сущностей. И хули ты мне сделаешь, омежка? >Джава-бояринНичего страшного в этом нет, главное не стыдить себя за это.
>>1146605>убидительным.Собственно, хорошо подытоживаем все твои посты в этом треде.
>>1146556>теребоньканьем компилятора, ради отлова базовых ошибок.Чего его теребонькать - он сам в фоне работает. Я так понимаю что линтерами ты тоже не пользуешься. Но что взять с убогого?И да, ради отлова ошибок опечаток и прочего дерьма. Я же не дурак на каждый чих прогонять тесты.>Пока питоно-макака завершает проектПроект на вечер. Ну вот тут всё и стало понятно. Динамикодрисня отлично подходит для написания write-only скриптиков. Файлики там перекинуть, лэндинг с анимцией. О какой-либо работе в команде и поддержке речи не идёт. Что там наворотили эти макаки хуй поёмешь. Проще заново надристать за пару вечеров, да ещё и бабоса с заказчика поиметь.
>>1146627Тот случай, когда все еще пригорает, но мозгов хватает только докопаться до кокографии (и это на двачах то...). Спрячься уже, хватит растекаться по треду
>>1146631>Я же не дурак на каждый чих прогонять тесты.В том то и был месседж, что тесты ты можешь прогнать, скажем, в конце работы и все, а компиляция каждый раз обязательна и в большом проекте она всегда ощутима, даже на ваших джавах (на го может тоже, не видел крупного проекта на го). Что мы имеем, для реально крупного проекта - ты так и так пишешь тщательно тесты, причем настолько тщательно, что тесты становятся настолько сложными, что проверка типов компилятором кажется уже детской забавой. На самом деле, проще покрыть в тестах типы один раз, чем на каждый раз ждать 3-7 секунд (плюс еще старт самого приложения).>Динамикодрисня отлично подходит для написания write-only скриптиков.Как раз таки нет, лет наверное 10-15 назад (а может и раньше), скрипты вообще ощущались как новой вехой в программирование (даже были писаки про новый уровень программирование, после высокоуровневого). Получалось то, что от кода требовалось больше гибкости за меньшие усилия и вот скрипты как раз под это все удачно заходили.Но в реале, в ИТ правит маркетинг и глупость (и юность), поэтому люди теперь готовы долбаться в обобщенное программирование (дженерики), в рефлексию, даже ковырять байткод, и все ради того, чтобы сделать шаг назад и юзать компилятор.Я понимаю что где-то кто-то залил в уши про эту статику, но если прям реально взвесить - проверку типов или мета-программирование, то ответ будет очевиден (к сожалению, думать своей головой в ИТ не принято).
>>1146765Ты так и не ответил, сколько на каком чзыке профессионально занимался разработкой.
>>1146765Мудила, расскажи как ты пишешь тесты для интерфейсов. И как ты потом это говно рефакторишь.
>>1146766>Ты так и не ответилТы спрашивал?Работа:С++ - 4 годаJava - 8 летХалтура и петпроеты (если не глупый, то поймешь что пересекаются):php - 5-6 лет (сейчас нет), python - 5-6 лет (по сей день)go - 2 года (по сей день)ну js под фронт когда надо, не помню когда в веб залез, наверное лет 9-10А вообще трудно считать, если в пхп я там много писал, то в го сейчас больше ковыряюсь чем прям пишу (как, наверно, многие тут)
>>1146768>тесты для интерфейсовА ты одаренный.
>>1146751Чини детектор, макака.
https://research.swtch.com/vgo-import> Of course, deleting an old function works only when all the uses can be found, or when users understand that they are responsible for keeping up with changes, as was the case in a research system like Plan 9. For exported APIs, it's usually much better to leave the old name and old behavior intact and only add a new name with new behavior. Rich Hickey made the point in his “Spec-ulation” talk in 2016 that this approach of only adding new names and behaviors, never removing old names or redefining their meanings, is exactly what functional programming encourages with respect to individual variables or data structures. The functional approach brings benefits in clarity and predictability in small-scale programming, and the benefits are even larger when applied, as in the import compatibility rule, to whole APIs: dependency hell is really just mutability hell writ large. That’s just one small observation in the talk; the whole thing is worth watching. Предлагаю любому, кто впредь что-то кукарекнет про "ФП хайп нинужна!11", тыкать носом в эту пасту. Надеюсь, не нужно объяснять, кто есть ее автор.https://www.youtube.com/watch?v=oyLBGkS5ICk
>>1146801Мудак который не осилил теоркат, поэтому придумал своих ебаных терминов для кривого решения уже решенных задач?
>>1146802Зарепортил не осилившего английский школьника.
>>1146801Это же О из солида.
>>1146785А, теперь понятно, джавадебил настрадался и решил, что все языки со статической типизацией такие же деревянные, как и джава, и что в этом виновата типизация.
>>1146765Разве скомпилированное не работает быстрее, чем скрипт?
>>1146820Вообще-то это про package management и versioning вы тут все принципиально не читаете то, что написано?, но сама базовая идея, конечно, та же самая. Классы, правда, обычно не версионируются.
>>1146830В общем случае - нет. Некорректно вообще сравнивать какую-то абстрактную производительность в вакууме какого-то абстрактного "скомпилированного" и абстрактного же "скрипта".
>>1146828Только вот в Джаве от статической типизации откажутся в 12й версии. Сначала сделают её опциональной, а потом и вовсе задепрекейтят. А годауны будут продолжать сосать.
>>1146853Ты не поверишь, но солид применим не только к классам, там вообще речь о модулях. А модулем можеть быть даже небо, даже Аллах.
>>1146913Я потому и сказал, что базовая идея та же (их, этих базовых идей, в программировании вообще не так уж и много). А статья гофера и рилток кложуриста - про конкретную проблему с пакедж менеджерами и версионированием зависимостей.Про SOLID уже полвека как все вроде бы знают, а версионированных апи библиотек что-то не особо видно.
Что случилось с gopherjs dom?Сайт мертв, пакет удален.Только хотел поковырять изоморфность.
>>1147748Предполагаю, что начали отпочковываться хайпанутые, которые обычно держаться на хайпе 2-3 года, а как только язык становиться мейнстримом, бегут куда-то (но это не критично).
>>1146899> от статической типизации откажутся в 12й версииCсылку на roadmap, пиздабол. То что у тебя в голове голоса от чего то отказываются, не считается. На 10/11 еще с планами не определились.
>>1147820Не трожьте его, он думает что он тролль.
>>1123528> Путь к репам прямо в кодеВот тут ты и обосрался
>>1123528> gofmt Ты понимаешь слово "унификация"?> Открывающиеся скобки только на той же строкеНу тут обосрались, до сих пор хейчу их за это...> Путь к репам прям в кодеНу это толсто. У тебя на компе директории так называются "github", "gitlab", whatever you want. С гитхаба ты тянешь, тем же go get или др. PM-амими. (go dep, vgo). А боишься, что Github отключат, так поставь себе gogs, не будь нищенкой.
>>1147811Всё в порядке, видимо сервер падал.>>1123528>GOPATHМожно менять в любой момент, делать для каждого проекта.>gofmtУдобно, но опять таки не заставляют пользоваться?>Путь к репам прям в кодеЕсть vendor, в разработке go dep
Поясните мне кто-нибудь почему это говно так популярно? Процедурное программирование в 2к18? Вы охуели чтоли там? Где замыкания, где монады?
>>1148025Во-первых, не очень популярно (выше уже обсуждали, что он второй год как теряет позиции, еще не успев взлететь). Во-вторых - гугл же, маркетинг, вот это все. Языки становятся популярными только благодаря маркетологам больших корпораций.
>>1148025>Поясните мне кто-нибудь почему это говно так популярно?Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.>Процедурное программирование в 2к18?Никто не мешает писать в декларативном или ОО.>Где замыкания?Они внезапно есть. Как и анонимные функции, и функции высшего порядка.
>>1148032А еще язык простой и легкочитаемый.
Этот говноланг и пару лет не протянул. Гугл накручивал изо всех сил, но в итоге рыночек опять порешал.Все крупные кампании, которые поддались маркетингу, сейчас в спешке переписывают свои поделия на чем угодно, лишь бы оно не было на го
>>1148045>Назови еще один компилируемый язык со сборщиком мусора и стабильной версиейRust же>Они внезапно есть. Как и анонимные функции, и функции высшего порядкаглянул на их фп. После Scala выглядит как говно
>>1148058>Rust>со сборщиком мусораА ну всё спасибо до свидания
>>1148061>А ну всё спасибо до свиданияа ну извините наизусть все нюансы не знаю. там да нету сборщика мусора, но ты и условия поставил в которые только Go может и вписывается. А нахуя эта компилируемость тебе нужна, если JVM выебет го по скорости все равно
>>1148046>простойНет.>легкочитаемый.Ну, для тех, кто не видел ничего, кроме крестов, - да, легкий синтаксис может казаться культурным шоком и божьим откровением. А я бы вот не стал называть "легкочитаемым" язык без параметрического полиморфизма, например. Вообще, это хуево, когда язык оценивают иррационально, по таким вот субъективным характеристикам - "читаемый", "легкий", "приятный", "лого прикольное))" - потому что хрошие показатели по этим характеристикам есть заслуга маркетологов, а не инженеров.
>>1148045>Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.Ты не поверишь, но java, scala, clojure, kotlin, swift, ocaml, haskell, erlang, elixir... ничего не забыл?
>>1148120> ничего не забыл?паскаль
>>1148049>переписывают свои поделия на чем угодно, лишь бы оно не было на го Пруфы?
>>1148130Черт. Это фиаско, братан. Вирт не простит.
>>1148120Зачем ты перечисляешь парашу на виртуальных машинах?
>>1148132Илюша, please.
>>1148132dropbox переписали хранилище с го на rust потому что при высоких нагрузках сжирает всю память
>>1148175Будем честны. 1 Не переписали хранилище, а одну из подсистем. 2 Переписали потому что хотелось поиграться с новой технологией.
>>1148140Я перечисляю>еще один компилируемый язык со сборщиком мусора и стабильной версией.
>>1148175>>1148185Как обычноОжидание:>Все крупные кампании, которые поддались маркетингу, сейчас в спешке переписывают свои поделия на чем угодно, лишь бы оно не было на гоРеальность:>Дропбокс переписал одну из подсистем, причем большая часть кода осталась на го
>>1148120В свифте rc.
>>1148250Так, и?
>>1148120Дебил, да хоть кресты c Boehm GC.
>>1148263В условиях был сборщик мусора.
>>1148385Ну, и в чем противоречие?
>>1148515В свифте нет сборщика мусора.
>>1148632>В свифте rc.>В свифте нет сборщика мусора.У тебя диссоциативное расстройство личности, или что?
>>1148642https://en.wikipedia.org/wiki/Automatic_Reference_CountingУчи теорию, заебал.
>>1148653Ну это не стандартный gc, это более умная вещь.
>>1148656Да нет, gc по сути умнее. При arc тупо есть счетчик ссылок для каждого объекта, и как только он опускается до нуля - объект пидорят из памяти. Никаких тебе проходов по графу, ничего такого.
>>1148656>Ну это не стандартный gc, это более умная вещь.Охуеть вообще, тебя кто, вшивого, в интернет выпустил?
>>1148665>пук
>>1148671>обосрался и не может остановиться
Вы чу сука вы че?! RefCounting у него не GC.
>>1148699Если не жрёт кучу ресурсов и не парализует работу приложения во время сборки мусора, то это не считается за сборщик мусора, понял, питух?
>>1148653Я уже выучил, а ты?>>1148699Ньюфаги, сэр.
>>1148699>>1148724С очень ебовой натяжкой можно ARC отнести к garbage collection, но в любом свифтокоммьюнити за это тебя обоссут. По сути самого понятия гарбадж нет, он не копится. Ну и вспоминаем из-за чего начался срач>>1148120>со сборщиком мусораНет сборщика мусора в свифте.
>>1148740Ебать, да ты упоротый, раз компьютер сцаенс по гугловой выдачи строишь.>понятия гарбадж нет, он не копитсяОй тупооой.>ARC differs from tracing garbage collection in that there is no background process that deallocates the objects asynchronously at runtime.[3] Unlike garbage collection, ARC does not handle reference cycles automatically. This means that as long as there are "strong" references to an object, it will not be deallocated. Strong cross-references can accordingly create deadlocks and memory leaks. It is up to the developer to break cycles by using weak references.[4]
>>1148754И причём тут циклы? Это не мусор. Это результат проёба программиста.
>>1148754Читать умеешь, зачем ты цитируешь то, что подвтерждает мои слова? Если на объект есть сильная ссылка, то это не гарбадж, объект ипользуется кем-то.Ты ведь понимаешь, что в твоей же цитате разделяют ARC и GC? Английский знаешь?>ARC differs from tracing garbage collection in that there is...
>>1148761Затем, что там прямо говорится - ARC отличается от трассирующей [сборки мусора бла бла. Да, это та же сборка мусора, про которую спрашивали в начале нити, да, она воплощена в алгоритме, а не в автономной сущности (сборщик мусора - объектов с обнуленным счетчиком), да это более слабая стратегия сборки мусора (циклы, блокирующая обработка, невозможность кастомизации), так что не знаю чем здесь гордиться.
>>1148769Давай ты перестанешь вилять и ответишь, в свифте есть сборщик мусора?
>>1148770Очевидно, нет. А сборка мусора есть. Все счастливы. Fin.
>>1148772Нет, сначала расставим все по местам. Раз уж ты написал>это та же сборка мусора, про которую спрашивали в начале нититкну тебя носом в то, с чего начался спор. Вот этот пост >>1148120>Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.>swiftЗаметь, там сборщик мусора. Вот теперь конец.
>>1148045>Назови еще один компилируемый язык со сборщиком мусора и стабильной версией.SBCL, лол
>>1148777Objective-C, Swift
>>1148782Here we go again.
>>1148783 Про SBCL есть че?
>>1148792Слишком другой.
>>1148805
>>1148806
>>1148811
>>1148815
>>1148820
>>1148821
>>1148825он прекрасен!
новый маскот пщ
>>1148773Давай сначала ты в анонах путаться перестанешь.
Чем заменить while ( !feof(stdin) ) { int c = getchar();}Нужно посимвольно считывать строку до \n
Когда следующая версия Go выходит? Где почитать о планах развития?
>>1119389 (OP)>Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.Какие make-опции нужны, чтоб уменьшить?
>>1155596>Go 1.10 (February 2018)>Go 1.9 (August 2017)>Go 1.8 (February 2017)>Go 1.7 (August 2016)>Go 1.6 (February 2016)>Go 1.5 (August 2015)Даже не знаю.
>>1155647Следующая будет 1.11 или 2.0?
>>1155647Выпускают каждые пол-года. Шо есть, то и вываливают.
Анон, объясни популярно, нахрена нужен GOPATH? Нигде нету такой хуйни, а в Го есть. Почему было нормально не сделать как в жабаскрипте node_modules, или в питончике viritualenv? Да вообще, решений заебись сколько на любой вкус. GOPATH - это же как член гвоздем к стене прибить. Я недавно попробовал Go в Atom пощупать, а оно потребовало этот сраный GOPATH. Я хочу с разными проектами работать, что мне каждый раз перезапускать Atom с другой GOPATH?
>>1155957Я подозреваю, что просто напохуй на говне и палках сделали, чтобы заработало побыстрее, а потом случилось "Нет ничего более постоянного, чем временное", а хомяки растащили как есть.
>>1155957>Нигде нету такой хуйни, а в Го есть.Попизди мне тут, в питонах PYTHONPATH есть.
>>1155957java classpath. и ничего. Придумали Maven, который прекрасно с этой хуйней работает.
>>1155970Ты должно быть особо тупой индивидуум, если не понимаешь разницу между PYTHONPATH и GOPATH.
>>1156542Ты, должно быть, хипстор-смузихлёб, если даже не умеешь в абстракции.
>>1123651>уже найдено корректное, блядь, решение проблемы зависимостей и сборки проекта - но нет, нахуя нам этоЭто в принципе исчерпывающее описани говна.Говно это сплошные nih костыли и хуевые решения проблем, которые уже 10-20-30-40 лет как решены.Эти долбоебы выдумали свой ассемблер, который как бы не ассемблер, но как бы и не ir в духе llvm. То есть они предумали ir для каждой архитектуры в отдельности, чтоб было проще компилировать из одних сырцов в разные аритектуры, но не смогли в единый ir.И так во всем: не смогли в параметрический полиморфизм (но захардкодили его для каналов), структурные типы, тюпли вместо возврата нескольких аргументов, тип-суммы, нормальный менеджер зависимостей, оптимизирующий компелятор.Это говно годится в принципе только для примитивного веба, что-то сложнее приводит к пиздецу вродеhttps://medium.com/@arschles/go-experience-report-generics-in-kubernetes-25da87430301И главное в дугих языках это все давно уже решено. Ну, впрочем, вперед, хайптрейн.
>>1157198>https://medium.com/@arschles/go-experience-report-generics-in-kubernetes-25da87430301Просто пиздец. Шел 2018 год...
Почему Go-вноеды такие сектанты? Вчера нашел тему на хабре, где шизик на полном серьезе говорит, что Go лучше, т.к. в нем нет тернарного оператора и нормальной обработки исключений, из-за чего сложнее писать говнокод. Пиздец просто, только выиграли, нахуй.
Писал тут недавно сервис, который слушал события, клал их в очередь и по-разному обрабатывал и всё у меня было зашибись пока не оказалось, что в какой-то ситуации происходит сверхдолгий блокирующий вызов, который надолго ложит обработчик, переполняя очередь и всё такое (подозреваю, кстати, дефолтный http-клиент, вроде как он по умолчанию не выставляет таймауты и ждёт ответа вечно).Я сначала захотел сделать пул воркеров, чтобы если один замрёт - остальные продолжили обрабатывать сообщения, но потом понял, что таким макаром могут зависнуть вообще все воркеры, особенно, если блокирующий случай часто повторяется.Начал инвестигейтить вопрос - и такое ощущение, что стартовавшую горутину извне убить вообще нереально, если она сама не очнётся. Все эти tomb'ы, pkg/context и прочие ориентриованы на то, что горутина сама в какой-то момент проверит, и, если ей пришёл сигнал сдохнуть - самовыпилилась.Что за хуйня, анон? Я действительно не могу убить застакавшийся процесс (ну бывает такое, да)? Как вообще стоит поступать в таких ситуациях?Я пока придумал два варианта:1) Поднять x go-демонов и процесс-супервизор, который будет за ними следить. Демоны будут слушать сообщения и рапортовать о взятых и завершённых задачах (например, в простенькую базеечку), а он, если какой-то демон долго не отвечает, будет фигачить туда sigkill и запускать обработчик заново. Точно сработает, но тогда я как бы лишаюсь основного плюса го, "легкой" конкурентности/многопоточности, прямо в среде прилжения - с тем же успехом, я и на богомерзком php напишу то же самое.2) Спавнить ещё один go'шный процесс через какой-то гипотетический аналог fork, прокидывать туда данные через сокет и пусть он их обрабатывает; Если замрёт и не ответит через указанное время - sigkill ему, ибо нехуй. Это выглядит немного получше, так как сами демоны получаются более легковесными да и fork, если есть, сократит время бутстрапа. Ну и можно гошные плагины заиспользовать, вроде, механизм похож. Минусы примерно те же самые, приходится городить какой-то хак, вместо того, чтобы язык помогал мне решать мою задачу.3) Запускать отдельную горутину-супервизор, которая считает время исполнения каждой задачи - и если она больше таймаута - отсылает туда cancel и, не дожидаясь завершения обработчика, порождает новый. По логике, "старый" обработчик когда-то отвиснет и, или сразу отпадёт, или закончит выполнение и отпадёт всё равно. Это тот вариант, на котором я остановился, потому что он тупо проще (заиспользовал, кстати, go-playground/pool). Вижу такие минусы: во-первых, "зависающие" горутины копятся; во-вторых, нарушается порядок выполнения задач (мне пришли две задачи, А и Б. Воркер взял задачу А, завис на полчаса. Через минуту супервизор понял, что происходит неведомая хуйня и стартанул нового воркера, который взял и успешно обработал задачу Б. А через двадцать девять минут воркер один отлагал и закончил с задачей А. В итоге, последовательность обработки событий была нарушена).ЧЯДНТ?P.S. Гуру, которые мне сейчас скажут, что нужно просто писать код без дедлоков и прочих радостей: бывают проекты, на которых работает туева хуча разработчиков, и я не хочу, чтобы построенный мной сервис застакался оттого, что какой-то молодец написал ```mutex.Lock()defer mutex.Lock()```в своём обработчике.
>>1159184Бля, три варианта, не два. Первые два просто придумал, третий написал.
>>1159184>стартовавшую горутину извне убить вообще нереальноСтандартная практика: передаёшь ей в параметрах quit <-chan struct{}{} и через for-select слушаешь этот канал и делаешь return, посылая туда пустую структуру, когда тебе надо.
>>1159212Чувак, ну я же об этом и говорю, стандартная практика именно такая, но она подразумевает, что я сам должен через for-select "услышать" сигнал остановки и отреагировать на него. А теперь представь, что горутина заблокирована: там или time.Sleep(time.Second * 1000000), или бесконечный цикл, или дедлок с бесконечным ожиданием никогда не открывающегося мьютекса. В этом случае горутина реально зависнет и ничто не сможет её "отвесить", ни изнутри (ибо блокирующая операция), ни снаружи (похоже, что в го нет способа прерывать потоки насильно).
>>1159247>>1159184Go крута.
>>1159247Мне как и анону выше не хочется упускать шанс поиздеваться на goвном, но тут по-моему ты сам немного тупишь. У тебя гоблоки бегают на тред-пуле - конечно ты не можешь запускать там блокирующие операции, ибо от этого все треды быстро заблокируются.
>>1159292Сам ты говно, go язык goбов.
>>1159315goмиков.
>>1159429Гоморутины.ехидный колобок.жпг
>>1159432Goморутины, начавшись, не могут остановиться, если сами того не захотят.
>>1119389 (OP)гомункл
>>1159441Goбилен с goдом.
>>1159184>и такое ощущение, что стартовавшую горутину извне убить вообще нереальнонаслаждайся кооперативной многозадачностью
Прошел тур по Go. Завтра собеседование, подскажи, что могут спросить, что надо ещё знать и поясните, как работают горутины? Я так понял несколько горутин асинхронно выполняются в 1 треде?
Django разработчик в треде. Месяц назад увлекся golang'ом, по вечерам пилю хэлло ворды, но оч. хочется сделать, что-нибудь посерьезнее.Есть вот такая идея -- сделать агрегатор цен на видеоигры с фильтрацией по физическая|диджитал копия. API cервер и пауков на Go, фронт на react. Что можете посоветовать посмотреть из фрэймворков?p.s. Если кто-то захочет помочь запилить проектик в коопе, то замечательно <strike>телега: @GrigoriyMikh</strike>
>>1159578Н И Ч Е Г ОИЧЕГОЗачем нужны фреймворки в го, тебе стандартной библиотеки и самых легких роутов не хватает?
>>1159578Бери https://github.com/kataras/iris (он сейчас считается самым популярным) и не слушай уебанов, которые сейчас понабегут и начнут советовать написать всё с нуля.
>>1159603Fasthttp - это, конечно, хорошо. Но какой в этом смысл, если ты пользуешься токсичными фреймворками?
>>1159603мне вот https://github.com/labstack/echo приглянулся. Очень минималистичный интерфейс для написания rest api. Чем iris интересен?
>>1159603А про пауков,что скажешь? Есть какие-нибудь годные фреймворки?
>>1159598А миддлвары самому писать?
>>1159578>GrigoriyMikhБабу-то нашёл на дваче поебаться? Или так и жрочишь свои циферки на Каггле?
Перекатhttps://2ch.hk/pr/res/1159767.htmlhttps://2ch.hk/pr/res/1159767.htmlhttps://2ch.hk/pr/res/1159767.html
>>1159641Просто идиоматичный и популярный фреймворк. Все основные фичи вида middleware, авторизации и прочего уже есть в виде отдельных пакетов, меньше руками писать. Тестами покрыт, стабилен.Остальное - вкусовщина.Про echo тоже хорошие вещи слышал, если нравится - бери.
>>1159971> Все основные фичи вида middleware, авторизации и прочего уже есть в виде отдельных пакетов, меньше руками писатьчем лучше Gin ?
>>1162068Кардинально - ничем. Уже игрался с ним - впечатления нормальные.В го-мире, как я понимаю, существует много web-фреймворков (Iris, Gin, Echo, тысячи их), которые предоставляют приблизительно один набор фич и очень похожую модель работы с ними.Поэтому выбирай тот, который тебе нравится + имеет нужны фичи из коробки (тот же basic auth, работу с JWT, т.п.)Отдельный момент - это популярность, смотри, чтобы фреймворк не загнулся оттого, что единственному контрибьютору надоело.
Как же вы блять заебали со своим го.... Го Го Го ГоЕще один невьебенный роутер на го, еще одна невьебенно удобная хуйня с тонной говно рантайма что бы вы могли сделать очередное говно подделие которое насилует сетевуху во все щели. Раньше новые люди в програмировании слушали рок и писали на голых или крестанутых сях с чувством с толком и с умом а теперь куча всяких имбицилов-хиптеров получив язык для обезьяны пишут на ебаном го слушают руский реп и порятся в очко.
>>1167715А ты шаришь