24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Go (а также Golang, Goвно, Пщ или просто Го) — своевременный язык, который мы заслужили /go/
Go (а также Golang, Пщ или просто Го) — современный язык с зелеными потоками на уровне синтаксиса и мега крутой стандартной библиотекой. Так как делать пакеджи несложно, гитхаб полон пакеджами для абсолютно всего. Батарейки почти как в питоне.
Пщ едва не единственный язык который на уровне синтаксиса позволяет синхронизировать подпрограммы, разве только не Pony или Erlang. Это в 2018 году-то Дженерики нужны, дженериков нет. Просто смирись. Обработка ошибок получается охуенно через http://github.com/pkg/errors | в приложениях обычно можно просто паниковать на ошибках. HTTP-сервер для убер максимального маня-хайлоада: https://github.com/valyala/fasthttp В 1.8 или 1.9 уже можно "нормально" сортировать через sort.Slice() Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.
Вкатываемся в эпоху докера, микросервисов и адово кошерной сетевухи.
>>1159641 Просто идиоматичный и популярный фреймворк. Все основные фичи вида middleware, авторизации и прочего уже есть в виде отдельных пакетов, меньше руками писать. Тестами покрыт, стабилен. Остальное - вкусовщина. Про echo тоже хорошие вещи слышал, если нравится - бери.
Эй, goмункулы. Поясните мне, какого хрена в го нельзя сделать указатель на интерфейс? Я вот хочу, чтобы у меня в структуре был указатель на некий handler интерфейс, а конкретный объект буду инжектить под ситуацию. И низя. WTF?
Почему Go-вноеды такие сектанты? Вчера нашел тему на хабре, где шизик на полном серьезе говорит, что Go лучше, т.к. в нем нет тернарного оператора и нормальной обработки исключений, из-за чего сложнее писать говнокод. Пиздец просто, только выиграли, нахуй.
>>1159767 (OP) >Makefile поясни, интересует проганье под mips, накатив пару стандартных либ ОЧ ЖИРНЫЕ (для mips) файлы получаются, даже с теми твиками которые нашел на SO.
Пацаны , кто-нибудь поясните Go вообще может конкурировать с Erlang / Elixir ? Почему все высоконагруженные приложения аля вотсапп, discord берут ерланг или элексир для миллионнов сообщений в день, голанг для этого плохо подходит что ли?
>>1161709 Дискорд и вотсап берут ерланг, потому что динамикадрисня. Типичная goмо-логика. А goвно тогда, видимо, не берут из-за статической типизации. Хотя подожди-ка, в goвне же говно без дженериков вместо статической типизации, точно.
>>1161695 В пщ искаропки (вшиты в язык) есть средства только для in-process асинхронности. То есть для распределенных систем с миллионами сообщений в день он не дает никаких профитов, все придется велосипедить. А erlang otp - платформа, ровно для миллионов сообщений в день и предназначенная, так что логично взять проверенное временем интерпрайс-грейд решение, а не хипстерскую хуйню от гугла.
>>1165570 Ну как сказать, сейчас блокчейны многие начали пилить на го. Просто у Го нет какого-то списка требований, что должен знать Гошник. Типа списка фреймворков для джавы
Я с ньюфажным вопросом вкачусь к вам: где почитать как горутины реализованны на низком уровне? Особенно интересует переключение контекста. Исходники я открывал, но там какой-то платформозависимый пиздец , что логоично в общем-то и осилить не удалось.
>>1170498 Спасибо, эту я видал уже статейку. Может так кто-то знает: планировщик полностью эмулирует работу ос по выделению/увеличению памяти для горутины, или же при переключении происходит копирование стека потока ос в буфер горутины и последующее его восстановление?
>>1170507 Спасибо, Таненбаума я перечитаю конечно же. >и у каждой горутины свой стек Это полноценный стек, куда прямо SP указывает? Мне интересно просто, как подобное реализованно на уровне пользовательского процесса, ведь прав отображать физическую память на виртуальную тут нет. Плюс ещё масса платформоспецефических условий, например установка того же SEH под Win. И опять же как его увеличивать? Проверять размер между вызовами, а как быть со сторонним кодом? Надеялся, что где-то подробно расписанно уже.
>>1170516 Вряд ли в этом треде ты получишь ответы на свои вопросы. Тут не сидят те, кто задумывается о таких низкоуровневых вещах. А там, где сидят, не разбирались как реализованы легковесные потоки в го.
Анон, а тут кто-нибудь прикручивал сабж к оракловой БД ? Я знаю там несколько либ и все требуют оракловый клиент с TNS-именами, потому что нормальный драйвер только в джаве. Ладно, хуй с ним, этого у меня есть, но большая часть ставится вместе с каким-то говном которое пытается уставить. А у меня тем временем, две шиндовые тачки, одна с интернетом, с которой я тащую либы обычно, а другая мощная и подключеная к внутренней инфраструктуре и на ней я кодирую. Соотвественно у меня дилема, как доставть либ без интернетов
Подскажите как ограничить производительность gopher-lua, нихуя не пойму, у меня игровой сервер с модулями на луа, но с помощью модуля можно весь сервер наебнуть.
>>1170516 >Это полноценный стек, куда прямо SP указывает Нет, это все юзер спейс. >Мне интересно просто, как подобное реализованно на уровне пользовательского процесса, ведь прав отображать физическую память на виртуальную тут нет Используя системный вызов MMAP.
>>1175670 >Я правильно понимаю, что если выполнение операции занимает больше 5 секунд, то уже нужно делать для этого отдельный микросервис? Как хочешь. В зависимости от задачи. Может быть вполне достаточно просто выполнить в отдельной горутине.
>>1180093 И поэтому люди давно придумали Option/Result типы. Что мешало Go быть типобезопасным и перенять монадический error handling, как сделал Rust например?
Пишу тут телеграм ботика. В следствие того что метод отправки сообщений находится в боте и хэндлеры о нём ничего не знают приходится объявлять все хэндлеры рядом с ботом. Хотелось бы вынести хэндлеры в другой пэкэдж. Есть ли какой-нибудь нормальный способ передать функции контекст с которым она будет работать? Пока придумал только пихнуть бота в кложур для хэндлера.
>>1175706 Как бы тебе объяснить. Мой дед обрабатывал ошибки, мой отец обрабатывал ошибки, я обрабатывал ошибки, а ты не хочешь?! УБЬЮ СКА
ВСЕ, ВСЕ ДОЛЖНЫ ОБРАБАТЫВАТЬ ОШИБКУ СРАЗУ КАК ТОЛЬКО ПОЛУЧИЛИ. ЯВНО, БЫСТРО, НА МЕСТЕ И НЕ ЗАДУМЫВАЯСЬ. ПОЗВАЛ МЕТОД - ОБРАБОТАЙ ОШИБКУ. ВЫЗВАЛ - ОБРАБОТАЙ. НЕ ПРОБРАСЫВАЙ НИЧЕГО НЕЯВНО ВЫШЕ, НЕ ПИШИ THROWS EXCEPTION, НЕ СНИМАЙ С СЕБЯ ЭТО БРЕМЯ ОБРАБОТКИ ОШИБОК. ВМЕСТО ЭТОГО ЯВНО ОТКРЫТО ПИШИ IF ERR RETURN ERR И ПУСТЬ ТАК СДЕЛАЕТ КАЖДЫЙ, КАЖДЫЙ СУКА МЕТОД НА ВСЁМ СТЭКЕ, ЧТОБЫ ВСЕ В КРУГОВОЙ ПОРУКЕ ПОУЧАСТВОВАЛИ, МРАЗИ. ОБРАБАТЫВАЙ ОШИБКИ, СУКА!
>>1188430 >В Голанге можно компилировать программы, а не запускать их по go progname.go? Если ты go run имеешь ввиду, то он так-то делает shadow compilation. go run просто создает временную директорию, и туда пихает твой скомпилированный бинарник.
Checked exception — грубейший анти-паттерн. Даже использование исключений для контроля потока исполнения часто имеет смысл, а вот за checked exception надо бить по рукам.
>>1188604 Checked exceptions нужны когда предполагается, что в случае возникновения ошибки, она обработается и выполнение кода в скоупе продолжится.
Но на практике 99% случаев обработка checked exceptions заканчивается логированием и прерыванием процесса исполнения кода. А в оставшихся 1% случаев разработчики сами знают что им нужно и напишут соответствующие кетчи без пинков от компилятора.
>>1188771 А вот и формошлепы подоспели. Ну почему я не удивлен?
>>1188774 Проще != легче. Но есть такое ощущение, да.
Алсо: https://groups.google.com/forum/#!topic/golang-nuts/93t0LWvHrKM Прелестно, блядь. Лоллирую. Документация юзает 8 пробелов. Темплейты в плагине плейграунда юзают 4 пробела. gofmt юзает таб, ширина которого по умолчанию 8 пробелов, но который все ставят на ширину 4 пробела (или меньше), чтобы хоть как-то умещаться в 80 символов. Ух, прям как в старые добрые, а ну пошли все ГОвно вилкой чистить, ух епты бля.
>>1188778 Все юзают столько пробелов, сколько захотят, gofmt только приводит все к единому стилю во всех проектах. У меня, например, vim-go (или сам vim, уже не помню) все приводит к 2 пробелам, просто потому что я так привык, но в репе у всех будет код, отформатированный по gofmt.
Разговор с гошником: -Насколько хорош Go? -Docker -Чем Go лучше остальных языков? -Docker -Вам нравится писать для каждого типа данных отдельную функцию? -Docker -Вы любите жрать говно? -Docker
Мне вот интересно, у каких еще молодых языков есть целые репы с перечислением того, что в языке было сделано неправильно и почему не надо его использовать?
>>1189986 >no semicolons at line endings Вообще-то там есть семиколоны в конце строки, просто они (приготовьтесь) НЕЯВНО ВСТАВЛЯЮТСЯ КОМПИЛЯТОРОМ. Поэтому, например, нельзя опускать запятую в конце строки внутри многострокового литерала - Роб Пайк вставит туда точку с запятой. Го такой модный и простой.
>>1189986 Алсо, 90% там сводится к "нет дженериков" и "я повелся на хайп, а потом понял, насколько это хуевый язык для написания чего угодно кроме хелловорлдов".
>>1190370 Я так понимаю, язык создавался ставкой на то, чтобы в момент потребности обобщенного программирование юзать interface{} Что логично, так как обобщенное программирование не является частью парадигмы статической типизации и с точки зрения статических типов надо создавать общий тип для таких ситуация (например тип number для всех чисел).
Но пришла лига с утиный синдромом из статический языков и стала навязывать, что вот нужно пилить им дженерики потому, что эта шляпа в виде MoiHui<MoiZalupy<Jopka>> спасает их во время компиляции и вообще очень нужна, хотя выглядит больше как баг-фикс и по другому эти бараны мыслить просто не могут.
>>1189304 >Насколько хорош Go? Идеален, ты сравни с жабой, вкатываться в ее инфраструктуру будешь годами, хотя писать будешь тоже самое.
>Чем Go лучше остальных языков? Ты программируешь как обычно, но код уже работает асинхронно под капотом, никаких блядских асинков-авэйтов и прочего ада (тем более промисы и калбэки), то есть, тебе вообще не надо держать в голове, что этот код будет синхронным, а тот асинхронным. Для сетевых приложений - это серебряная пуля. Так же статическая компиляция, которая исключает проблему зависимостей на разных машинах.
>Вам нравится писать для каждого типа данных отдельную функцию? Чаще использую тупо interface{}, поясняя в документации, как это всегда делалось в динамик языках. А какая разница? Документацию все равно писать, тесты тоже. Ничем бы меня сильно дженерики не спасли (кроме любви к долгой компиляции)
>Вы любите жрать говно? Человек сам выбирает свои рамки свободы, если ты мечтаешь жрать говно и стыдишься этого, то ты более ущербен, чем человек который берет и делает что ему нравится.
>>1193822 > обобщенное программирование не является частью парадигмы статической типизации
Но оно необходимо для строгой статической типизации, чтобы не проебывать типы и отлавливать все связанные с ними ошибки на этапе компиляции. Ваш interface{} делает из Го динамикопарашу. Но для вас все нормально, ведь по другому вы думать не можете.
>>1193824 > А какая разница? Документацию все равно писать, тесты тоже. Ничем бы меня сильно дженерики не спасли (кроме любви к долгой компиляции) > Не очень-то и хотелось! Только выиграли! И как заметил господин выше, это превращает го в динамикодрисню с отсутствием гарантий, из-за которых статическая типизация имеет смысл.
>>1193859 Сектанты всемогущего компилятора подъехали, которые верят что компилятор защищает их от всех известных микробов ошибок. На самом деле 90% офисных клерков, тупо дрочат на автокомплит в IDE и не осознают, что проблема с типами преувеличина.
> Сектанты всемогущего компилятора подъехали, которые верят что компилятор защищает их от всех известных микробов ошибок. Straw man argument во всей красе. > проблема с типами преувеличина Анус твоей преувеличен. Есть подходы, дающие больше гарантий, есть подходы, дающие меньше. В промышленной разработке имеет смысл выбирать решения, дающие больше гарантий.
>>1170500 Определённо кто-то должен создать язык с возможностями жса, элегантностью питона и байтоёбством крестов, да ещё ии с ООП. Создатели пщ хоть попытались
Котлины, расты, свифты... Нафига вы тащите сюда хипсторские языки, где до сих пор нужно явно писать асинхронный код? Что это за двухтысячные вы сюда тащите?
Меня заставили ковырять опердень. Есть прототипы на го и джаве. Суть такова, что надо написать рест, который будет позволять заливать файлы большого размера и файлы, помещающиеся целиком в тело запроса пост, добавлять их в GridFS и запрашивать метаинформацию о файлах. Есть рабочий прототип, но мне не нравится, что пришлось писать свое локальное файловое хранилище. Есть библиотека, которая позволяет развернуть локальное хранилище, создавать файлы, удалять и добавлять к ним байты по имени файла или по его метаинформации (например, идентификатору)?
>>1194595 Нет, сам иди нахуй, каникуляр. Я много гуглировал и нашел только разные убогие рест-сервисы для сохранения и получения инфы о пользователях. Но здесь не тот случай. Здесь нужно работать с БОЛЬШИМИ зашифрованными файлами, которые передаются и собираются по частям, которые можно обновлять, находя файлы по разным параметрам, а потом заливать в GridFS.
>>1194621 Каникуляр, дело не в языке, а в том, что необходимых библиотек нет ни на Java, ни на Go. Смотрю тысячи разных фреймворков для создания REST API, все работает))) искаропки))) запустил и заработало)))) но загвоздка в том, как локально хранить и обновлять файлы, полученные по частям, дописывать к ним байты и прочее.
>>1194633 >Впрочем, чего и ждать от вебмартышки Ой блять, каникуляр ебучий, иди нахуй. Любая работа это макачество. Какой язык ни возьми, везде пишут неповоротливую опердень. Вероятно, ты какая-нибудь легаси C++мартышка, coq-петухан, хаскелист-борщееб или прочая нечисть. Кем еще ты можешь быть, учитывая, что ты сидишь на сосаче, и 95% задач в айти это разное крудошлепство?
Понятно, почему за опердени платят. Библиотек и фреймворков под необычное крудоговно не придумали, поэтому лучше заплатить мартышке типа меня, которая напишет minimal viable product.
>>1195939 А как ты обойдешся без interface{} например в telegram bot api?Где на каждый запрос возвращается структура, в которой поле Result меняется в зависимости от запроса?
>>1196412 Для написания ботов ИДЕАЛЬНО подходит любой язык, на котором есть либа для работы с апи этих твоих ботов. Каналы и асинк есть уже везде. Спойлер: у тебя синдром утенка.
>>1196360 Для ответа реализуешь свой декодер, который сначала в дженерик-структуру парсит Result, а потом уже возвращает соответствующую структуру, реализующую общий интерфейс Result. Не знаю, какой там API, и времени сейчас более конкретно отвечать нет, но в похожих ситуациях я как-то так действовал. Можно и сразу дженерик-структуру возвращать, но при этом ты будешь много лишних пустых полей тягать и потеряешь все профиты от типизации. interface{} вообще ничего не решит здесь и лишь размажет боль с определением типа ответа по всему проекту.
>>1197091 Нет, не избавляюсь. Он же присутствует в коде. Нет, не избавляюсь. Он же присутствует в коде. interface{} это что-то динамическое, неопределённое, поэтому я думаю, он здесь уместен.
>>1197100 Мне просто лень копаться в коде и разбираться почему он там. В общем, надо стараться его избегать, только для всяких неопределенностей использовать. Но не писать, как замену дженерикам, типа передал в функцию, определил тип, вызвал преобразование согласно типу
>>1197253 Вопрос в том как обойтись без использования interface{} для поля с неопределённым типом. Смотри сначала о чём говорили, до того как гаписать комментарий.
>>1199854 Kotlin и Java, когда речь идет о чем-то, сложнее реста-стейтлесс агрегатора данных, параллельно запрашивающих источники данных и объединяющих данные в модель.
>>1199958 Блядь, та же жаба этот котлин, такие же жабовские толстенные фреймворки, которые жрут столько памяти, что не умещаются в 512 ОЗУ где какой-нибудь php летает еще и с базой. Те же тормоза пока JIT не стартанет, а потом под нагрузкой не упадет это все и заново начнет стату собираться чтобы скомпилить но уже на тот момент все упало от таких маневров Те же избыточные либы, вкатиться в которые тебе придется читать целые книги хотя нужно 1% функционала из этого оверхеда и столько же времени, чтобы решить какую-то мало-мальскую проблему.
Если у тебя не целая стойка серверов, про жабу забудь, это игрушка жирных компаний, которые могут позволит себе тонну железа и тонну индусов чтобы очередную фабрику фабрик поддерживать
>>1200000 Поясни, все так и есть, ты вызываешь внешнюю функцию, происходит переключение контекста, если ядер много то может быть даже на соседний поток попадет. Делаешь запрос в бд, происходи переключение, обращение к файлу - переключение, http запрос переключение и так далее, ты даже не держишь в голове, у тебя все асинхронно у этого есть своя цена, нужно дробилки прирывать руками, но это того стоит чтобы писать асинхронно синхроный код, никаких калбэков, никаких промиссов, никаких асинков
>>1199958 В рантайме также. Памяти жрет чуть меньше, бо инлайнит везде где только можно, в отличии от джавы (хоть invokeDynamic, но все равно). Компилируется на 2-5% дольше. Джарники немного толще.
>>1201206 Слайс - это структура с тремя полями: указатель на массив, длина, вместимость
Поэтому, когда передаешь слайс, он передается по значению ( то есть копируется, по сути), но так как слайс содержит указатель, то мы можем менять значения в массиве
>>1206940 Согласен, а наследование и нинужно, подход composition over inheritance приводит к меньшей связанности (low coupling). В принципе можно писать так же, как и привык на Java/C#
>>1207233 Я попробовал переместить блок кода вниз, без функции, но тоже хрень. Теперь таймер работает норм, но он реагирует на то, был ли ввод поздно или не только после ответа.
>>1207530 Я в языке не шарю, изучаю его только час и возможно делаю ебалу. На первом пике функция, которая должна быть дублирована на кучу потоков. На втором пике кусок кода с циклом и вывод программы. Почему-то каждая горутина не входит в бесконечный цикл как задумывалось в функции и выполняется один раз.
>>1207532 >>1207534 Проблема в том, что твои горутины не успевают отработать, потому что горутина main завершается. Добавь в main в конце time.Sleep(10*time.Second) и са увидишь, что всё выполняется.
>>1208078 Ну, есть хэндлер, который принимает гет параметр - строку. Её нужно передать в канал, который читает функция обрабатывающая эту строку. Соответственно канал нужно передать и в хэндлер и в функцию которая обрабатывает строку. Вопрос в том как это лучше сделать.
>>1208127 Описываешь ситуации специально для тех типов, которые хочешь принимать. Удобная альтернатива перегрузке. Необходимость принимать всё подряд невообразима в реальных ситуациях. Разве что для списка, но слайсы могут быть из чего угодно и этого достаточно.
> создавая десятки потоков Нет. Ты как вообще здесь очутился? Горутины легковесны, потоков ОС гошный рантайм без надобности не плодит, поэтому горутинами прямо так раскидываться можно без подводных камней.
>>1208899 Вангую, что нет, так как он объективно требует некоторых интеллектуальных усилий для его освоения. Большинство же кодомакак всю жизнь пишут на вариациях бейсика, который они выучили еще в школе: шаг влево, шаг врпаво - не могут, не понимают, появляется баттхерт и они уходят в отрицание.
Впрочем, ничего плохого в этом нет, раст - нишевый язык.
>>1209092 > так как он объективно требует некоторых интеллектуальных усилий для его освоения. Конечно потому что ТУПЫЫЫЫЕ, а не потому что в нишах в которых пишут на скале-жаве-свифте чаще всего просто нахуй не всрался системный язык без сборщика мусора.
>>1208831 > Ничего нового и революционного в его реализации нет. Вот тут плюсо-растоблядь говорит ровно обратное – https://youtu.be/SsEMc17Kzo4?t=46m12s , в то время в Д сборщик мусора течет как сука, это норма, и никто фиксить не собирается.
>>1209148 >Это был первый промышленный язык, код на котором выполяется в виртуальной машине. Write once - run anywhere. Это классика, это знать надо.
На самом деле, просто случайно сложившиеся обстоятельства. Потребности у индустрии в джаве не было. И что такое "промышленный язык" ? Нет такой вещи в природе.
Сап, аноны. Не читал весь тред, так что не кидайте тряпками, если это уже тут написано. Такой вопрос - где используется язык Го сейчас? Я имею в виду, какие вакансии требуют его знание основным - мобайл девелопмент, гейм, или для программ на десктопе?
> а об их "стабильности" ходят легенды? Разве что в твоем манямирке, хороший софт сюда же дополнительно инфлюксы всякие, работает не хуже плюсоговна, и заметно лучше жаваговна. мимопроходил
>>1159767 (OP) ребят, как ебилдить с сорсов? Хочу проксю собрать, а go get не пашет на официальный репо. Да и вообще где мой mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j4 && sudo make install
>>1199868 Лол, джява. JVM сосёт хотя бы уже потому, что там нет никаких встроенных механизмов асинхронности: ни грин тредов или корутин как у гошки или эрланга, ни эвент лупа как у ноды. Хуева туча либ несовместимых между собой от вертексов до котлинкорутинс. Это просто старое отсталое говно, на котором писать ансинхронщину и параллельный код больно и неудобно.
>>1213173 >JVM сосёт хотя бы уже потому, что там нет никаких встроенных механизмов асинхронности в скале и кложе есть (остальные жвм-языки ненужны (за исключением легаси))
>>1213217 Нет там нихуя, ты не понял суть, у тебя есть либы но экосистема к ним не готова, вот есть у тебя акка и квазар или вертикс - збс. (они конечно сосут у го по производительности и потребления памяти, но суть не в том). но толку в этом немного, потому-что большинство либ в эоксистеме их не используют, ты будешь просто обмазывать ими многочисленные тредпулы со страым блокирующим говном.
>>1213389 Проблема в том, что асинхронность по дефолту проще, чем многопоточность, ибо с ней тебе не нужны мьютексы, локи, каналы и все вот эти вот примитивы синхронизации. (Хотя каналы могут быть полезны и в однопоточном евентлупе). Го же вынуждает скатываться в многопоточное программирования, когда тебе нужен просто асинхронный код.
>>1213595 >Проблема в том, что асинхронность по дефолту проще, чем многопоточность, ибо с ней тебе не нужны мьютексы, локи, каналы и все вот эти вот примитивы синхронизации.
Угу. Вместо этого тебе руками нужно выполнять работу планировщика, вручную организуя каждые пять строчек кода.
>>1213598 Не нужно. Всё что тебе нужно - это писать await перед асинхронными вызовами. Это куда меньшая когнитивная нагрузка в условиях, когда сам язык тебе никак не помогает писать многопоточный код (например как Rust).
>>1216859 >Что именно там в шапке написано? >>Дженерики нужны
Лол. Обожаю это классическое го-отрицалово.
>го типобезопасный? >нет >почему? >нет дженериков >дженерики - это не предмет острой необходимости
Ненужно, тольковыиграли, ага - классика. Ты понимаешь, что вопрос был не в том, острой необходимости этот предмет или тупой, а в том, типобезопасный го или нет? У тебя манера ведения дискуссии один в один как у религиозных фанатиков, вот ей-богу.
>>1217336 Бля, как же меня расстраивает вот эта хуйня. Почему человеки недооценивают статическую типизацию? Может быть их стоит заставить код на питоне, который хуй потестишь и который кидает runtime error где-то глубоко в проекте из=за того, что опечатался, нет метода, проебал параметр
>>1206959 Ты блять уёбок поехавший. Ты когда-нибудь писал компилятор или что-нибудь другое не менее сложное с тучей похожих объектов? Не возможность построить чёткую иерархию наследования ещё тот головняк в Go, которого нет с C++ или Java.
Забудьте уже про эту поебень. Её придумали для джунов и интернов в Гугле.
>>1219741 Человеки успешно ебошат на жс, пыхе, питоне, руби, ерланге и в хуй не дуют. Осло, почему в пример ущербности динамикопараши всегда ставят питон при таком то ворохе динамических языков? Это из-за сильной типизации так пичот?
>>1219752 > всегда ставят питон при таком то ворохе динамических языков Антош, ну тi чего? Петно популярнее и извеснее, чем то, что ты перечислил. Вот я пишу на Лисп. Если заменить Питон на Лисп в моём утверждении, тебе станет понятнее? НИ-ХУ-Я Скорее наоборот.
> жс Последний ECMA6 отличный язык, но там свой браузерный мир.
>>1219741 >Почему человеки недооценивают статическую типизацию? Потому что она все еще not good enough в большинстве случаев. Экспрессивность, robustness и контракты api важнее.
Анон посоветуй краткий гайд по основам языка. А то я начал читать книгу the go programming language, а она оказалось долгой и скучной. А я хочу сразу начать писать код.
>>1194565 > файлы большого размера А как насчет компрессии на клиенте и декомпрессии на сервере? Например используя LZMA. Если файл больше предела то сжать его соответствующим шакалом.
>>1159767 (OP) Вот поясните для идиота, что такое микросервисы? Вот я хочу научиться кодить на Go. Дайте мне 5 примеров петпроджектов с МИКРОСЕРВИСАМИ.
>>1225864 Вот представь вк. Теперь раздели функционал, который там есть, на модули. То есть, есть модуль, который ответственный за работу с музыкой, модуль на работу с видео, модуль на фотки, модуль на написание коментов и тд. Ты типа разраб вк, и решил запилить новый суперплэер для видео. В монолите, тебе бы пришлось для тестов, работать со всем сайтом. А тут, ты просто отключаешь модуль с видео, который есть, подключаешь свой и радуешься.
>>1225963 Все верно. Добавить стоит только то, что каждый микросервис может работать независимо от других. Хотя почему-то часто это игнорируют, и получается тот же монолит, только на словах микросервисы
Как задискаверить сервис в интернетах? Делаю p2p нетворк и для связи нод хотелось бы использовать Discovery протокол без зашитого IP адреса seed ноды. Текущие uPnP/SSDP - дискаверят только в рамках LAN. DHT/PEX исползьуют предопределённые seednode. ХЗ как дискаверить свой сервис в сетке.
>>1229556 Бро, в этом треде тебе точно не помогут, тут одни токсичные школьники (голанг же!). Создай свой тред про п2п, ну или оживи networking thread например: https://2ch.hk/pr/res/1189320.html
Справедливости ради, я не ебу, как забутстрапить сеть без сиднода, и не уверен, что это возможно - но тред про п2п точно лишним не бывает, может кто и подскажет каких-нибудь интересных альтернатив
Вощем есть всего две более-менее популярные программки, которыми мне не удалось полноценно воспользоваться за всю жизнь. Одна тупо зависала в процессе работы без каких-либо ошибок, вторая наоборот после установки закормила пачками ошибок и продолжает это делать при каждом запуске компутера. Причом иногда они начинают частично подавать признаки жизни и потом опять дохнут, абсолютно рандомно без каких либо закономерностей. Первая программка это клиент сети Ethereum (Geth), вторая это Docker. Сейчас вот узнал чта обе эти программки написаны на Go, кек
>>1232647 у тебя Same возвращается при первом несовпадении, а go Walk завершается только при исчерпании канала. В итоге, при несовпадении одна или две горутины навечно блокируются и держат ссылку на t *tree.Tree
>>1241224 И то, что судить язык по конкретному коду - это неправильно. Тем более, что докер зависит от ряда системных настроек и способа установки. И если ты неправильно его готовишь, то сам дурак. С клиентом под этериум не работал, он запросто может оказаться куском говнокода.
в го вообще есть методы для фильтрации... и вот всего такого. У меня вот есть слайс с кукисами. Как мне пройтись по нему и найти куку с нужным мне именем? Я пока это делаю через циклы, но как бы... ну епт, ну должно же быть хоть что-то такое?
>>1242791 а чего еще в го нет? Мне вообще не очень этот язык понравился по синтаксису и по интеграциям с ide и вообще... Меня подкупило легкость создания бинарников. До этого смотрел на c# и там пиздец полный в этом плане. Чтоб создать 1 .exe нужно целый ритуал выполнить, а потом этот exe будет помещен черт знает куда и вместе с ним будет куча других файлов. А тут все просто, нажал кнопку и вот тебе бинарник. Можно было бы питон, но там тоже пляски с бубном нужны чтоб в бинарник скомпилировать.
>>1242831 >VSCode ну я вот пытался в нем писать. У меня так и не получилось автоматическое форматирование выключить. Вернее удалось, но только полностью. По сохранению файла он просто брал и все пробелы в табы конвертировал (не надо говорить как надо или не надо. Я хочу пробелы и го умеет работать с пробелами). Проверка ошибок происходила только по сохранению файла... и все такое. Очень неудобно. Скачал goland и чуть получше стало.
>>1242831 >У тебя там хранится "имя-> значение"? Нет. Там слайс структур http.Cookie
>>1243286 Что-то тут очень неладно. Возможно разработчики решили что с такими решениями они поторопились. Да и ООП там есть, проста замаскированный под структуры.
В стдлибе еще unsafe используется, но это не повод его в своих приложениях направо и налево юзать. Паника это не аналог исключениям в других языках. Паниковать стоит, например, в тех случаях, когда в ходе работы твоего приложения его состояние стало невалидным и кроме как тушить свет уже ничего не остается. Рандомный пример: на входе какой-то функции принимаешь interface{} и ассертишь его в какую-то свою структурку. В определенный момент ассерт не проходит (разработчик по ошибке стал передовать в функцию какую-то ебалу), хотя по логике работы программы - должен. Вот тут можно и запаниковать.
>>1243906 >на входе какой-то функции принимаешь interface{} и ассертишь его в какую-то свою структурку. В определенный момент ассерт не проходит (разработчик по ошибке стал передовать в функцию какую-то ебалу)
>>1216444 >Go — язык со строгой статической типизацией.
Няши, покидайте статей (или видосов на ютубе) по разработке веб приложения на каком-либо фреймворке. Все, что я нахожу - это написание на чистом go, через http пакет. Но ведь есть огромное количество фреймворков, вот тут https://github.com/avelino/awesome-go#web-frameworks например их целый список. Другое дело, что из их документации не очевидно как ими пользоваться, просто вывести строчку "it works" и сказать "все ахуенно" может кто угодно.
>>1244097 При чем тут пыха? Мне надо сделать интерфейс к бэкэнду, который написан на го. Куда я пхп запихну? А в фреймах я копаюсь из соображение что если они есть, то их писали с той же целью. Зачем пилить велосипед?
>>1244110 > >При чем тут пыха? Мне надо сделать интерфейс к бэкэнду, который написан на го. Куда я пхп запихну? >А в фреймах я копаюсь из соображение что если они есть, то их писали с той же целью. Зачем пилить велосипед? >Ответы: >>1244135 бери самый простой фреймворк. лучше вообще jquery обойтист
>>1244191 > Охуеть, в первый раз слышу, чтобы САЙТ потреблял траффик, а не пользователи. Слушай, мне иногда хостер письма пишет, что я дохуя траффика потребляю и любезно предлагает перейти на тырпрайз тариф. Я отказываюсь, конечно. Но не подскажешь, как можно оптимизировать сайт чтобы траффик уменьшился?
>>1244198 >ли. Слушай, мне иногда хостер письма пишет, что я дохуя траффика потребляю и любезно предлагает перейти на тырпрайз тариф. Я отказываюсь, конечно. >Но не подскажешь, как можно оптимизировать сайт чтобы траффик уменьшился? использовать прогрессивные фронтэнд-фреймворки )
>>1244203 Какая разница какие фреймворки использовать, если пользователю надо передать одинаковый объем информации - условно картинку и текст? Про UI речи не идет, он простейший.
>>1244213 Во-первых, ты ответил не мне, а во-вторых про cdn и компрессию я знаю и использую. Другое дело, что это уменьшает траффик потребляемый ПОЛЬЗОВАТЕЛЯМИ а не СЕРВЕРОМ.
Ну и по поводу "прогрессивных фреймворков" - на самом деле в каждом рофле есть доля рофла - используя javascript-фреймворки для фронтэнда ты можешь вебпаком свой код обфусцировать до минимальных токенов и далее нужник тебе их пожмёт.
>>1243906 >В стдлибе еще unsafe используется, но это не повод его в своих приложениях направо и налево юзать. в unsafe не гарантирована обратная совместимость, panic-recover подпадает под соглашение и будет работать на спецификации 1.x
>Паника это не аналог исключениям в других языках. Ну-ка, поясни чем panic(myError) и recover() тремя вызовами выше не аналог Raise - Catch в других языках? кроме того, что философски это не Go-way
>>1245360 >в Российском формате электронных документов они в сраном cp1251 А каким ведомством это регулируется? У них есть законодательные акты, обязывающие их использовать эту кодировку?
>>1159767 (OP) Немного поколупал с утра го и с меня хватило на всю жизнь. Как можно иметь дело с этой примитивной парашей каждый день? Вы же все на антидепрессантах должны сидеть. Я ебал
>>1245405 >Как можно иметь дело с этой примитивной парашей каждый день? Это проходит, когда ты начинаешь работать с чужим кодом. Или своим, но после полугодовой паузы. И ты, о чудо, понимаешь, что он делает.
Возьмем тот же С++/Раст/Котлин, это если мы говорим о не "примитивных" языках. Пишется то код легко и весело. Только потом разобраться в жидкой кашице из шаблонов, расширений, перегруженных операторов и функций очень трудно.
P..S. Двач, как тебе моя коллекция хипстерской литературы?
>>1245466 >Нинужная макулатура Бебебе. Знаю я "программистов", которым кроме StackOverflow и ctrl+c / ctrl+v ничего не надо. Только вот одна проблема: - Garbage in, garbage out
>>1245475 >Хорошо, что ты там в этой макулатуре такого вычитал, чего нет в документации по языкам? Что вы понимаете под понятием "документация по языкам"? Language Specification? >на русском Для меня это преимущество. При написании - Тех задания - Паспорта проекта - Справки разработчика/пользователя - Комментариев - Баг репортов. знать официальный перевод терминов полезно. Иначе получается смесь нижегородского с французским // Эта кложура синкает линк из пула и ретурнит ерроры в слайсе
>Что есть "нормальные языки"? >Перл, Си Странный список. Выбрали с помощью монетки?
Но раньше вы утверждали, что >в нормальных языках есть доки с описанием и примерами Для С есть официальный(!) сайт с "доками" и "примерами"? Я знаю что официальная спецификация языка С - платная. Около 200 долларов https://www.iso.org/standard/74528.html - защищена копирайтом. Что то не сходится.
>>1245553 >Тоесть менее ненавистные С++ на 10 месте и Матоаб на 15 тебя не смутило? >А самый пиздатый это Р и Котлин, кек, рейтинг смузихлебов он такой Что меня должно было смутить? Это опрос на StackOverflow. А как мы выяснили SO - это основное место? где месные нищие духом "программисты" побираются крохами кода.
По крайней мере, я надеюсь это StackOverflow, а не SQL.ru/forum
Пщ едва не единственный язык который на уровне синтаксиса позволяет синхронизировать подпрограммы, разве только не Pony или Erlang. Это в 2018 году-то
Дженерики нужны, дженериков нет. Просто смирись.
Обработка ошибок получается охуенно через http://github.com/pkg/errors | в приложениях обычно можно просто паниковать на ошибках.
HTTP-сервер для убер максимального маня-хайлоада: https://github.com/valyala/fasthttp
В 1.8 или 1.9 уже можно "нормально" сортировать через sort.Slice()
Не нужно пиздеть про толстые бинарники, их размер значительно уменьшается одним маленьким Makefile.
Вкатываемся в эпоху докера, микросервисов и адово кошерной сетевухи.