Вы видите копию треда, сохраненную 24 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Если ты не синтаксический дрочер, то можете заменить некоторые технические плюшки языка (достойная производительность, асинхроность под капотом, компиляция (никаких разогревающихся машин)).
Для синтаксисо-дрочеров стало неким спасением озвученный проект Grumpy (траспайлер питона 2.7 (может в будущем и 3) в го). Данный траспайлер может реально дать жизнь го (без агрессивного маркетинга).
Маркетинг:
Язык перехайпован, количество долбаебов в нем зашкаливает. Даже популярные евангелисты тупы как дерево, а некоторые статьи вызывают просто боль. У меня одно время так бомбило от ру-укр-комьюнити, что я положил болт на язык, даже когда он как инструмент подходил под мои задачи.
То что хейтеров тоже много, я говорить даже не буду. Но будьте готовы к долбаебом и там и там.
Было бы на самом деле похуй, но маркетологи передрессировали комьюните так, что они впитывают все как данность, хотя местами язык можно было подпилить, где-то подсластить сахарком - сделать реально лучше (причем без критических правок).
Хватит лирики, начнем:
-Мой язык Х лучше Го.
Абсолютно, после го я стал даже нормально относиться к js, вообще я перестал быть фанатом идеального, на языки смотрю чисто как на инструмент. Ложу болт на многие правила и избыточные абстракции (я смог побороть юношеский максимализм в 30 лет, сможешь и ты).
-Го неудобное говно.
Согласен, но после того как стали пилить норм IDE (Goglang) - страдать на нем приходится меньше (собственно и джава без норм IDE тот еще кусок говна, поверьте).
-С Го ты поебешься.
О да, я давно уже не помню, чтобы тупил на какой-то ошибки как начинающий кодер. Го полон сюрпризов, но со временем просто принимаешь как данность (как в пхп и js все эти подводные камни).
Я даже еще раз подчеркну - го пиздецки непродуманный язык, но с годными техническими решениями (и последнее в вашем выборе должно перевешивать)
-Скрипты и динам языки для веба лучше.
Верно, но если ты так же заинтересован в экономии ресурсов вместо скорости разработки (и не знаешь джаву или же любишь больше процедурный стиль) - го твой выбор (и на этом можно было бы закончить).
-Го и пхп.
Пхп так оброс сейчас ООП и "джавой", и так все там это нелепо, что го как глоток воздуха для старой школы. Он напоминает стиль программирования на пхп в годах этак 2002-2004. И реально, как и в старом процедурном-пхп, в го можно использовать единый контекст для веб сайта подобный вложенным структурам типа
ctx.Conf.Debug.ShowDebugPanel = true
ctx.Path.TemplateDir
-Го и джава.
Чтобы вкатиться в оркужение го и запилить рабочий crud-проект - мне потребовалась неделя.
Чтобы вкатиться в окружение джавы и просто его выучить - мне потребовался месяц (даже больше, но это было давно). И до сих пор я там чувствую что много не знаю и то что фреймворки во многих случаях ограничивают меня.
Джава мне нравится больше го, она местами продумана (несмотря на свою старость), стандартизирована (имеет свои внутренний стандарты - это круто) - но блять она какая-то избыточная. Я как скрипто-макака оплевался писать бойлерплейт за бойлерплейтом, ради достижения простых вещей.
Я кстати, не нашел какие-то независимые либы для построение простого веба на базе простых серверов (кругом фреймворки или уже готовое, даже url-роутинг хрен толком найдешь).
Другая проблема джавы то, что в го встроенная асинхроность, а дрочить на бойлерплейтном языке еще и калбэки или фьючеры, или пытаться вникнуть во всякие Реакты и Акторы - это не...
Хотя го местами сосёт в тестах, но я понимаю, что юзая го я уже юзаю асинхронность под капотом.
-Го и питон
Если запилят норм транспайлер для 3.0 - я перекачусь на синтаксис питона. Вообще это будет вином десятилетия для меня в языках, если конечно перформанс сильно не просядет.
Самая мякотка в том что на го можно писать десктопные приложения
Тогда в чём смысл писать на ГОвне, если заместо фреймворка всё равно тот же сишный/крестовый сладкий хлеб? Кутэ можно и к джяве прикрутить, так-то.
mamashu tvoyu ebal
как там го, еще не помер?
Да срать, главное что теперь не нужно дрочить в Spring, в его клон mvc, во всякие бины и POJO, в XML, JRA, JRS JNDI, прочие JХУИ интерпразных долбаебов
Если Дора не законченная верстальщица JS, то либо разберется за две секунды, либо посмотрит стектрейс и найдет имя компании в названиях пакетов.
Дора охуевает от сопровождения всего этого говна в сравнение с полезной работой (бизнес-логикой).
Но ты тупое животное, ты не можешь понять смысл сарказма картинки без ражевывания.
Ммм, хорошая шапка с плюсами и минусами. Малаца ОП. Только, правда, это не спасёт этот тред от холиварящих животных и припизднутых фанбоев.
Точно. Возьмут умного.
Но согласись это будет круто - писать на динамик языке получить себе шустрый продукт.
Динамика по определению не будет шустрой, увы, да и в чём проблема юзать питон? Перфоманс? Вряд ли кто-то на нём будет писать серьёзный миддл левел. В остальном он подходит отлично просто. Не нравится Го и нужен перфоманс и не хочется ебаться с проблемами простоя из за ГЦ? Юзай Си или Руст.
>>961695
Настолько шустрый, что накатал тебе за щеку, что ты не заметил. Съеби, Илюша.
Педераст, плз.
Лол, этими слухами уже несколько лет кормят. Такое впечатление, что гуглозог и пайк специально их распускают, чтобы все продолжали сидеть на го и надеяться на лучшее. "Надо потерпеть, но скоро ух как заживём!"
Добавлю, что даже в С11 лучше обстоят дела с бойлерплейтами благодаря старым добрым макросам и _Generic.
>Динамика по определению не будет шустрой
Таки ожидается транспайлер, а не транслятор (которые обычно получаются даже медленней).
Ну то есть, если парсер увидет что ты юзаешь int'ы то он сделает переменную такого типа (а не общую переменную с проверкой типов на каждый чих как в динам.языках)
Лоботомированные смузипидоры решают несуществующие проблемы, а потом героически рассказывают об этом на митапах.
Что за говно ты нам принес?
Это как у жабоидов? Типа наша очередная свистелка-перделка самая быстрая, вот смотрите же. А потом срутся на всяких techempower или сыпять еггорами от нагрузки.
Не приносили кал, о котором слышали 1,5 анона.
Да и вообще питон под серьезные нагрузки не берут (хотя любой каприз за ваши деньги).
Хочешь передать из пакета А структуру в B функцию - и получаешь хуй! Потому что в сигнатуре функции ты юзаешь тип из А и соответственно импортируешь его.
Что блядь за пиздец? Как на этом кодить большой межпакетный проект??
>Хочешь передать из пакета А структуру в B функцию - и получаешь хуй! Потому что в сигнатуре функции ты юзаешь тип из А и соответственно импортируешь его.
Что-то нихрена не понял, что ты закодишь пытаешься. Накидай пример, а я скажу, что не так.
Это одна из причин почему в си есть .h и .c файлы, а в паскале interface/implementation секции.
Можешь сделать и так. А вообще, лучше бы ты для ChildName брал родителя, а потом от него спускался к чилду. Но тут зависит от юзкейса, хотя в твоём случае, если у тебя вот так, то тебе нужно что-то менять
Мне твой код не нравится, потому что ты не сможешь узнать имя childa, не зная, кто его отец.
Я бы наверное вообще создал третий класс Family, в котором были бы и Parent, и Child. И в дальшейшем работал бы через него
Я же сказал, зависит от задачи. Третья структура тоже нормальная идея. Там вообще 1к способов сделать это в зависимости от задачи
В пакете X я вызываю функцию из пакета Z.
В эту функцию я передаю структуру (контекст) из основного пакета X.
Как выглядит код пакета Z:
pakage Z
func foo(ctx X.Contex) {
}
Казалось бы все логично, но чтобы передать контекст, я должен прописать его тип (получается что из X я вызываю Z, а тот импортирует X потому, что надо прописать тип и получается циклический импорт).
То что можно решить это добавив контекст (структуру) в отдельный пакет, это понятно. Но это какая-то избыточная сложность и я теперь вообще реально боюсь где-то на 10 вложение в большом проекте снова поймать этот циклический импорт.
В общем как кодят в Го такое, как передают контекст (окружение) между пакетами?
В том то и дело, что X у меня нечто типа движка, а Z нечто типа контроллеров.
Как бы движок дергает нужный контроллер и передает свой контекст.
Как выход вижу, вынести контекст, хотя логически он как раз контекст этого движка и часть его.
>>962778
Я бы согласился, если бы ты мне на пальцах доказал, что вышеописанная схема движок-вызывает-контроллер - нелогична (как ты говоришь - хуйня).
Бро, циклические импорты -- зло и они запрещены во некоторых языках с модульной системой.
Тут же вроде логично, что стоит вынести это в отдельный пакет.
>что стоит вынести это в отдельный пакет.
Вынести контекст (ту структуру движка)?
Чисто мысли.
Я все равно это не понимаю, вынося структуру в отдельный пакет, я просто делаю посредника между циклическим импортом.
Я конечно понимаю, когда классы зависят друг от друга - это плохо, но вот с пакетами не понимаю.
Получается либо делать один монолит, либо очень тонкие пакеты (и множество их), чтобы в будущем просто не попасть снова в циклический импорт где-то на 5-10 вызове.
Еще вопрос
>зло и они запрещены во некоторых языках с модульной системой.
Что за другие языки (я впервые с таким столкнулся) и что имеется ввиду под модульной системой в данном контексте?
Может быть такое что в го тупо скопировали эту фичу, без особой надобности?
Хотя может кто мне объяснит в каком месте это добавляет модульности для го (так как в реальности мы просто подставляем промежуточные пакеты)? То есть имея некий контейнер (движок) который исполняет некий контроллеры (через функции высшего порядка) - мы получается не можем обращаться к движку (хотя мы в нем).
Это странно.
PS мне почему то думается, писать реально большой код будет сложно на го, если оперировать пакетами только по предметной области (не разбавляя промежуточными пакетами).
Берешь, делаешь само приложение (точку входа), это то, где пакет main
Далее, в пакете main ты можешь либо сразу начать определять роуты, либо сделать пакет app положив его в папку app. Делаешь что-то вроде app.Run()
В пакете app определены роуты, и обработчики, например app/controllers/{home.go,profile.go,page.go,post.go,category.go}, это все один пакет - controllers
После этого в роуте пишешь r.GET("/user/:user", controllers.UserHandler) или же дробишь свои контроллеры по подпапкам, и делаешь что-то вроде controllers/user/user.go и дальше в MUX регестрируешь user.Handler.
Ещё лучше сделать так: app/user и внутри все по юзеру, модели, контроллеры, и прочая хуетень
Посмотри тут: https://github.com/jadekler/git-go-websiteskeleton
>пайтон
И теперь еще го и все. И то у него циклический импорт завязан на принципе работы модулей (там не совсем привычно все).
>Если у тебя движок зависит от контроллера, то почему это разные пакеты?
100% независимые могут быть только феминистки. Но вообще это контроллер зависит от движка (его контекста).
Движок может работать без контроллера, контроллер без движка уже нет.
Естественно между движком и контроллером нужно интерфейс просунуть, но условная зависимость останется всегда.
Спасибо. Попробую вникнуть, но ты, п-омоему, просто мне настройку сервера описал (в его случае он дает реквест и респонс как мой контекст отдельно - то есть тоже самое им пришлось делать промежуточную зависимость иначе был бы циклический импорт)
Вот этот чел, кстати, говорит годноту. Такая схема реально ближе к системному решению циклического импорта, без избыточного создания посредников.
Правда нужно будет отказаться от методов у структур (чисто процедурный стиль поневоле)
>>962711
>>962713
Спасибо, ребята. Ну, я по другому делаю в живом коде, я не был уверен, что я делаю правильно. У есть GameState стракт, который управляет всем процессом игры (пошаговой), у этого стейта есть куча филдов, в том числе и GameBoard, которая в свою очередь хостит Tileset [][]Tile. И вот мне нужно совершить определённые манипуляции с доской и тайлами, но местами логика диктуется глобальной ситуацией, которая описывается филдами самого верхнего парента - GameState, поэтому борде необходимо знать как там обстоит дело у парента - геймстейт, а тайлам иногда надо запросить информацию, которая хранится у борды. Ну и в таком духе. Сейчас у меня этот геймстейт имеет хуйлиард методов, и поэтому у меня всегда есть доступ ко всем чайлдам, грандчайлдам и т.д. Но в определённый момент меня стало смущать, что методов становится всё больше и они все растут на геймстейте, в то время когда логичней было бы чтобы все методы по манипуляции с бордой были у GameBoard, с тайлами у Tile, и так далее (но это не точно). Мне так кажется. Хотя всё вроде работает нормально как есть, методов просто очень много получается у одного стракта.
Представьте, сядите писать реально крупный проект (а не залупу в одном пакете), пишете, модульничаете и все равно, где-то в ебенях у вас может произойти циклический импорт (не на первом вложения, а на хер пойми каком) и не потому что вы из одного пакета вызвали функцию, а просто потому что вы передали структуру (прописали ее тип в сигнатуре функции).
И все ваше приложение превращается в кусок говна. Так как переписать становиться уже невозможно.
Создавать для каждой структуры пакет ради 2-4 строчек кода это тоже нелепо.
Как вы на этом говне пишите?
Ну нахуя ты пишешь на Го веб залупу? Хайпу поддался? Пиши тогда на чём нибудь другом. Это во-первых. А во-вторых, циклические импорты -- это проблема твоей архитектуры и значит, что ты сделал что-то не так. Сказали же, что это модульный язык и для них такое поведение характерно(вместе с инкапсуляцией на уровне пакета, например). Разберись хоть с модульной архитектурой, лол.
Модульная архитектура - это архитектура которая не имеет жестких связей. Так ведь? То есть IoC или интерфейсы (или все вместе).
Что в го понимается под модулем? То что я напрямую из одного пакеты вызываю функцию другого? Или глобальные переменные, аля package.Var? Но этот как раз треш семидесятых.
Я уже спрашивал, что в го понимают под модулями, так как они не являются таковыми (в общей практике)?
Еще раз - модуль это то что ты можешь взять и поместить в другой проект, реализуя только заявленные интерфейсы.
PS логически, мой код не имеет циклических импортов, контроллере дергаются тупо с контейнера. Циклический импорт происходит потому что я пытаюсь передать свою структуру в контроллер (что вообще совсем нормально)
-модуль-1 вызывает дочерний модуль-2.
-модуль-1 передает в этот модуль-2 свой наработанный контекст.
происходит циклический импорт.
Что за пиздец? Или где я тут не прав? Как пишут такой код гоферы?
Я прямо быстро отвечу, ибо на работе, и поэтому пока не вникал сильно, но что тебе мешает просто разнести в 3-й модуль тип контекста, интерфейсы, все дела? И как раз получить слабую связность за счёт этого. Реализация отдельно, контракты отдельно.
Это и делаю, но контекст в себя включает другие структуры, ссылки на сервисы и прочие - он довольно жирный такой и приходится все сейчас переписывать (IDE не смог в рефакторинг).
Но проблема бомбежки в другом, нет гарантие что этот спаггети код потом снова не заворчит о циклическом импорте и опять целые сутки уйдут на добавление промежуточных пакетов.
Слабая связанность не получится, я не в данном случае юзаю IoC (дробление пакетов на подпакеты - не уменьшает связанность)
Хз что с методами делать, вариант только одна структура с методами - один пакет (привет джава, лол)
Попробуй посмотреть как реализован стандартный net пакет в голанге и как они дробят контексты, быть может поможет. Кстати, если не секрет, зачем тебе понадобился Голанг и почему не выбрал джаву?
Могу целую хистори запилить.
После того как слез с последнего пхп проекта и изрядно отдохнув (лол, в запой ушел), я решил залезть на джаву, так как на пхп роста почти не было, а код мы уже писали фактически как в джаве (даже везде типы прописывали - все как взрослые).
Начав обмазываться джавой, первое куда попадает джун через поиск - правильно - Java EE. Но меня вовремя остановили и я уже полез на Spring Boot - в принципе, жизнь стала налаживалась, я реально осилил англ мануал (лучше сотен книг по спрингу, рекомендую, никакой воды).
Проект.
Новый проект состоял из двух частей, один просто веб-морда под нагрузкой (в рамках одного дедика), второй долго расписывать. От всего этого требовалось.
-нормальная многопоточность
-производительность, то есть осознано страдание в "нативном коде велосипедов" ради минимум абстракций и экономия ресурсов.
Ну тут понятно, что сама джава имеет достойный первформанс в сравнение с динам языками, а лезть на С++ - садомаза
Позже, по тестам, спринг меня не устроил и я полез во встроенные сервера.
Там я узнал что весь мир давно асинхронный и что это круто-молодежно и экономит ресурсы. Тут мне и попался го, где вообще не надо было парится и как говорят асинхронность была под капотом.
После джавы и ее собрату пхп - мне го дался не сразу, но я взрослый мальчик и понимал что мне нужна по сути палка, которая может решать задачу.
Го как бы устраивал.
То что джава лучше чем го - это понятно, я до сих пор считаю, что го в качестве любимого языка могут выбрать только долбаебы. Поэтому если человек говорит вам - что выбрал язык не из-за технических решений в нем, а потому что он классный - сделайте шаг в сторону от него, мало ли...
PS На самом деле уже подумываю метнуться обратно в джаву, правда без всяких спрингов, хибернейтов... (ну логгер и undertow возьму), боль конечно. За то я видел какие плюшки это дает (останется только заюзать асинхронные запросы в БД).
>единственным гарантом не обосраться позже в большом коде, это
думать над структурой проекта заранее
>Там я узнал что весь мир давно асинхронный и что это круто-молодежно и экономит ресурсы.
есть же охуенная akka, на которую дрочат всякие adswizz, amazon, apple и прочие любители реалтайм приложений
>контекст в себя включает другие структуры, ссылки на сервисы и прочие
>этот спаггети код
Ну вот и сразу видно, что ваш подход говно.
>IDE не смог в рефакторинг
Для golang сейчас лучшее ide это vscode с плагином, только доустанови все зависимости нужные. И будет тебе и автоформатирование, и подсказка/переход по символам, дока в редакторе по стандартным вызовам, и ренейм глобальный
как по мне - дичь, нелогичные сочетания клавишь (комменты многострочные и обычные отличаются по клавишам значительно), не умеют в подсказки. Например указатель находится между Parse и Int: math.ParseInt(), как мне быстро получить доку к этой функции? какое сочетание клавишь? В Gogland это Ctrl+Q.
Я вообще не использую // в принципе. А про подсказки не совсем тебя понял, ховер на любую функцию выдаст тебе саммари функции + её коммент, будь это твоя функция или стдшная. Ctrl+click открывает новую вкладку с курсором на этой функции.
>>963350
да, можно hover или переехать внутрь скобок, но это очень неудобно. В Gogland это Ctrl+Q и ты видишь краткое объяснение по функции. Иногда очень полезно. Далее, комменты:
В Gogland:
линия Ctrl+/
мульти Ctrl+Shift+/
В VScode
линия Ctrl+/
Мульти Shift+Alt+A (што блядь?!)
Короче, кеймепы ооочень неудобные у VSCode а менять их лень, потому что привык уже к JetBrains.
Или вот ещё пример, я пишу название пакета и смотрю все функции, я не знаю (не помню) какая функция мне нужна и мне хочется про каждую прочитать саммари:
Я просто ввожу название пакета, выпадает аутокомплит, я жму Ctrl+Q и просто стрелками бегаю по списку, вижу краткое саммари каждой из фукнций. Я могу не лезть в доку.
Или вот ещё: пилю свой struct, например Money, нажимаю Ctrl+I (implement) и реализую интерфейс stringer, который позволит переводить money.value = 100.0 и money.currency = "USD" в 100$ в строках. Это оче удобно (кстати отдельный плюс в неявной имплементации интерфейсов)
Ещё есть всякий Code Coverage для тестов, где видно насколько проект покрыт тестами и какие из случаев нужно описать дополнительно. Сам по себе я эту фишку практически не использую, но с недавних пор прививаю себе привычку покрывать тестами все кроме самых тривиальных методов/функций. Короче, что не говори, а gogland на голову выше. Я даже на своем слоупок ноуте терплю, потому что она реально лучше, хотя стоит отметить, что на прошлых релизах я юзал vscode (и плакал), потому что gogland имела баги довольно таки досадные.
>думать над структурой проекта заранее
Именно, только над структурой проекта, а не где ты в ебешься.
Причем именно въебешься, потому что часть проблем ты увидишь не сразу.
Да блин, даже нельзя вызвать родительское API-контекста из дочернего, без хака из нового (совершенно ненужного с точки зрения предметной области) пакета.
То есть, выше описанные методы держать структуры отдельно, функции отдельно это хак (рабочий, но хак).
Свистопляска будет если еще методы завести.
Я кстати понял почему официальный контекст такой корявый, потому что статичный контекст (где в структуре описаны все поля, но в виде ссылок) реализовать нельзя. Можно конечно с хаками, но очень некрасивыми (насколько я понял даже с мапой нельзя, реализуя патерн Репозитария (не путать с аналогом DAO - похожим паттерном в спрингу), тут речь про паттерн хранилище)
Причем, поначалу кажется что просто и можно, но с увеличением сложности, реально понимаешь что жопа.
И что мы видим, все ебутся как бараны в гиганских монолитных пакетах и думают, что они пишут пиздецкий модульный код.
Если в питоне циклический импорт запрещен по причине работы самого питона, то в го непонятно зачем это сделано (скопировано?), ведь код все равно линкуется по пакетам, чего страшного если код уже загружен и просто не загружать снова??
В норм языках можно даже в рекурсию попасть на 30-ом вложение (видел такое на ленивой загрузке) и похуй, сам виноват. А тут запрет аж на уровне пакетов.
Хуй, хуй этот язык пригоден для больших проектов. Либо скрипты, либо в одном пакете, либо надробить тучу мелких и промежуточных пакетов (хаки эти).
Это мой последний въебон в языке. И я бы поверил даунятам, что циклически импорт это зло, если бы язык не был статически типизированном (где для указания типа, тебе все равно надо импортировать целый блядский пакет!).
Но проблема даже не в этом, если ты не юзаешь выше описанных хак, ты все равно, рано или поздно, попадешь на эту хуйню с циклическим импортом.
Ну или юзая эту хуйню с официальным контекстом.
Го это язык, который в торопях пилили, из-за надвигающихся судов по джаве, чтобы если что не всосать сильно, имея возможность впихнуть альтернативу.
Именно поэтому он такой:
-пустой по синтаксису
-максимально не похож на жабу (а значит максимально обгрызан ООП)
-ну и потому такой кривой - тяп-ляп.
Ну и видимо нашлись люди, которые полюбили своего урода и стали двигать на своих 20% это говно внутри компании
Ну что тебе мешает разнести в другой пакет типы? Ведь это типичный паттерн(а циклические зависимости - антипаттерн) во всех модульных языках даже со строгой типизацией, хаскель тому пример. К тому же, тот же мавен не умеет в циклические зависимости на билде и тогда сосай шляпу. Но вообще, забей, не используй его на больших проектах, если не можешь перестроиться с ДДД подходов и прочего, времени меньше уйдёт и нервов в т.ч. и ёбли с ГЦ, например.
https://groups.google.com/forum/#!topic/golang-nuts/Lj4RD3SLg6M
Почитай обсуждение, почему так сделано. Строй зависимости на интерфейсах.
Манятеория. Он такой из за дизайнера и местного тирана, который угорел по олдскулу и простоте с вырезанием всего, что "слишком сложно".
То есть, чтобы не въебаться ЦИ, надо сделать хак с отдельными структурами или между пакетами натягивать интерфейсы всегда??
Знаешь, евангелистами хоть бабло за эту хуйня платят, а ты страдаешь за так.
>Пакет а зависит от пакета
И что?? Блять не (структура) класс же от класса зависит. А блять пакеты, которые являются набором алгоритмов, а не отдельными юнитами (такие как класс или функция). Может ты мне еще рекурсию запретишь или расскажешь, что это плохо?
Тебе выше мокнули, где пакет контейнер вызывает дочерний пакет, вкладывая в него свой независимый контекст (подобно реквеста в контроллер).
И тут либо ты делаешь хаки, либо отказываешься от структур и начинаешь писать геттеры и сеттеры для своего интерфейса (джава привет)
@
СТРОИШЬ ПРОГРАММУ ПО ОЛДСКУЛУ СТРУКТУРАМИ, НО ПРИ ЭТОМ СОБЛЮДАЯ КОНТЕКСТ (НИ-НИ-НИ ГЛОБАЛЬНЫХ СОСТОЯНИЙ)
@
ПОЛУЧАЕШЬ ЦИКЛИЧЕСКИЙ ИМПОРТ
@
ПЕРЕСТРАИВАЕШЬ КОД, ЛЮДИ СОВЕТУЮТ ХАКИ
@
БОМБИТ ЧТО ХАКИ ЗАМУСОРИВАЮТ КОД И МЕНЯЮТ ПРЕДМЕТНУЮ ОБЛАСТЬ И ТО, ЧТО НА ПУСТОМ МЕСТЕ ТВОЙ ПРОСТОЙ ДИЗАЙН УСЛОЖНЯЕТСЯ
@
ПУТЕМ НЕСЛОЖНОГО АНАЛИЗА ПОНИМАЕШЬ ЧТО ПОДХОД С КОНТЕКСТОМ ПРОСТО НЕ РАБОТАЕТ И ВООБЩЕ НЕ РАБОТАЮТ МНОГИЕ КЛАССИЧЕСКИЕ ПОДХОДЫ
@
ОКАЗЫВАЕТСЯ ЕДИНСТВЕННО ВЕРНЫМ РЕШЕНИЕМ ЯВЛЯЕТСЯ СТАВИТЬ ИНТЕРФЕЙСЫ МЕЖДУ ПАКЕТАМИ(ЭТО РЕШЕНИЕ ДАРОВАНО ТОЛЬКО ИЗБРАННЫМ)
@
ТУТ ТЫ ПОНИМАЕШЬ ЧТО ДОЛЖЕН ОТКАЗАТЬСЯ ОТ СТРУКТУР И ПОКРЫВАТЬ ВСЕ ПОЛЯ ГЕТТЕРАМИ И СЕТТЕРАМИ
@
ПУКАН ЯРКО ОСВЕЩАЕТ УЛИЦУ
@
И ТОЛЬКО В ИСКЛЮЧИТЕЛЬНЫЕ МОМЕНТЫ, КОГДА ПРОЯВЛЯЕТСЯ ЦИКЛИЧЕСКИЙ ИМПОРТ - ТЫ ДОЛЖЕН ЗАЮЗАТЬ ИНТЕРФЕЙСЫ, ВЕДЬ ГО МОДУЛЬНЫЙ ЯЗЫК!
Удачных вам ЦИ или геттеров и сеттеров
>вызывает дочерний пакет
Вызывает пакет? Ты долбоеб или да?
>>963391
>пакеты, которые являются набором алгоритмов
Алгоритмы - нечто, что при условии n>1 является пакетом? Кнут бы тебе в еблет зарядил.>>963391
>То есть, чтобы не въебаться ЦИ, надо сделать хак с отдельными структурами или между пакетами натягивать интерфейсы всегда??
>
Чтобы не въебаться в ЦИ, нужно писать нормальные приложение. С твоим мышлением, тебе нужно писать на JavaScript, там вообще похуй что и куда передавать. Можешь там обмазатся своими контекстами.
>>963391
>Тебе выше мокнули, где пакет контейнер вызывает дочерний пакет, вкладывая в него свой независимый контекст (подобно реквеста в контроллер).
Просто ты долбоеб, смерись с этим. А вообще, если серьезно, постарайся переосмыслить то говно, которое ты понаписывал, если у тебя пакет контейнер отвечает за какую-то логику, то нахуя дочерним пакетам завязываться на логике того, кто их использует. Пиши модульно, а не говном. Разнеси отдельно, а не обмаж все своими контекстами. Я даже не могу прийти к мысли, как можно так завязать структуру приложения. Даже моя тян такой тупорылой логикой не обладает. Жесть какая-то. Вам долбоебам сказали что Go простой, но это не значит что в аргумент с типом float64 можно строку блядь пихануть, или контекст какой-нибудь. Простота не в этом заключается. Короче я ебал объяснять, ты не понял в циклический импорт, а теперь кукарекаешь что язык хуевый. Конечно хуевый.
Вот про тебя на вики:
>Circular dependencies are often introduced by inexperienced programmers who need to implement some kind of callback functionality. Experienced programmers avoid such unnecessary circular dependencies by applying design patterns like the observer pattern.
Видимо, ты ещё не дорос.
>чтобы писать на го - ты должен засунуть себе кактус в жопу
>гоферы: а ни че так, даже удобно, код модульный такой сразу, вот кнут говорил n>1 сразу не пакет (видишь какого я тебе авторитета принес! Кланься!)
Бля идите нахуй долбаебы))
Ты думаешь в другом треде другого языка программирования тебя радужно встретят? Нахуй ты нужен кому с такими тараканами в голове.
>Чтобы не въебаться в ЦИ, нужно писать нормальные приложение
Блядь, хватит выдумывать единорогов. Ты программист, а не ебанный догмат.
Четко и ясно сказали, чтоб не попасть в ЦИ - тебе надо интерфейс натунять (ну или как народ хак придумал).
А интерфейс - ставит сразу болт на твои структуры и ты уже пишешь жаба-классы
Ты можешь обдрачиться от правильности теорий своих, но ты уже у себя пишешь код который подвержен ЦИ и это не происходит по причинам:
-проект еще маленький (или в монолитном пакете).
-ты юзаешь интерфейсы между пакетами
-проект имеет достаточно тонкие пакеты их достаточно много (по сути получается один пакет на один класс/структура или небольшой набор функций - делающие пакет логическим юнитом (жаба-классом) - но такой код имеет херов тучу пакетов, то есть папок).
В общем твой код всегда стремиться к ЦИ если ты не юзаешь интерфейсы между пакетами. Каждый твой блядский вызов из другого пакета - это очко твое для ЦИ.
В общем, экстраполируй.
Долбоеб, это я и сказал про интерфейсы.
Во-первых, буква D из акронима SOLID.
Во-вторых, тебе нужно понять что такое модульное проектирование. Это не то что ты сказал (когда много алгоритмиков в одном пакетике), это совершенно иное. В твоем случае, оба пакета зависят друг на друге, а точнее один из них только использует структуру другого. Это дурнопахнущий код, т.к.:
1. оба пакета не самостоятельны
2. High Coupling
Для того, чтобы не ныть в этом треде, достаточно просто не поленится и сделать хоть что-то, что тебе сказали в этом треде. Если ты сразу не понял нахуя так делать, это не значит что в дальнейшем ты этого не поймешь, а за то что ты тут нанес потом будет стыдно. Подумай над этим.
Лучше быть евангелистом чем ебанным мусульманином, который кричит аллаху акбар и нихуя не хочет в своем маня-мирке увидеть и осмыслить.
Увидимся в джаве
-Какая блять модульность, какой SOLID в языке с кодогенирацей.
Даже, по-моему, Пайк говорил, когда его стали в говно макать - что иногда повторяться в коде это нормально (поэтому DRY тоже идет нахуй)
-Какой нахер D где в языке отторгают юзать DI и IoC и вместо этого таскают такой жирный контекст, что по сути он является глобальным состоянием.
-Какой нахер S если все ебошат одним пакетом, а в файлах лежат туча разных структур функций, где методы просто функции, а функции порой просто методы.
-Какие нахер интерфейсы если ты их даже на nil не можешь проверить (да там ад вообще с интерфейсами, они их пилил видимо опосля)
Я уже молчу о том что на уровне компиляции привязка не проверяется и вообще это трэш, когда не ясно какие контракты твой объект реализует.
-Какая нахер модульность на уровне пакета (причем с классической лабудой где подпапка это уже другой пакет).
Если в жабе независимым модулем является jar'ник, то ты хочешь сказать что пакет у тебя модуль? - я скажу тебе хуй (долбаеб ты с промытыми мозгами, можно назвать собаку кошкой, но кошкой собака не станет).
Я всего пиздеца уже не перечислю - но назвать го модульным языком это толстый троллинг. Го самый бестолково-спроектированный язык, решающий модульные проблемы только в головах авторов.
>И что мы видим, все ебутся как бараны в гиганских монолитных пакетах и думают, что они пишут пиздецкий модульный код.
>где для указания типа, тебе все равно надо импортировать целый блядский пакет!
хуя у тебя там говнокод
Можешь выучить любой популярный язык( Java, Javascript, PHP, Go, Objective C), в зависимости от решаемой задачи.
Сейчас Го достаточно активно развивается, все шире используется. Лишним не будет его выучить.
Ты выучил новую аббревиатуру, но не научился её применять.
>>963421
>-Какой нахер S если все ебошат одним пакетом, а в файлах лежат туча разных структур функций, где методы просто функции, а функции порой просто методы.
Ты сам то понял, что сказал?
>>963421
>-Какой нахер D где в языке отторгают юзать DI и IoC и вместо этого таскают такой жирный контекст, что по сути он является глобальным состоянием.
Вот как раз D( инверсия зависимостей) и реализована. И именно её ты не понимаешь. Ты пытаешься создать два модуля, зависимых друг от друга, а такого быть не должно.
>>963421
>-Какие нахер интерфейсы если ты их даже на nil не можешь проверить (да там ад вообще с интерфейсами, они их пилил видимо опосля)
Если в Го решили функциональность интерфейсов ограничить, то это не значит, что это не работает. В Го интерфейс - это просто список методов, которые класс должен реализовать. nil интерфейс не имеет смысла.
>>963421
>-Какая нахер модульность на уровне пакета (причем с классической лабудой где подпапка это уже другой пакет)
Удобно же. Структура модулей совпадает со структурой папок.
делаешь интерфейсы Producer и Consumer
И не надо мне там рассказывать, что где-то через костыль в линуксах можно скомпилировать эту шляпу в *.so
А тех баранов, которые думают что неймспейсы вдруг стали модулями, можете слать нахуй (или они реально настолько тупые или евангелисты им мозги промыли).
Тебе уже сказали, гоферы решают эту шляпу через еще один пакет (или интерфейс - который тоже по сути должен через хак отдельного пакета).
А вообще анон говорил про контейнер, в твоей проекции это будет так:
У тебя есть пакет тело человека и есть рот, и рот не может взаимодействовать с телом (ни с кровеносной системой, ни с нервной и т.д.). В нормальных языках тело может передать свое апи или обозначить глобально. В случае го, тебе придется делать хак-пакет "хуй" (и не важно структура там или интерфейс) чтоб рот смог взаимодействовать с телом.
В этом вся глупость и мнимая модульность.
Что не так? У го нет модульности, даже у жабы есть jar. У го же просто мусорка из исходников в одном src, лол
>мусорка из исходников в одном src
Никто не мешает раскидывать проект по подпапкам(сабмодулям) и импортить их потом.
https://github.com/kubernetes/kubernetes
Проблемы всегда в спагетти-коде и неправильном подходе к разработке. Даже в java и c# люди стараются избегать лишних зависимостей между компонентами системы.
просто долбоебы услышали что Go простой язык, да, простой, но не потому что он прощает все, а потому что тут нихуя нету почти. и вот такие костыли как циклический импорт в некоторых языках прокатывают, а тут можно хуй надломить, и все ожидания о простоте разбиваются как судно о скалы в туман, после чего анон в соплях бежит в тред. как это ещё долбоебы не кричат что я хочу скобку на новой строке открывать, а компилятор мне этого сделать не дает!11
>Го не интерпретируемый язык
Да. Теперь объясни
>>963515
>го нет модульности
>даже у жабы есть jar
Ты же можешь без гугла сказать, в чем различие исполняемого jar и библиотеки классов? А теперь можешь сказать, в чем разница между .so c заголовками и executable бинарником?
Ты ведь точно правильно понимаешь, зачем софт на C/C++/Go/etc собирают в бинарные файлы?
Что за садо-маза любить чтобы тебя ебал компилятор за каждую неявную хуйню?
Питон интерпритируемый язык, из-за специфики работы он не может в циклический импорт. Из-за динамичности языка, питон может зависеть от пакета неявно. То есть там циклический импорт происходит только явно, как будто ты подключаешь jar и dll (реал модуль).
Го - компилируемый язык и в нем нет никаких модулей (каша в src - это просто каша из исходников). Называть неймспейс модулями - вас просто наебали.
Получается, что парни взяли идею из динамического языка (где есть возможность неявно зависеть по типам), которая не пригодна для статического.
Фразы - кококо - гуглу виднее идут лесом, потому что тут обосрались.
Юные дети не писали настоящих программ. Рот вполне может зависеть от жопы. Например он может опросить жопу - на предмет срёт она сейчас или нет и если срёт, то не начинать сейчас есть.
Для гофера рот начнет есть когда тот срёт, и что он начнет есть, это только гоферу известно.
Аноны, хотите иметь развитие в программирование, идите в джаву.
Го архитектурно забагован (и самое страшное что это не признают и навязывают обратное)
>Аноны, хотите иметь развитие в программирование, идите в джаву.
Казалось бы, куда уже толще.
>Для гофера рот начнет есть когда тот срёт, и что он начнет есть, это только гоферу известно.
>Ебать, Антош, природа какая глупая, наплодила циклических зависимостей, не то что дизайнеры в гугле!
Тут ты уже начинаешь нести хуйню, полностью съехав с темы, приведя наихуёвейшую некорректную метафору.
>Отстутствие дженериков, хз.. я даже не знаю нахуя они нужны.
Чтобы делать хеш-таблицы они нужны.
>проверка на ошибки
Во-оот, а были бы исключения (как возврат из нескольких функций) и кодогенератор писал бы это вместо тебя.
Авотнихуя мой юный софист. Ты уходишь в дебри того, что первично: курица или яйцо?
>Рот вполне может зависеть от жопы
Это у тебя рот зависит от жопы. У нормальных людей, это не так.
>>963618
>Например он может опросить жопу - на предмет срёт она сейчас или нет и если срёт, то не начинать сейчас есть.
Всем рулит мозг, и ртом, и жопой. Жопа может послать сигнал, что хочет срать. Никто не мешает тебе срать и жрать одновременно, все в башке.
>>963615
>Что за садо-маза любить чтобы тебя ебал компилятор за каждую неявную хуйню?
Ну такой вот язык, че. Его ЦА - корпорации, где должен быть единый код. Вот ты допустим охуенный Senior PHP разработчик, отработал 20 лет в какой-то компании, писал по их внутреннему Code Style, потом уволился и попиздовал в другую компанию, там свой Code Style. В итоге, ты переучиваешься. В Go все по другому. Все либы - одинаковые, или иди нахуй. Скобки одинаково - или иди нахуй. Поэтому те, кто сейчас пишет на Go уже понял, в чем прикол этих выебонов компилятора: прикол в том, что никогда не будет кучи говнолиб с хуй пойми каким форматированием, читая чужую либу - читаешь как свою. По поводу циклического импорта, на то есть причина, я уже приводил её: плохо строить пакеты, которые завязываются друг на друге. Это называется High Coupling. Один из признаков, и почти безошибочный, это как раз таки circular dependency, когда A завязывается на B, а B завязывается на A. Вот и получаем говнокод, который компилятор не пропустит. Вот кстати те, кто пишут на Go и плются, ещё хуже евангелистов. Евангелистов хоть все устраивает, они пишут, они счастливы. А те кто пишут и ноют на форумах и пишут статьи в блоге "Why I hate Go" это вообще непонятная фракция долбоебов от мала до велика, которые пытаются забраться на волну хайпа, у них не получается, и как следствие страдание и нытье выливается в интернет. Программистам нужно писать на том языке, который нравится и где устраивает зп
Другими словами: либо прими все условия языка, либо не пиши на нем. Это действительно просто. Это как прийти в Мечеть в кроссовках Air Max - никто просто тебя не пустит, это правило, так принято.
>Рот вполне может зависеть от жопы
Это у тебя рот зависит от жопы. У нормальных людей, это не так.
>>963618
>Например он может опросить жопу - на предмет срёт она сейчас или нет и если срёт, то не начинать сейчас есть.
Всем рулит мозг, и ртом, и жопой. Жопа может послать сигнал, что хочет срать. Никто не мешает тебе срать и жрать одновременно, все в башке.
>>963615
>Что за садо-маза любить чтобы тебя ебал компилятор за каждую неявную хуйню?
Ну такой вот язык, че. Его ЦА - корпорации, где должен быть единый код. Вот ты допустим охуенный Senior PHP разработчик, отработал 20 лет в какой-то компании, писал по их внутреннему Code Style, потом уволился и попиздовал в другую компанию, там свой Code Style. В итоге, ты переучиваешься. В Go все по другому. Все либы - одинаковые, или иди нахуй. Скобки одинаково - или иди нахуй. Поэтому те, кто сейчас пишет на Go уже понял, в чем прикол этих выебонов компилятора: прикол в том, что никогда не будет кучи говнолиб с хуй пойми каким форматированием, читая чужую либу - читаешь как свою. По поводу циклического импорта, на то есть причина, я уже приводил её: плохо строить пакеты, которые завязываются друг на друге. Это называется High Coupling. Один из признаков, и почти безошибочный, это как раз таки circular dependency, когда A завязывается на B, а B завязывается на A. Вот и получаем говнокод, который компилятор не пропустит. Вот кстати те, кто пишут на Go и плются, ещё хуже евангелистов. Евангелистов хоть все устраивает, они пишут, они счастливы. А те кто пишут и ноют на форумах и пишут статьи в блоге "Why I hate Go" это вообще непонятная фракция долбоебов от мала до велика, которые пытаются забраться на волну хайпа, у них не получается, и как следствие страдание и нытье выливается в интернет. Программистам нужно писать на том языке, который нравится и где устраивает зп
Другими словами: либо прими все условия языка, либо не пиши на нем. Это действительно просто. Это как прийти в Мечеть в кроссовках Air Max - никто просто тебя не пустит, это правило, так принято.
Что не так? Это апогея нашей беседы.
Когда антоша привел пример из природы и организмов, антоша не знал что в природе циклическая зависимость это вообще норма.
Так обосраться мог только гофер, почему лишний раз его туда не мокнуть?
>>963646
>Ты уходишь в дебри того, что первично: курица или яйцо?
Гофер.
А вообще очевидно что яйцо. Некая ящеро-не-до-курица снесла яйцо с мутацией курицы и пошло поехало.
Вы только в биологию не топите, там вы обосретесь с аналогиями.
>Всем рулит мозг, и ртом, и жопой.
А вот самое интересное, если ты заюзаешь один "рулящий" объект на все - ты как раз попадешь в циклический импорт, лол.
Что должно загружаться первым, модуль для монтирования ФС или ФС?
> А вообще очевидно что яйцо. Некая ящеро-не-до-курица снесла яйцо с мутацией курицы и пошло поехало.
Маняврируй Илюша, это тебе ни капельки не поможет.
>если ты заюзаешь один "рулящий" объект на все - ты как раз попадешь в циклический импорт, лол.
как раз таки нет, если только ты не будешь срать себе в рот:
zhopa.SratV(r Rot)
А во рту будешь rot.VisratCherez(z Zhopa)
Но видимо ваш тупой мозг не позволяет построить прозрачной архитектуры, у вас жопа срет через рот, а рот лижет жопу, потому что у рук нету метода "подтереть сраку". Все с вами ясно.
>Никто не мешает тебе срать и жрать одновременно
>>963625
>Для гофера рот начнет есть когда тот срёт, и что он начнет есть, это только гоферу известно.
Предлагаю зафорсить мем, где гоферы, дабы не создать циклическую зависимость, по случайности, ест говно))
>zhopa.SratV(r Rot)
>А во рту будешь rot.VisratCherez(z Zhopa)
Лол этот долбаеб гофер сделал сейчас циклическую зависимость
>>963681
>Маняврируй Илюша, это тебе ни капельки не поможет.
Врети! Эволюция ложь!
>Нет, ну вы только посмотрите на него.
>>960753
>че несешь, болезный, 11 стандарт открой
Я вот открыл, и вижу потоки и сладкий async, и выглядит это, мягко говоря, не очень.
Ну например, я хочу сделать асинхронный веб сервер, и мне нужон, внезапно async функционал в сокетах, и всем прочем возможном IO. То есть async варианты методов и библиотек, а они есть?
Затем, а я могу указать конкретный поток для выполнения async таска?
Ну там синкконтекст как в шарпе?
WTF?
>Лол этот долбаеб гофер сделал сейчас циклическую зависимость
долбоеб, я и написал
>если только ты не будешь срать себе в рот
Но тебя эта фраза, видимо, не смутила, слишком обыденная она для тебя, слишком посведневна
Хочется напомнить, анон малаца
> Не кормите Илюшу. У него сейчас трудный возраст, он компенсирует свои проблемы по средствам языка.
Плохой Go, плохой. Хнык.
Илюша, please.
>чудо компилируется в один монолитный болт.
Перлы от джависта. Он думает, что модули, это когда много файлов спомпилировалось.
>>963512
>В нормальных языках тело может передать свое апи или обозначить глобально.
В нормальных языках пакет тело имеет в зависимости пакет рот и им управляет.
>>963618
> Рот вполне может зависеть от жопы. Например он может опросить жопу
Рот не должен опрашивать жопу. Должен быть мозг, который разруливает взаимоотношения рта и жопы .
>>963630
>Рот (пищеварительная система) не может существовать без тела, тело не может существовать без рта (пищеварительной системы).
Рот - это часть тела. Управляется мышцами, которые управляются мозгом.
>>963679
>в природе циклическая зависимость это вообще норма.
Еще раз. В организме мозг управляет всем. И рот ничего не будет делать без команды мозга.
>>963689
>Предлагаю зафорсить мем
Ты смешон. Не позорился бы.
>>963764
Как писалось уже выше. В Го создали слишком умный компилятор, который не позволяет компилировать программы с потенциальными местами для ошибок. В частности, вот эти все циклические импорты, или к примеру неиспользованные переменные.
https://gist.github.com/Cornpop456/1d21c0b81171143f137e0721c985c4fd
Что? Курс на ютубе прохожу, там задачки.
Они не кэшируются, потому что ты их не кэшируешь.
Ты проверяешь, есть ли значение в кэше, если его нет, то ты вызываешь рекурсивную функцию, которая считает все до конца, не используя кэш.
Ок, но в питоне так и работало, как тогда кешировать? (Гуглил, там только решения с замыкаем)
Не знаю, как оно там работало. Скорее всего, ты неправильно переделал, без примера непонятно.
функц фибоначчи ( инт н) инт
если н в кэше, то вернуть кэш[н]
иначе вернуть фибоначчи(н-1)+фибоначчи(н-2)
Да, мой косяк, спасибо
>По-моему Go улучшать бесполезно, его проще закопать.
>Расскажите это разработчикам Docker, Prometheus, Kubernetes, Juju, Grafana и прочим.
А еще mail, авито, яндекс почти все на го перевели
Анон, все намного проще. Вынеси это в пакет, т.к. песочница.
Ты хуйни там понагородил шо пиздец.
https://play.golang.org/p/F4QoonS0Ad
>Кококо, авторитеты, кококо
Вон из профессии, глупый догмат.
Хотя мы тоже брали го чтобы попиариться для заказчиков.
К счастью градус адеквата превесел маркетинг.
Кстати статья то от майлру и они куда трэшовей статьи вкидывали
https://habrahabr.ru/company/mailru/blog/318504/
На го написаны рабочие, качественные программные продукты, это и показатель успешности языка. Остальное пустой треп.
Во, спасибо большое. Я короче понял, моя версия работала на питоне, видимо из-за динамического языка. Буду твою курить.
https://gist.github.com/Cornpop456/71e1a1309e821b6a90b5247a13439f09
http://codepad.org/o8zQjP9B
Вот твоя версия, я правильно её использую?
Если да, то она, как видишь, работает не так как надо
Почему числа-то верные, в этой версии нужно скорее вот так юзать, то-есть постепенно заполнять. Вот фибоначи 1000 например
https://ideone.com/IbgVq1 Проблема была в том, что go при такой записи не кешировал промежуточные значения а только результат записывал в словарь.
10 000*
Короче я все таки докаплся до правды, тут дело еще в том, что у тебя был питон 2, https://ideone.com/qUjVx4 аналогичный код, все работает)
Дело тут в том, что ты переопределяешь свою fib функцию wrapperом.
В итоге, в рекурсии( в функции fib) вызывается не она, а wrapper. А во wrapperе вызывается старая fib.
Если переименуешь в конце fib на другое имя, то работать перестанет.
Так суть то в том, что ты не только кэшируешь, но и переопределяешь.
Зато я ебал твою мамашу.
Не бабах то у тебя, потому что ты слишком зелёный и толстый.
П.С. Илюша как бы давно уже в хейтерах языка, ведь сейчас это стало модно хуесосить палку, которую ты выбираешь для оптимального выполнения работы
Дауны, блядь
Илюша, please.
Что насчет языка - я давно так не бугуртил ни с чего.
Пописал я на нем достаточно и хуже языка я просто не встречал.
Меня даже какой-то фанбой обвинил, что я го не осилил (лол) - а я просто нажрался того скрытого говна который таит в себе го. Я даже не понимаю, как в языке в котором ничего нет можно было так нагадить (хотя отсутствие банальных фич тоже отдельная тема)?
У меня тоже есть маня-теория:
Язык го создан чтобы вы вновь полюбили такие языки как js, php, стали уважать джаву. Если вам нужна компиляция, то язык го явно создавался чтобы вам еще сильней понравился раст, или С++ не казался таким уж говном.
Вы переживали что питон тормозит? Хуйня, после го вы поймете что это не важно.
Го - это та сама страшная подруга, на фоне которой вы становитесь еще красивее. Цените го - но не пишете на нем
>я давно так не бугуртил ни с чего
Это видно.
>а я просто нажрался того скрытого говна который таит в себе го.
Сколько проектов то закончил на Го?
>Уход главного хейтера, судьба го треда
Пиздуй уже нахуй.
>Я даже не понимаю, как в языке в котором ничего нет можно было так нагадить
Просто гугл вас - дегенераты, выродки и мерзкое быдло - просто ненавидит.
И это объясняет вообще всё.
Ты - это тот, кто не освоил циклический импорт?
" - Я хочу есть говно( делать ЦИ) го-вилкой, но не получается, го - плохой язык.
- Зачем ты вообще ешь говно, это плохо во всех языках?
- Но вот джаваложка позволяет скушать немного говнеца
- Она то позволяет, но это категорически не приветствуется.
- Го-вилки плохие, потому что у них встроенная защита от говна, а мне надо съесть говна"
Насчёт маня-теории согласен.
Ещё год назад я хэйтил жаваскрипт, пхп и жаву, теперь считаю все вполне приличными языками.
Обработка ошибок в Go определенно оказала благотворное влияние на стабильность Juju. Тот факт, что вы можете сказать, где конкретная функция может завершиться с ошибкой, намного упрощает запись кода, который ожидает сбоя, и делает это изящно.
Тоже пишу на Питоне, но от Го тошнит пиздец как.
У меня, к примеру, баттхёрт от того, что когда-нибудь могут заставить писать на работе, потому что дружка-питониста уже заставили на новом месте.
Берёшь и меняешь работу и всё. В чём проблемес то? Или у вас хипсторы, которые не понимаю зачем нужен тот или иной инструмент и берут что попало? Если бы было так, то ты бы, вероятно, писал бы на нодежс в период её дикого хайпа.
Где сейчас работаю Го никому не нравится, так что едва ли перейдём когда-то. Волнует, что оно начинает занимать предметную область, в которой я работаю.
Т.е. неиллюзорен шанс, что на новом месте тоже, как дружку, скажут писать на Го, хотя будут брать на Питон. Какой же у меня баттхёрт, ты бы знал, анончик. В отчаянии готов за ПХП даже взяться.
> ПХП
Ты уверен, что голанг правда настолько плох? Алсо, я не считаю, что он прямо выживет в вебе. Но будет жить и развиваться и занимать нишу крупных девопс, сетевых проектов. В принципе, он там уже доминирует.
>Сколько проектов то закончил на Го?
Проекты - какое громкое слово, но можно сказать 4 проекта. Делались они показательно качественно для портфолио и делал не только для Го, поэтому довелось прочувствовать прям "синхронно" языки.
Как бы тут фанбои не нюхали свои пуки и не восхищались булшитами - работы на го нехуя нет. Я знаю, что сейчас какой-то мудак нагуглит где-то вакансию, где требуется го/жс/питон/мускуль/хтмл/ программист, по совместительству админ и водопроводчик. Но это все хуйня, весь мир вдруг свой легаси код на Го не переписал (а го в релизе 5 лет!)
Го это второй руби, он есть, но на хайпо-поддуве.
>Го это второй руби
Вовсе нет, ведь руби - для пидоров, а го - для дебилов.
Кому что ближе - решайте сами.
>Ты уверен, что голанг правда настолько плох?
Да и я не местным хейтом зарядился, а писал на нём в свободное время, даже пару книг прочитал. Не будем повторяться, но мне в нём не понравилось абсолютно всё.
Алсо, я как раз сетевую хуиту пишу на Питоне.
Главный булшит асинхроных евангелистов, что он решает проблему 10.000 или 100.000 запросов в секунду.
А теперь давай-те посчитаем.
Ваше приложение отдает 200кб. А теперь давай-те грубо посчитаем, сколько сможет отдавать такой запрос при 100мбитном канале. Посчитали? Грубо - в канал у вас поместятся 500 запросов в секунду!
500? Не 100000, О нет!
А как же контент? Графика? На моем старом проекте, ответ в совокупности доходил до 1 мегабайта на страницу, это даже для 2010 года была нормой.
Конечно с json вы в среднем сможете подойти к проблеме 10.000, но опять же, это только на пальцах, так как контент (даже текстовый) порешает.
Вторая фича - я могу запустить 500.000 горутин, уиии! Как круто.
Блядь, ну и что 500К сделают полезного на ваше 2-4-8 ядерной пекарне/сервере?
Я даже могу сказать что - 99% горутин в данный момент времени будут тупо стоять и ждать когда планировщик "даст им".
Интересно какой оверхед будет здесь на планировщик, мне кажется цифра будет не маленькая.
В общем в условиях малого числа процессоров или ядер, огромное число горутин просто бессмысленно и несут скорее больше тормозов, чем бы их последовательный запуск в 4-8-16 потоков.
Конечно голословное заявление проверять я его конечно не буду, но факт что даже в теории подход не выдерживает критики, и то что операционная система лучше оперирует потоками - это факт.
Третья мысль.
Для веб сайта, неблокирующие операции, требуются только для запроса сервера, бд и файловой системы. Все три вещи в той же жабе (и не только в ней) давно можно юзать асинхронно (хотя пример с 100мбитным каналом показал, что это и не всегда нужно).
В джаве так же есть парадигмы асинхронного программирования (через акторы или реактивное - я точно не знаю названия), но в реале, из выше примера, кроме покрытия этих трех случаев неблокирующие операции больше не нужны. Но при этом ваша джава не будет платить ни за какой планировщик (а в го он будет дергаться на вызов каждой внешней функции!)
Можете поправить конструктивно где я не прав, на выпуки отвечать не буду
Главный булшит асинхроных евангелистов, что он решает проблему 10.000 или 100.000 запросов в секунду.
А теперь давай-те посчитаем.
Ваше приложение отдает 200кб. А теперь давай-те грубо посчитаем, сколько сможет отдавать такой запрос при 100мбитном канале. Посчитали? Грубо - в канал у вас поместятся 500 запросов в секунду!
500? Не 100000, О нет!
А как же контент? Графика? На моем старом проекте, ответ в совокупности доходил до 1 мегабайта на страницу, это даже для 2010 года была нормой.
Конечно с json вы в среднем сможете подойти к проблеме 10.000, но опять же, это только на пальцах, так как контент (даже текстовый) порешает.
Вторая фича - я могу запустить 500.000 горутин, уиии! Как круто.
Блядь, ну и что 500К сделают полезного на ваше 2-4-8 ядерной пекарне/сервере?
Я даже могу сказать что - 99% горутин в данный момент времени будут тупо стоять и ждать когда планировщик "даст им".
Интересно какой оверхед будет здесь на планировщик, мне кажется цифра будет не маленькая.
В общем в условиях малого числа процессоров или ядер, огромное число горутин просто бессмысленно и несут скорее больше тормозов, чем бы их последовательный запуск в 4-8-16 потоков.
Конечно голословное заявление проверять я его конечно не буду, но факт что даже в теории подход не выдерживает критики, и то что операционная система лучше оперирует потоками - это факт.
Третья мысль.
Для веб сайта, неблокирующие операции, требуются только для запроса сервера, бд и файловой системы. Все три вещи в той же жабе (и не только в ней) давно можно юзать асинхронно (хотя пример с 100мбитным каналом показал, что это и не всегда нужно).
В джаве так же есть парадигмы асинхронного программирования (через акторы или реактивное - я точно не знаю названия), но в реале, из выше примера, кроме покрытия этих трех случаев неблокирующие операции больше не нужны. Но при этом ваша джава не будет платить ни за какой планировщик (а в го он будет дергаться на вызов каждой внешней функции!)
Можете поправить конструктивно где я не прав, на выпуки отвечать не буду
Го на хайпо-поддуве, не пиарится на нем только ленивый (модно же, молодежно, node.js уже прошлый век!)
Хотя если бы мне заплатили, я бы тоже написал историю-узбека (серьезно, куда звонить?).
Го так просаживает разработку ПО после питона, что только полный ушлёпок может по хайпу навредить своему бизнесу (бегите с этой галеры, безумцы!)
У меня нет точных цифр, но в реале, стоимость железа не будет стоит времени работ команды разработчиков.
>Ты уверен, что голанг правда настолько плох? Алсо, я не считаю, что он прямо выживет в вебе. Но будет жить и развиваться и занимать нишу крупных девопс, сетевых проектов. В принципе, он там уже доминирует.
В булшитах он доминирует:
Сетевые скрипты - питон, баш. Никто блять не будет искать Васю с иходиками искать пока он в отпуске. Скрипты должен быть скриптами.
Да и ты видел код на го? Банальная операция растягивается на портянку ничтаемого кода, там где у питона заняло бы 2-3 строки.
Веб - это динамические языки, круды писать на чем-то ниже - удел школьных оптимизаторов.
Который никогда не будет иметь такого веба по посещаемости, где он выиграет с перехода на го или джаву (а когда будет, ему все равно для базы данных придется брать второй дедик - тру стори)
Топовый веб и бизнес - джава, просто потому что она там намертво сидит. Никто не будет миллионные риски брать за хуй пойми что (так работает топ бизнес, даже НАСА отправляет устаревшие но проверенное железо, потому что надежно).
лол, двачую
Тырпрайз и легаси? Яндекс, баду, авито, мыло - на го перевели большую часть сервисов, куда уж крупнее компании, если говорить об снг. Гугл-то понятное дело компания маленькая и люди там глупые, не в курсе, что надо на джаве писать
>Я знаю, что сейчас какой-то мудак нагуглит где-то вакансию, где требуется го/жс/питон/мускуль/хтмл/ программист, по совместительству админ и водопроводчик
Ну и что ты нам кинул? 58 вакансий в ДС, против
2 149 - жс (в сравнение го имеет тут 2,5%)
1 382 - жабы (в сравнение го имеет тут 4,1 %)
1 188 - пхп
996 - питон
суммарно (только от этих четверых, а не всей индустрии) - го занимает примерно меньше процента.
Это говорит о том что работы нет.
Хотя если еще начать анализировать, я уверен, из тех 58 (меньше одного процента, напомню), то как минимум годных окажется четверть, а в половине из этой четверти тебя не возьмут - еще в половине тебя не устроит что-то
В общем я сделал ремарку и сразу послал нахуй не зря, это булшит что у языка есть работа.
Знаешь, у хаскеля тоже она есть :)
>Яндекс
>на го перевели большую часть сервисов
То то я смотрю в вакансиях яндекса не одного упоминания Го, наверно забили гоферами до отказа да?
https://yandex.ru/jobs/vacancies/dev
Лол, идите нахуй говноеды-булшитеры (ебанные копрофилы)
>не надоело это ООП с миллионом всяких абстракций?
В большом проекте ты не сможешь проектировать от "своего Си" - от структур. Уже обжували что парни принудительно через ЦИ заставляют юзать интерфейсы (а это не структуры - это геттеры и сеттеры - и вот смысл писать на недо-жабе?)
По твоей логике нужно писать только на жс, жабе, пхп и питоне, все других языков нет, ну ок
Чтобы не держать в голове все то, что есть в джаве например, а спокойно писать код. Ну это дело вкуса, но блин это вроде как go тред, хули тут забыли те, кому он не нравится?
Ну и на go достаточно больших проектов, видимо справляются, вон ссылка была на проект на 500 000 строк
жаба/питон
жс - пока не сместят с фронтенда.
Если честно, я теперь рад писать и жс, чем на го.
Для хайлода есть джава, если она там не тянет, точно не потянет и го (там рулит си).
Вообще вместо го я бы рекомендовал раст (если туда завезли уже гринтреды).
Но go быстрее джавы внезапно, там нет рантайма, бинарник же. И не все хотят писать на джаве. Такое ощущение, что сюда пришли старые пердуны и говнятся, что их языкам нашллась замена, но не просто нашлась, а еще взлетела нехило.
>Чтобы не держать в голове все то, что есть в джаве например
Джава имеет множество сущностей, не потому что это злые программисты, а потому что это дает гибкость и масштабируемость.
Никто не мешает поверх написать свои фасады и получить себе питон-пхп-либу (где скажем одним методом можешь прочитать весь файл)
http://benchmarksgame.alioth.debian.org/u64q/go.html
В больше чем половине тестов кстати и это учитывая, что на го несравненно проще обучить людей с нуля, чем на джаву.
Ну так го и не используют там, где джаву, сетевые сервисы, сетевые утилиты и тд, бэкенд небольшого сайта по вкусу вот и все. А еще надеюсь, что можно будет под андроид писать. На го не собираются писать корпоративный, банковский и другой подобный софт. Абсолютно разные области.
Ну так по-моему только на дваче и считают, в остальном интернете к нему нормальное отношение, вон даже 5 место, среди любимых языков занял в рейтинге стек оверфлоу.
Это тестирую коня в вакууме и проект скомпрометирован (пруфы есть)
В реальном проекте го из-за специфики ГЦ может сожрать в два раза больше ОЗУ чем надо (пруфы тоже есть, статья-перевод от майлру)
Ну да что еще ответить, когда хейтерами го оказывается кучка люмпенов с аниме форума, а во всем мире люди пробуют, пишут или спокойно проходят мимо. Адьес
Мне кажется, что если ты не пересел в своё время на статик язык без ГЦ из за работы(перфоманс, все дела), то тебе нечего бояться.
>Но при этом ваша джава не будет платить ни за какой планировщик
Фейспалм 80 уровня.
Асинхронность без планировщика\евентлупа, спешите видеть.
Сказал как пукнул (с)
Очень информативный пост, спасибо.
Совершенно неожиданно довольно зрелый язык вдруг начинает свой прорыв года (причем снова, лол)! Кругом идут история узбегов, просто конвеером один в один. Почти под копирку идут статьи как с методичек о том - почему язык Го лучше чем язык X. Или просто о том какой го охуенный. И все настолько одинаково и банально, что тошно даже хомякам (ну правильно, язык то нихера синтаксически не развивается, а прорыв года надо делать каждый год).
Любые попытки в сообществах достучатся до смыслов принимают в штыки и банят. И получаются что норм программисты просто ретируются с языка вахуе, а хомяки дальше на турбо-поддуве разносят истину
Тьёб вообще красава, поднял язык так, что график сингулярности просто отдыхает.
Ладно бы там график растянули как для питона, но нет, просто вкинули в топы, неожиданно нарисовав свой уже прорыв года (в 2010 году прорыв был не такой прорывный).
Но только одно, реально НО, интерес к языку пиздецки как падает. Он так же "мега популярный" как гугл+. Я хз, может на ру-комьюните поддува нехватает, но нельзя искусственно создать вау-эффект (да еще несколько раз), но можно заставить недалеких верить в это.
Собственно траспайлер и начали пилить, потому что го всосал по популярности.
Именно поэтому лезут то на джаву, то на питон то на си, а го никуда не нализает
Зачем ты так о себе, погугли хотябы
Гоферы как всегда гоферы.
Планировщик это оверхед на каждый вызов функции (вне пакета) и у него там солидная работа каждый раз (всегда!).
Асинхронность в других языках - это тупо цена вызова функции (калбэка, фьючера, эвенты - чуть тяжелее, так как нужна минимум еще хэш-таблица).
Причем в го до сих пор можно запороть поток циклом. Если нет, значит есть еще какой-то оверхед который контролирует.
Самый лол, что в мапе добавлен рандомайзер, которые специально перемешивает мапу, чтобы умные суслики не думали что мапа хранит последовательность. Это вообще вин я считаю (ебали они твою производительность)
Ты ебанутый, серьезно.
Тебя такие вещи интересуют, о существовании которых я даже не подозревал.
Хайпы какие-то, графики, статьи, узбеки, хомячки.
Наверни галоперидону, сдалось оно тебе все.
Над собой проиграл?
>WebAssembly or wasm is an experimental efficient low-level bytecode format for in-browser client-side scripting
Ну да то-есть вот это хомяки/проплатили/"придумай свою отмазу"
1 https://www.youtube.com/watch?v=1KmR_O9NMpU&t=242s
2 https://www.youtube.com/watch?v=uO268voCGwA&t=286s
3 https://www.youtube.com/watch?v=EWsXbsUBm-M
4 https://www.youtube.com/watch?v=Kq0cWRBd1MU&t=460s
5 https://www.youtube.com/watch?v=iriGUxZI-Cg&t=9s
6 https://www.youtube.com/watch?v=HoEn7lXNQOU
7 https://www.youtube.com/watch?v=FnWWp7sMuaw&t=21s
8 https://www.youtube.com/watch?v=9Pk7xAT_aCU&t=36s
И это только российские компании
>Самый лол, что в мапе добавлен рандомайзер, которые специально перемешивает мапу, чтобы умные суслики не думали что мапа хранит последовательность. Это вообще вин я считаю (ебали они твою производительность)
Ход странный, и как-то противоречит концепции простоты.
Мой директор тоже хочет чтобы я съездил и попиарил галеру среди Го-хайпа или Раст-хайпа (ранее js хайпа) с нашей ультра похоже историей-узбека
Никогда не обращали внимание, когда докладчикам начинают задавать вопросы они отвечают откровенно бредовую хуйню или повторяют из доклада что-то?
Вот я тоже на таком боюсь попасца, так как придумывать сходу я не умею, теряюсь.
Ты еще слишком зеленый чтобы построить такую цепочку взаимосвязей.
Ты бы блядь не позорился. Ты мне ещё про EMScripten расскажи, ага. Как васм будет работать с WebAPI разнообразными коих миллион? Он предназначен как и asm.js для низкоуровневой оптимизации, работы с графикой и прочим. Это байткод, да, ты можешь портировать путхоны, который, кстати, транслируются в жээс, но соснёшь на типичных фронтенд задачах.
https://divan.github.io/posts/go_complain_howto/
прикрепите это в шапку, чтобы все читали перед входом.
Иди прочитай что это такое и что в этом проекте участвуют крупные разработчики браузеров и суть проекта сделать едина API поверх которого натягивается С++, и далее уже питоны пыхи...
И что тут? Вместо того чтобы пытаться улучшить язык критикой, евангелисты го (по классике уже) делают очередной маневр с "поясняющей статьей вместо правок".
Багу с проверкой на nil интерфейсов - до сих пор не исправили, но посмотри в гугле сколько оправдывающих статей расплодили.
Кстати, после того как divan из-за своей тупости и эмоций слил Го на хабре его сняли с кормушки (а так он строчил там статьи на го как бешенный принтер, можешь даже посмотреть на хабре).
А вообще, кто в теме давно - запилили бы на лурке статью о Го и всей его хистори, потому что вин реально клевый был тогда, в том числе и про илюшу
>Что значит слил?
Значит что шизик в теме, а ты не в теме, лалка.
Луркорй наверное даже не интересуешься.
Лурка норм, когда авторы не пытаются быть излишне циничными и желчными, то есть довольно редко. Паста про питон крутая.
Тебе же сказали, что это не для того, чтобы хуячить веб, блджад, по крайней мере сейчас. Я и с их байткодом в виде S-expr игрался. Это просто байткод для машины виртуальной и проекты на нём сейчас тоже соответствующие, например парочку игрушек. Гугли лучше.
1) Ломаем тебе, говнодебил, ебло нахуй.
2) Ты закрываешься навсегда - в результате у языка улучшилось качество комьюнити.
Всё просто.
Так умело и агрессивно оскорбляешь меня.
Настоящий мачо прям.
Ты кстати говорил, что покидаешь тред, чеж ты слово свое не держишь?
Я и ушел, тут Илюша и еще кто-то (скорее всего тоже Илюша, судя по тому как разговнился после того как сказали про него и лурку)
>раст (если туда завезли уже гринтреды)
Не завезли и пока не планируют, вроде. Они заняты поеданием сладких фьючей и размышляют про АСУНК/АШАИТ
Не отмена анон, видео за 2014 год, но этот чувак в дропбокс ушел, где тоже на го переводят, а в яндексе походу все вернулась на круги своя, не слышно ничего и вакансий го нет.
https://www.youtube.com/watch?v=i97OIC8Lbjw
>этот чувак в дропбокс ушел, где тоже на го переводят
Там вроде бы переводят только performance-critical backends. Да и некоторые вещи они с Go переписывают на Rust.
Ну про раст он говорил, что там есть типо небольшой кусок.
https://www.youtube.com/watch?v=EWsXbsUBm-M&t=1769s
с 2.45
>Они заняты поеданием сладких фьючей и размышляют про АСУНК/АШАИТ
В принципе это го как бы достаточно.
А вот в котлине в 1.1 какое подобие корутин завезли (как слышал)
Я на самом деле очень сильно сомневаюсь насколько это все нужно, мне кажется в языке не должно быть планировщика, это вся шедулерная херня должна на уровни ОСи решаться.
>Я и ушел, тут Илюша и еще кто-то (скорее всего тоже Илюша, судя по тому как разговнился после того как сказали про него и лурку)
Понятно.
Пиздануться.
>это вся шедулерная херня должна на уровни ОСи решаться.
Тащемто да, отсутствие легких потоков в ОС непонятно.
Нет, он их не разрешает, чтобы макака хоть иногда юзала интерфейсы, но макака умная, она делает один монолитный пакет на все.
Более образованная макака множит наймспейсы, для получения древовидной структуры зависимостей
A <-> B
стало:
С <- A
С <- B
В общем шило-на-мыло, больше пакетов, богу пакетов
>Тащемто да, отсутствие легких потоков в ОС непонятно.
Слышал разговор бородатых системных дядек, в ваших линуксах уже что-то такое есть
Нет, если умеешь думать.
Таки когда ваш линукс нагло скопипастили с "юниксов" я был уже пионером.
То что в питоне - является полноценным модулем, подобно so, dll или jar, просто язык интерпретируемый и модуль получается на уровне исходников.
Го же, компилируемый язык и модулем должно было стать подобие so, dll или что-то свое. Но так как в го вообще ничего не делали, решили отмазаться что - неймспейсы исходников это пакеты и ебитесь в своих src как хотите.
В нормальном мире:
- циклическая зависимость между - модулями so, dll, jar - зло
- зависимость между юнитами - классом или структурой зло (точнее просто не правильно)
- а зависимость между неймспейсами - это блять уебанство для компилируемого языка, потому что ленивые разрабы тупо не захотели вам норм модули завести.
То есть сделали хуже чем даже в си, тупо мусорка из в src
> В принципе это го как бы достаточно.
Нихуя. Вот в том же питоне. Хочешь полноценный человеческий ORM - забудь про корутины свои. А уж сколько реализаций HTTP они уже написали и продолжают писать под каждый очередной асинхронный фреймворк.
> мне кажется в языке не должно быть планировщика
В том и фишка зелёных тредов, что они выносят планировщик из языка. Ты пишешь синхронно, как на обычных тредах, а то что сегодня их планированием занимается рантайм от Гугла, а не от Линуса, - твоему коду пофиг.
Но у Rust'а хотя бы есть отмаза про НУЛЕВУЮ СТОИМОСТЬ, якобы эти их фьючи компилируются в конечный автомат уровня nginx, а с зелёными тредами так хуй сделаешь.
>это вся шедулерная херня должна на уровни ОСи решаться.
Ну так она и решается что в линуксе, что в эппло-бсдшной тусовке. Там есть куча но — где-то был доклад от какого-то чувачка, где он рассказывал что у го рантайм такой единственный, и в нём есть куча крутой хуиты, вроде резайса стеков, автоматические свапы указателей (как в жвм и дотнете с перемещающими сборщиками, толстый рантайм != вм, дада) и прочего, что никак не реализуется без сборщика с его жирными барьерами чтения/записи и тд.
>Но у Rust'а хотя бы есть отмаза
У них отмаза как и у го по поводу генериков — сложна. Учитывая что они в последнее время решили делать язык для ос, а не ещё один компилируемый эрланг, их в отличие от Пайка понять можно.
Там создание потока происходит с меньшим оверхедом чем тем-же линуксом, и потоков будет столько сколько ядер, не больше, избегается оверхед.
Вот это бы на уровне Ядра реализовали заебись стало бы.
>В том и фишка зелёных тредов, что они выносят планировщик из языка. Ты пишешь синхронно, как на обычных тредах, а то что сегодня их планированием занимается рантайм от Гугла, а не от Линуса, - твоему коду пофиг.
Лол, ты описал сейчас планировщик ОС - ты там тоже пишешь и тебя не заботить ничего (как ОСь твои треды переключает, да и вообще срать какие они зеленные или нет - ты не должен это замечать).
НО планировщик в го - это тупая палка с "ничем", планировщик ОС быстрая и мощная оптимизирующая хуйня, отлаженная ассемблером до блеска.
В реале в го у тебя получается что работает и ОС-планировщик, а уже в нем и ГО-планировщик - это пиздец, я серьезно
Эта хуйня рассчитана для скрипт-киди, которые не в курсе как работает планировщик в ос и что может в реале "палко-го".
Это такой же вброс как и строки - они тупо сделали поток сырых байт (то есть не сделали ничего) - но статьями хомякам распиарили, что строки в го самые продуманные и лучшее.
То же самое и про сборщик мусора - назвали известную старую хуйню своими терминами и распиарили как новую технологию (уже за это развод, го надо тыкать мордой в свою мочу, которую плодят по средствам агрессивного маркетинга)
>должно
>>964853
>или что-то свое
Мне трудно это объяснить людям без опыта крупных проектов. Но факт в том, что модулей в го нет, а та свалка из src и гитхаб папок - это просто мусорка, которая еще даже не версионируется, в общем, это ходячая бомба для большого проекта.
То есть, вам снова реальное "ничего" выдали как фичу и чтобы совсем не засрались повесили ЦИ (о котором был изначально разговор)
Запретить легче, чем реализовать менеджер зависимостей.
>Запретить легче, чем реализовать менеджер зависимостей.
Легче.
Собственно, это главный принцип любого дела, получай максимум результата с минимумом усилий.
Проекты на го не предполагают в принципе большого числа зависимостей.
Не говоря уже о, нелепости всех этих автоматических менеджеров и версий контролей. С ними, получается как в линуксе, что-то обновилось, и кернел начал паниковать нахуй.
> как ОСь твои треды переключает, да и вообще срать какие они зеленные или нет - ты не должен это замечать
Не должен и не хочу. Но замечаю, сука. Потому что треды ОС не приспособлены для высоко конкурентного в/в. И люди уже набили себе системными тредами достаточно шишек, чтобы понять, что надо как-то самим рулить этой хуйнёй, раз гора не идёт к магомеду. Но в го, в отличие от других, осознали, что неблокирующий recv() не должен вынуждать тебя вставать раком и писать весь свой код на колбеках или вставлять "await" в каждую вторую строчку.
Другой вопрос конечно, зачем они вынуждают тебя вставать раком для обработки ошибок и прочего.
> В реале в го у тебя получается что работает и ОС-планировщик, а уже в нем и ГО-планировщик - это пиздец, я серьезно
Охуеть, а в модных асунк/ашаит языках вроде питона никакого планировщика нет, по-твоему? Да там тысячи строк этой дряни.
https://github.com/python/cpython/tree/master/Lib/asyncio
Ошибки надо обрабатывать еще на клиенте джаваскриптом, а на сервер все должно идти готовое, чтобы он не занималься всякой хуйней милионы раз.
Тонко, малаца.
>неблокирующий recv() не должен вынуждать тебя вставать раком и писать весь свой код на колбеках или вставлять "await" в каждую вторую строчку.
Двачаю.
>вставать раком и писать весь свой код на колбеках или вставлять "await" в каждую вторую строчку.
Жертва маркетинга стоящая раком, у тебя блокирующие операции от силы 2-3 будут - это сеть, бд и фс.
Причем сеть - то есть сервер, давно скрывает всю эту шляпу от тебя и сам там между потоками переключает - только попроси (если взять скажем undertow или netty)
Все языки не знаю, но нахер модный, молодежный планировщик-в-планировщике нужен на фьючеры или калбэк?? Что за ересь?
В жабе, насколько знаю, вообще стала популярна целая парадигма меняющая подход к разработки - программирование через концепцию акторов.
Ну то есть - го реально не нужен. Даже в расте отказались от этой молодежной, модной фигни, ибо поняли что это просто понт, который несет за собой больше проблем для развития языка (и именно поэтому в вашем го никогда ничего не будет, и вместо 1-2 строк на скале вы будете хуярить 50-100 строк бойлерплейта на го - тру стори)
Классика го-маркетинга и других языков - отсутствие фичь и они от этого только выиграли.
Проходили уже это, как только завезут какую свистелку-перделку - сразу будут трубить "как мы раньше без этого жили".
Го напоминает сейчас джаву версии 1.2, кстати у них тогда тоже были грин-треды, но они отказались, ибо нехуй
В джаве уже хуярят - новые мета языки позволяющие хуярить код в императивно-декларативном стиле.
То есть, пока в го застряли в восьмидесятых годах, в джаве создают совершенно новый уровень программирования.
https://habrahabr.ru/post/319424/
Вот так и живем, жертвы маркетинга.
>В то время, как Scala программы работают приблизительно на 20% быстрее. Ruby программы получают прирост 400% по сравнению с лучшей на сегодняшний день реализацией (и это не MRI).
Где тот педрила, который кричал что го язык языков?
Java-forever...
Ну-у-у... за то у го есть свой шрифт.
Правда в полу-курсивном тексте с засечками очень трудно читать код, но разве это важно?
>>965257
>>965268
Ну и свалите в джава тред, вас кто-то на джаве не дает писать лол? У вас просто в голове не помесщается, что те проблемы, которые вы рассусоливаете для многих в мире не являются проблемами, из-за которых на языке не хочется писать. Воббще показательно, что го не такой уж невзрачный язык, раз появились безумные фанатики и такие же безумные хейтеры.
Да не расстраивайся ты так, может вам дженерики завезут или проброску ошибок, ну чтоб не вручную ритёрны дергать.
Будущее придет и к вам, ...когда-нибудь.
Да я и не расстраиваюсь, я же не сиду сука в треде языка, от которого у меня бомбит и не стараюсь кого-то задеть, насколько хуевой должна быть жихнь, чтобы до такого опускаться. Если есть конкретные предложения, то пиши создателям на гитхаб, предлагай пул реквесты, а просто сидеть говном поливать, ну это вообще дно.
сижу* fix
>Воббще показательно, что го не такой уж невзрачный язык, раз появились безумные фанатики и такие же безумные хейтеры
Ой, вот тут я бы остановился и призадумался, если хейтеры это тупо тролли, резвящиеся над глупостью гоферов и над уродством языка, то вот фанатики, они вызывают больше вопросов.
>>
>я же не сиду сука в треде языка, от которого у меня бомбит
Ты сейчас в треде от которого у тебя бомбит.
Да я редко заглядываю в надежде, что-то адекватное обсудить, видимо не судьба, видимо пока язык на хайпе, не судьба.
>Воббще показательно, что PHP не такой уж невзрачный язык, раз появились безумные фанатики и такие же безумные хейтеры.
Очевидный фикс.
>пиши создателям на гитхаб, предлагай пул реквесты
Пайк, опять доклад сделает, почему это нинужно, почему и так всё хорошо и надо терпеть.
Ну тогда придумай свой язык, серьезно, всем не угодишь, либо пиши, как есть, либо не пиши. Любят не за, а вопреки и все такое.
>Пока в го думают как обрабатывать ошибки или нужны ли им дженерики.
Где именно и КТО это думает?
>В джаве уже хуярят - новые мета языки позволяющие хуярить код в императивно-декларативном стиле.
Эти метаязыки - переоцененное хайпонутое дерьмо, причем хайпонутое по круче ГО.
>То есть, пока в го застряли в восьмидесятых годах
Господи, шизик, уйди прошу.
Это такая пушка, что под 1вое апреля больше подходит.
>Вот так и живем, жертвы маркетинга.
Ну так не живи.
>>965257
>Классика го-маркетинга и других языков - отсутствие фичь и они от этого только выиграли.
С++ вообще не имеет никаких средств управления "пакетами" и ничего.
Вообще, сдался тебе тот маркетинг? Может пойдешь в раздел психологии, и там по обсуждаешь эту хуйню?
>>965286
>если хейтеры это тупо тролли, резвящиеся над глупостью гоферов и над уродством языка
До троллей эти "хейткры" не дотягивают. Троллинг все таки предполагает определенный уровень владения темой и осознанный волевой акт. На харкаче троллей почти нет.
>Пока в го думают как обрабатывать ошибки или нужны ли им дженерики.
Где именно и КТО это думает?
>В джаве уже хуярят - новые мета языки позволяющие хуярить код в императивно-декларативном стиле.
Эти метаязыки - переоцененное хайпонутое дерьмо, причем хайпонутое по круче ГО.
>То есть, пока в го застряли в восьмидесятых годах
Господи, шизик, уйди прошу.
Это такая пушка, что под 1вое апреля больше подходит.
>Вот так и живем, жертвы маркетинга.
Ну так не живи.
>>965257
>Классика го-маркетинга и других языков - отсутствие фичь и они от этого только выиграли.
С++ вообще не имеет никаких средств управления "пакетами" и ничего.
Вообще, сдался тебе тот маркетинг? Может пойдешь в раздел психологии, и там по обсуждаешь эту хуйню?
>>965286
>если хейтеры это тупо тролли, резвящиеся над глупостью гоферов и над уродством языка
До троллей эти "хейткры" не дотягивают. Троллинг все таки предполагает определенный уровень владения темой и осознанный волевой акт. На харкаче троллей почти нет.
Изначально я думал, что это оккультный фетиш, порождённый Пайком с помощью секусальных ритуалов с его женой, с целью оттолкнуть от языка людей слабых духом и ошеломить, деморализовать всякое сопротивление воле чёрных хозяев Пайка.
Но тогда бы в сообществе Го все старались игнорировать этого суслика, вытеснить эту травму из своего сознания, и рано или поздно его выкинули бы на мороз и заменили на одну букву G.
А меж тем всё ровно наоборот, гоферы тыкают его всюду, где можно и нельзя. Что это тогда? Отражение интеллектуального и эмоционального уровня развития гоферов? Садистское удовольствие для Пайка в дополнение к самому языку?
А чем тебе маскот не нравится?
> у тебя блокирующие операции от силы 2-3 будут - это сеть, бд и фс.
Так программа на Го больше ничего и не делает.
Ты наебался на одну хромосому, теперь страдай
Думали будет стильно, прикольно и молодежно, но в реале маскот стал отражением его комьюнити.
Вообще провал маркетологов, он получился нехуя не милым и не вызывающим, а отталкивающим, хоть мне похер на позерство и всю эту хуйню с "лейблами", но суслик-дебил вызывал у меня сильное отторжение, как будто язык правда для недалеких (хотя всей правды я еще тогда не знал, лол).
Я так понимаю версию с выпученными глаза юзают теперь все меньше.
Ублюдок, мать твою, а ну иди сюда говно собачье, решил ко мне лезть? Ты, засранец вонючий, мать твою, а? Ну иди сюда, попробуй меня трахнуть, я тебя сам трахну ублюдок, онанист чертов, будь ты проклят, иди идиот, трахать тебя и всю семью, говно собачье, жлоб вонючий, дерьмо, сука, падла, иди сюда, мерзавец, негодяй, гад, иди сюда ты - говно, ЖОПА!
Немного схожая ситуация с растом, хотя этот язык я уважаю.
> Думали будет стильно, прикольно и молодежно
Это было бы очевидным объяснением, если б не тот факт, что в остальном язык - антитеза прикольности и молодёжности. Я всё же думаю, что есть какой-то более глубокий смысл. Возможно это социальный эксперимент по заказу гугловского отдела по анальному порабощению юзеров.
>Это было бы очевидным объяснением, если б не тот факт, что в остальном язык - антитеза прикольности и молодёжности
Как раз такие и жрут его - молодые или малоопытные (те бестолочи, которые впитывают всю херню ниспосылаемую им в ИТ - и считают это как дарование богов (узнал себя, да, анон?)).
Почему у многих айтишником отсутствует критическое мышление, это отдельная тема для разговора. А так, мы сначала тоже думали что этот маскот откровенный подъеб, но потом решили, что слишком прямолинейно и толсто. Скорее просто обосрались (но как точно).
Самый мой любимый вариант - что гоферы настолько тупые, что когда над ними хотели постебаться и предложи этот вариант маскота - он им не ожданно понравился.
Тебе вверху написали, сейчас запилят труфеля с граалем и ты будешь божить на руби как на си, вызывая код на питоне.
Пока корпорации вливают тонну бабла в ученых мужей для прорыва столетия, в го объясняют почему им ничего не нужно и как все от этого выиграли.
Почувствуй просто масштабы и разницу этих тусовок.
Ну и есть устоявшиеся мнения, что го живет ровно до следующего хайпа (может быть того же труфеля). А вся кодобаза (скрипты) буду переписаны на новую очередную йобу.
И тут спроси себя - ты хочешь программировать и развиваться вместе с миллионным опытом поколений (джава), с устоявшимися практиками и библиотеками или ты хочешь с нуля писать велосипеды-перделки как делали деды восьмидесятых годов?
Блин, а тебе не пофиг, все равно, каждый выбирает сам, но вообще да я тоже на хайп повелся.
Я выбираю haskell
Если молчать, то завтра твой управляющий, наслушавшись про чудо-язык, которому учатся за два дня и на нем пишет сам гугл, засунут тебе так глубоко в зад, что ты сам охуеешь, причем во всех бедах будешь виноват ты, ибо язык охуеннен по определению (спроси у го-комьюнити).
На агрессивный маркетинг и прочие булшиты, надо реагировать так, чтобы завтра это не стало уже твоей проблемой.
>Если молчать, то завтра твой управляющий, наслушавшись про чудо-язык, которому учатся за два дня и на нем пишет сам гугл, засунут тебе так глубоко в зад, что ты сам охуеешь
Тебе, твой управляющий, засунет взад что посчитает когда посчитает нужным, независимо от того, будешь ты молчать, или визжать как резанная свинья.
>надо реагировать так
>наслушавшись про
>Если молчать
Имплаинг, твой "управляющий" очень интересуется мнением дегенератов с харкача.
>И тут спроси себя - ты хочешь программировать и развиваться вместе с миллионным опытом поколений (джава), с устоявшимися практиками и библиотеками или ты хочешь с нуля писать велосипеды-перделки как делали деды восьмидесятых годов?
Какая в жопу разница, пока платят деньги?
>программировать и развиваться
Галопередону выпей все же.
>Тебе вверху написали, сейчас запилят труфеля с граалем и ты будешь божить на руби как на си, вызывая код на питоне.
Шизик, это ты сам писал вверху, сам себе.
Ну что там, хейтеры, чего это ваша Джава и Котлин позади го волочатся?
Чтобы проект гуглА. Поддерживаемый гуглОм. В который вбухано много баблА....ммм.. Что?
Айтишники, хватит жрать говно, имейте критическое мышление. А теперь пройдемся по винам
1) "Наиболее часто используемым участниками опроса языком стал JavaScript, на втором месте SQL"
Кстати многое говорит об комьюнити гитсвалки и популярности там JavaScript
2) Наиболее любимый язык:
....
Smalltalk - 67% (вот это поворот, Карл!)
....
3) Го любят 63,3% Опрощенных, а пишут 4,3% - у вас тут дебит с кредитом не сошелся...
Дальше мне стало лень анализировать. Вообще Го активно побеждает везде уже лет 7 (с 2010 года ежегодный прорыв года просто), был бы менеджером который гоняет кодеров-макак, я бы уже стал думать что топ язык не джава (и даже не SQL), а Го.
Но опять же, сравните тусовки. Одно дело мнение недалеких инди-писак, а другое дело ИТ-индустрии. И пока титаны делают технологию уравнивающие все языки (труфель), в го еще выбирают менеджер зависимостей (который еще совсем недавно был классически не нужен)
Го определенно прорыв восьмидесятых.
>гитсвалки
фикс, там SO, хотя один хер та еще параша (местами конечно полезная, а местами апогей долбаебов, как и любой сайт с рейтингами).
Насколько понимаю, по последнему раунду, они допилил асинхронщину и таки рвут
>>965824
https://habrahabr.ru/post/325008/#comment_10140472
Вот только раст чрезмерно сложен.
Сколько времени надо, чтобы разработчик выучил го? А сколько надо для изучения раста?
>1) "Наиболее часто используемым участниками опроса языком стал JavaScript, на втором месте SQL"
>Кстати многое говорит об комьюнити гитсвалки и популярности там JavaScript
Проснись, вебпрограммирование теперь самое популярное.
>Для тех кому нужна производительность в проекте
kek, таких тут со всей борды не наберется
алзо, го хорош тем, что в нем совсем нет магии, поэтому код легко читается и понимается.
А зачем тратить усилия на раст, если можно тоже самое сделать на го быстрее и пойти пить смузи? Да и вообще кому хайлоад нужен будут на крестах писать или джаве, а если распределенно нужно, то на скале или эрланге, это все хипстерские поделки для задротов, а го легкий поэтому еще имеет право на жизнь
Да ну нахуй? Долбаеб, это и без тебя понятно.
Обилие жабаскрипта говорит что хипстота и студентота пилит тучами портфолио-перделок, которые перенасыщают индустрию.
Понятно что есть node.js и в купе это было бы удвоения ЖС - но его доля не большая, в сравнение со свистелками и перделками мусором гитхаба
>А зачем тратить усилия на раст
Чтобы получить платформу уровня с++ с нулевой стоимостью абстракции, но при этом иметь язык который 99% проблем разработки исключает еще на уровне компиляции.
Это тебе не касты с interface{} во время рантайма дергать, ожидая в какой цикл луны или месячных твоей ЕОТ упадет программа
И почему нельзя сделать нормальный язык, который бы транслировался в Го? Ну запилить там полноценные классы, дженерики, енумы, тьюплы, юнионы, енумы, лямбды, вывод типов и прочее (по-моему большинство этих фичей можно наваять с помощью простой кодогенерации, было бы желание). Неужели никто еще ничего подобного не сделал? Я видел только какой-то хаскелл-лайк высер (оден), но сами понимаете, это нахуй никому не надо.
А ну и еще чтоб таки можно было проверить, закрыт ли канал и обработать эту ситуацию, выпилить нахуй nil.
Может, соберемся и сделаем что-то подобное? Конечно, если этого еще нет.
>Чтобы получить платформу уровня с++ с нулевой стоимостью абстракции, но при этом иметь язык который 99% проблем разработки исключает еще на уровне компиляции.
Так а можно с помощью твоего Rust как-то симулировать горутины? И запилить для каналов милый синтаксис со стрелками, а не это порно с вызовом методов и двоеточиями?
>И почему нельзя сделать нормальный язык, который бы транслировался в Го?
Умы говорят, что там настолько захордкоженно участие го в стандарте или требования для компиляции, что хуй. Язык получиться слишком похожим на го или будет оверхед просадки.
А вообще какой смысл? Куда ценнее будет язык компилуремых для си/с++ или жабы, там сотни миллионов человеко часов потрачено.
Го не представляет ценности - это либо огрызки быстро написанные, либо порты из си.
Ну то есть вообще весь поинт индустрии и главных дядек - наличие свистелки или планировщика-в-планировщике - не делает язык настолько ценным, чтобы перекатываться из языков с сотней миллионов человеко-часов работы, чтобы потом начать все заново писать.
>Может, соберемся и сделаем что-то подобное?
Лучше транслятор в си - но такое уже есть, например Nim- язык поверх си с синтаксисом питона
>Так а можно с помощью твоего Rust как-то симулировать горутины? И запилить для каналов милый синтаксис со стрелками, а не это порно с вызовом методов и двоеточиями?
Ты можешь корутины (именно так они называются) написать сам. Более того они там изначально были и их выкинули - ибо хайп пустой.
Ты ответь нахера тебе корутины, чем тебе обычный зеленный поток не устраивает?
>Ты ответь нахера тебе корутины, чем тебе обычный зеленный поток не устраивает?
Ты же понимаешь, реальные неблокирующие операции занимают малую долю, а оверхед между переключением контекстом и работой планировщика - будет всегда.
А вообще, если у тебя долгоиграющие приложение - jvm твой выбор. Он не только умно складывает кэш в памяти (для быстрого доступа), он еще умеет в одну фичу, в которую не могут компилируемые языки - это спекулятивная оптимизация, дающие такие плюхи, что ты не представляешь.
В общем в jvm и хотспот не зря столько бабосов и времени вливали.
Конечно как и во всем есть минусы - чтобы собрать инфу для такой оптимизации нужно анализировать некоторое время реально работающие приложение (это и есть прогрев с последующий компиляцией уже оптимизированного кода (JIT))
В общем вирт машина не просто перделка, это парадигма дающие плюшки, а JVM наилучший ее представитель с тонной влитых человеко часов.
>Умы говорят, что там настолько захордкоженно участие го в стандарте или требования для компиляции, что хуй. Язык получиться слишком похожим на го или будет оверхед просадки.
Все, что я написал, либо происходит на этапе компиляции, либо в рантайме реализуется как простые обертки в виде структур, по сути сахар поверх го.
>А вообще какой смысл? Куда ценнее будет язык компилуремых для си/с++
Да там говна много. Го когда-то же вроде в С транслировался. Сейчас Nim транслируется в С (во всяком случае так было летом, когда я с ним игрался), в нем есть весь тот сахар, что я упомянул, но язык, скажем так, оставляет слишком много свободы, как-то он на пайтон или подобное Г похож.
>жабы
Не, JVM же, а у го один из плюсов - быстрая кросс-компиляция в натив бинари. Это еще один плюс посравнению с сями, у Го няшный толчейн, который работает на всех платформах начиная от WinXP (lol) и заканчивая макосью и переключение на другую платформу делается одной командой.
>Лучше транслятор в си - но такое уже есть, например Nim- язык поверх си с синтаксисом питона
Блять не дочитал и выше написал про ним.
>>966722
>Ты ответь нахера тебе корутины, чем тебе обычный зеленный поток не устраивает?
Так в расте нативные потоки ОС же, не?
Мне в принципе похуй корутины или зеленый поток, главное, что я могу создать тысячу горутин и это куда дешевле, чем тысяча нативных тредов. Там блять будет по факту не выполнение задачи а постоянно 100% ЦП на переключениях контекста.
>>966741
>Конечно как и во всем есть минусы - чтобы собрать инфу для такой оптимизации нужно
Спец по тюнингу и разогреву джавы для этого нужен, если уж быть точным.
>оставляет слишком много свободы
Что за природная любовь к сада маза.
Комьюнити должен отрегулировать стиль, а не за тебя должны придумать.
Я вот хочу такое забибенить (убогий го, убогие и решения)
v, err = xuy(); if (err != nil) return err;
Но каким-то хером за меня решили что if в одну строчку нельзя. За то распидарасивание по 3 строки норм и нехера не портят читабельность кода.
Мало того что руками заставили делать проброс, так еще и компактную запись нельзя сделать чтобы на 5 строк не было 15 if err != nil...
>Так в расте нативные потоки ОС же, не?
>Мне в принципе похуй корутины или зеленый поток, главное, что я могу создать тысячу горутин и это куда дешевле, чем тысяча нативных тредов. Там блять будет по факту не выполнение задачи а постоянно 100% ЦП на переключениях контекста.
В расте фьючеры, и tokio либа.
>>966693
>И почему нельзя сделать нормальный язык, который бы транслировался в Го? Ну запилить там полноценные классы, дженерики, енумы, тьюплы, юнионы, енумы, лямбды, вывод типов и прочее (по-моему большинство этих фичей можно наваять с помощью простой кодогенерации, было бы желание). Неужели никто еще ничего подобного не сделал? Я видел только какой-то хаскелл-лайк высер (оден), но сами понимаете, это нахуй никому не надо.
Потому, что нет смысла.
С этим всем есть куча нормальных языков, которые ненужно никуда транслировать.
Смысл Го в удешевлении и упрощении разработки.
Отказе от сложной и тяжёлой объектной модели в пользу процедурной - задаче ориентированной.
Если тебе нужны классы, то тебе ненужен ГО.
Сами по себе гринтреды бесполезны, ибо заменяются ивент пулом и аналогом async await.
>Но каким-то хером за меня решили что if в одну строчку нельзя.
И правильно сделали.
Благослови Господь того, кто анально огораживает стиль в своем ЯП.
Одна задача - одно решение.
На крестах например, иногда две программы смотришь, и понять не можешь, что они на одном языке, да еще и на С++.
Это ад просто.
>Все, что я написал, либо происходит на этапе компиляции, либо в рантайме реализуется как простые обертки в виде структур, по сути сахар поверх го.
Это в теории все так легко, на практике будет просто легкая настройка и все. И суслик вместо одного языка на деле будет ебаться с двумя, потому что Го слишком высокоуровневый чтобы его юзать как подобие байткода.
>WinXP (lol)
Ну вообще xp платформер или как там его - у него поддержка до 2019, это та версия для банкоматов и терминалов.
>Не, JVM же, а у го один из плюсов - быстрая кросс-компиляция в натив бинари
Убеди меня, чем это для тебя важно?
Какая сакральная разница между запуском бинарника или jar?
Я даже скажу, то что у го нет модулей и он компилиться в один сплошной бинарь - это даже зло.
В реале конечно плюс есть - бинарь стартует быстрее, но это важно только для скриптов или клиент-приложений, а мы же о серверном софте, да и у го нет родных либ для GUI чтобы ему там на клиент лесть.
Подожди релиз java 9 там тебе бинарь должны дать (а вместе с ним может и труфеля - а это уже другая эпоха программирования)
>Так в расте нативные потоки ОС же, не?
Если разработаешь отдельной либой, у тебя просто будет горутина, которая запускаться через какой-то метод-функцию, а не через ключевое слово go. И уже в этой либе там будет весь менеджмент и юзание корутин. В общем все взаимодействие будет через API библиотеки, местами не так красиво - но эффект "подкапотом" достижим.
Я скажу одно слово, которое нельзя произносить в чатах го - горутины это хуйня.
>Там блять будет по факту не выполнение задачи а постоянно 100% ЦП на переключениях контекста.
Ты конечно же прав.
-Про планировщик го, который планирует в планировщике ОС - уже говорили, это не круто.
-Почему ты решил что 1000 горутин на твоем четырех-ядерном проце будут эффективны?
Ну работает в один момент только 3 потока из 996 (один жрет планировщик, ему же надо планировать) и дергает их планировщик с чуть меньшим оверхедом, потому что планировщик там тупо палка.
В ОС планировщик может хорошо оптимизировать всю эту кашу, в го не могут такой сделать по определению.
>Спец по тюнингу и разогреву джавы для этого нужен, если уж быть точным.
Лол, зачем, греется она сама, дефолтный ГЦ тебя в 90% случаев прекрасно устроит, новые еще круче, он там сам все подбирает.
По крайней мере в джаве ты можешь выбрать ГЦ, и абстрактно - можно платить дешевой памятью а не процем. Го ты платишь всегда процем (весь пиздец ГЦ в го описан тут https://habrahabr.ru/company/mailru/blog/318504/)
>Все, что я написал, либо происходит на этапе компиляции, либо в рантайме реализуется как простые обертки в виде структур, по сути сахар поверх го.
Это в теории все так легко, на практике будет просто легкая настройка и все. И суслик вместо одного языка на деле будет ебаться с двумя, потому что Го слишком высокоуровневый чтобы его юзать как подобие байткода.
>WinXP (lol)
Ну вообще xp платформер или как там его - у него поддержка до 2019, это та версия для банкоматов и терминалов.
>Не, JVM же, а у го один из плюсов - быстрая кросс-компиляция в натив бинари
Убеди меня, чем это для тебя важно?
Какая сакральная разница между запуском бинарника или jar?
Я даже скажу, то что у го нет модулей и он компилиться в один сплошной бинарь - это даже зло.
В реале конечно плюс есть - бинарь стартует быстрее, но это важно только для скриптов или клиент-приложений, а мы же о серверном софте, да и у го нет родных либ для GUI чтобы ему там на клиент лесть.
Подожди релиз java 9 там тебе бинарь должны дать (а вместе с ним может и труфеля - а это уже другая эпоха программирования)
>Так в расте нативные потоки ОС же, не?
Если разработаешь отдельной либой, у тебя просто будет горутина, которая запускаться через какой-то метод-функцию, а не через ключевое слово go. И уже в этой либе там будет весь менеджмент и юзание корутин. В общем все взаимодействие будет через API библиотеки, местами не так красиво - но эффект "подкапотом" достижим.
Я скажу одно слово, которое нельзя произносить в чатах го - горутины это хуйня.
>Там блять будет по факту не выполнение задачи а постоянно 100% ЦП на переключениях контекста.
Ты конечно же прав.
-Про планировщик го, который планирует в планировщике ОС - уже говорили, это не круто.
-Почему ты решил что 1000 горутин на твоем четырех-ядерном проце будут эффективны?
Ну работает в один момент только 3 потока из 996 (один жрет планировщик, ему же надо планировать) и дергает их планировщик с чуть меньшим оверхедом, потому что планировщик там тупо палка.
В ОС планировщик может хорошо оптимизировать всю эту кашу, в го не могут такой сделать по определению.
>Спец по тюнингу и разогреву джавы для этого нужен, если уж быть точным.
Лол, зачем, греется она сама, дефолтный ГЦ тебя в 90% случаев прекрасно устроит, новые еще круче, он там сам все подбирает.
По крайней мере в джаве ты можешь выбрать ГЦ, и абстрактно - можно платить дешевой памятью а не процем. Го ты платишь всегда процем (весь пиздец ГЦ в го описан тут https://habrahabr.ru/company/mailru/blog/318504/)
То что С++ это старый кусок говна и люди не пришли к консенсусу это отдельная тема, но разве форматирование для долбаебов чтоли?
Открыл код, прогнал через форматтер (по крайней мере для таких языков как Го или там джава это прокатило бы)
>Открыл код, прогнал через форматтер
Скачал исходники с гитхаба - форматтер -
сделал маленькую правку в коде - коммитишь - половина кода изменено из-за расставленных переносов и скобок на разных строках.
Я пхп скрипты только через авто-форматирование и читал раньше
>-Про планировщик го, который планирует в планировщике ОС - уже говорили, это не круто.
>-Почему ты решил что 1000 горутин на твоем четырех-ядерном проце будут эффективны?
>Ну работает в один момент только 3 потока из 996 (один жрет планировщик, ему же надо планировать) и дергает их планировщик с чуть меньшим оверхедом, потому что планировщик там тупо палка.
Чет мне кажется ты плохо себе представляешь работу горутин и их смысл.
Планировщик пожирающий целый поток это вообще пушка.
То тебе читать, то теперь писать (Если коммитить то кому? Почему в вашей команде нет код стайла? Если же лезешь в чужую разработку - будь добр соблюдай их код стайл)
Реально проблема только в плюсах (и то мне кажется раздутая), во всем другом мире вся разница сводится только отступам каким-то и читабельность не портит.
При этом язык не запрещает мне (и не должен) то, что не вопреки его логики.
В этом весь го, он не профессиональный, компилятор занимается помимо компиляции еще какой-то хуйней.
Такое ощущение что го разрабатывали школьники
>Чет мне кажется ты плохо себе представляешь работу горутин и их смысл.
Насколько я это вижу, горутины несильно отличаются от ивентлупа с автоматом построенным на колбеках. С точки зрения выполнения кода и оверхеда.
Просто сам подход как бы вывернут наизнанку. Автомат у нас как бы внутри инкапсулирован, а код мы пишем как бы в ивентлупе. Что в тысячу раз удобнее.
>При этом язык не запрещает мне (и не должен) то, что не вопреки его логики.
Ну так го и не запрещает то, что не вопреки его логике.
>Планировщик пожирающий целый поток это вообще пушка.
Планировщик дергается при каждом вызове внешней функции.
То есть на каждый вызов такой функции тратится оверхед твоей пушки.
А теперь представим что таких пушек 1000 (или как там кричат 500.000)
Пушка проста, но не бесплатна (и вроде есть оверхед на то, чтобы не повесить числодробилкой весь поток).
В общем, в размерности такой нативщины - нехилая такая пушка выходит.
Почему го запрещает ставить фигурную скобку на новой строке в определении функции?
>Главное в это верить
Причем тут вера вообще?
Логика языка формируется тем, что он запрещает, и чего позволяет.
Не может язык запрещать чего-то, вопреки своей логике.
Это логика.
>>966948
>Планировщик дергается при каждом вызове внешней функции.
Что ты под внешней функцией подразумеваешь?
"Планировщик" в го - почти полный аналог ивентлупу в любой асинхронной программе.
>А теперь представим что таких пушек 1000 (или как там кричат 500.000)
Ну представили.
>Пушка проста, но не бесплатна
А есть бесплатные?
>Почему го запрещает ставить фигурную скобку на новой строке в определении функции?
Потому, что это вопреки его логике.
>А есть бесплатные?
Бесплатное - использовать асинхронщину только на блокирующие операции.
А теперь пример - если функция-дробилка просаживает на 100мс обычный поток - она все равно занимается полезной работой и повесит только свой поток, который так или иначе зависит от вычисления не затрагивая никого.
Если функция-дробилка просаживает на 100мс горутину - она просаживает и ~250 из 1000 горутин.
Конечно она тоже занимается полезно работой, но 250 юзеров у тебя сосут в это время (и сосут еще больше, так как еще 249 горутин в очереди, надеюсь не таких же).
Чтобы не быть совсем блондинкой, нужно хотябы почитать как развивался планировщик в ОС и с какими проблемами люди сталкивали и решали.
А то блять завезли залупу времен 60х годов и все носятся с ней.
Попытка реализовать тысячную бизнес-логику на одно проце, это блять самый глуппый из буллшитов которые я слышал.
Уже выше писали, ты в реальном проекте скорее сожрешь канал на 500 запросов в секунду, чем дойдешь до 10К
Когда ты будешь доходить к проблеме 10К тебе уже придется масштабировать, ибо бизнес логика не бесплатна.
Конечно если это не 10К хеллоувордов в секунду.
>Добро пожаловать в школьную логику.
>Почему? Потому что...
Ты умственно отсталый?
1) Твоя претензия была к тому, что мол язык действует вопреки своей логике.
Я тебе говорю, что этого не может быть, а если есть, то это БАГ, или недоработка, сообщи о нем разработчикам.
2) Всех тонкостей и нюансов стоящих за общей концепцией языка можно и не знать, они, могут и не быть нигде документированы. Некоторые из них, могут быть просто случайным стечением обстоятельств. Что в свою очередь не лишает ЯП логичности.
3) Твой непонимание моего ответа, или мое гипотетическое непонимание твоего вопроса, никак не связанно с логикой ЯП, и уж тем более не дает повода исходиться на говно и обзывать собеседника школьником.
>Бесплатное - использовать асинхронщину только на блокирующие операции.
Это как? Пример реализации.
>Если функция-дробилка просаживает на 100мс горутину - она просаживает и ~250 из 1000 горутин.
>Конечно она тоже занимается полезно работой, но 250 юзеров у тебя сосут в это время (и сосут еще больше, так как еще 249 горутин в очереди, надеюсь не таких же).
Так работают любые программы с асинхронный IO.
Ты этого не знаешь, или о чем ты вообще?
>Попытка реализовать тысячную бизнес-логику на одно проце, это блять самый глуппый из буллшитов которые я слышал.
Я никогда ни о чем подобном не слышал.
Что за попытка, что за логика, какова реализация?
Ты выступаешь в принципе против асинхронного IO?
Скажи честно, ты же очень далек от программирования?
Боже.
Ну зачем ты себя ведешь подобным отвратительным образом?
Грязно хамишь, троллишь, просто несешь какой-то несвязный бред.
Тебе заняться нечем?
Или я с ботом вообще говорю? Ну не может человек быть таким мерзким дегенератом.
>Что за природная любовь к сада маза.
>Комьюнити должен отрегулировать стиль, а не за тебя должны придумать.
Причем тут коммьюнити, если на ним можно писать как обезьяна все в перемешку и каждое действие можно выполнить 10 разными путями, можно создавать методы с произвольными именами (включая спецсимволы).
Коммьюнити не имеет никакого внимания на каждого разработчика. Gofmt, кстати, один из самых больших плюсов го.
>v, err = xuy(); if (err != nil) return err;
> нечитаемый кал ^^
Вот для таких, как ты и нужны всякие анальные ограничения, иначе вы будете писать такой райт-онли код.
>>966893
>Но каким-то хером за меня решили что if в одну строчку нельзя. За то распидарасивание по 3 строки норм и нехера не портят читабельность кода.
>Мало того что руками заставили делать проброс, так еще и компактную запись нельзя сделать чтобы на 5 строк не было 15 if err != nil...
Ну я согласен, что для проверки err на nil и ретурна нужно сделать какой-то шорткат, чтобы писать это в одну строку и теперь весь мир пишет одно и то же.
>>966898
>С этим всем есть куча нормальных языков, которые ненужно никуда транслировать.
Там же нет няшной concurrency модели го с глубоко интегрированными примитивами и быстрой компиляции в статические бинарники. О каких языках ты вещаешь? .net? нужна .netframework. Java? JVM. Только C++, да вот чет с ним не так, раз появился тот же раст.
>>966916
>Ну вообще xp платформер или как там его - у него поддержка до 2019, это та версия для банкоматов и терминалов.
Ну ты это скажи разработчикам раста, у которых ни бинарники, ни тулчейн на хр давно не работают.
>>966916
>-Почему ты решил что 1000 горутин на твоем четырех-ядерном проце будут эффективны?
Ну например, потому что когда я запускаю тысячу нативных тредов у меня загрузка ЦП под сто, а 1к горутин - не более 5% охуеть да?
Плюс например модель goroutine per request, уж на тредах ты ее никак не реализуешь, потому что спавн и обслуживание нативного треда дороже горутины.
>Если разработаешь отдельной либой, у тебя просто будет горутина, которая запускаться через какой-то метод-функцию, а не через ключевое слово go. И уже в этой либе там будет весь менеджмент и юзание корутин. В общем все взаимодействие будет через API библиотеки, местами не так красиво - но эффект "подкапотом" достижим.
Ну вот именно. И либа эта будет от какого-то 3rd разработчика, а в go это все глубоко интегрировано, все изменения в runtime/gc делаются с оглядкой на модель горутин. А эти все либы - лишь какой-то ебаный костыль.
>>966942
>То тебе читать, то теперь писать (Если коммитить то кому? Почему в вашей команде нет код стайла? Если же лезешь в чужую разработку - будь добр соблюдай их код стайл)
Ну вот а в Го во многом один код стайл, по крайней мере в плане форматинга (хотя gogland вроде как не полностью идентичен gofmt) и такой проблемы просто не может возникнуть и gofmt-форматнутый код - стандарт для всех начиная с стандартной библиотеки и кончая наколенными поделками на гитхабе с 0 просмотрами. Я не помню, когда видел go код, который бы чем-то отличался от gofmt-обработанного.
>В этом весь го, он не профессиональный, компилятор занимается помимо компиляции еще какой-то хуйней.
Если ты про форматирование, то gofmt - это не часть компилятора и в принципе его можно эвойдить.
>>966956
>Почему го запрещает ставить фигурную скобку на новой строке в определении функции?
Это связано с точкой с запятой, которой в го вроде как нет, но на самом деле она там есть и подставляется при переходе на новую строку, т.е. если ты напишешь
>if foo == 1
>{
На самом деле это будет
>if foo == 1;
>{
По сути херня со скобками никого не ебет, весь мир давным давно ставит эту скобку в конце строки, а не на отдельной или вообще в начале.
Ну и Go код же должен быть единообразным, это и есть логика/философия языка.
>Что за природная любовь к сада маза.
>Комьюнити должен отрегулировать стиль, а не за тебя должны придумать.
Причем тут коммьюнити, если на ним можно писать как обезьяна все в перемешку и каждое действие можно выполнить 10 разными путями, можно создавать методы с произвольными именами (включая спецсимволы).
Коммьюнити не имеет никакого внимания на каждого разработчика. Gofmt, кстати, один из самых больших плюсов го.
>v, err = xuy(); if (err != nil) return err;
> нечитаемый кал ^^
Вот для таких, как ты и нужны всякие анальные ограничения, иначе вы будете писать такой райт-онли код.
>>966893
>Но каким-то хером за меня решили что if в одну строчку нельзя. За то распидарасивание по 3 строки норм и нехера не портят читабельность кода.
>Мало того что руками заставили делать проброс, так еще и компактную запись нельзя сделать чтобы на 5 строк не было 15 if err != nil...
Ну я согласен, что для проверки err на nil и ретурна нужно сделать какой-то шорткат, чтобы писать это в одну строку и теперь весь мир пишет одно и то же.
>>966898
>С этим всем есть куча нормальных языков, которые ненужно никуда транслировать.
Там же нет няшной concurrency модели го с глубоко интегрированными примитивами и быстрой компиляции в статические бинарники. О каких языках ты вещаешь? .net? нужна .netframework. Java? JVM. Только C++, да вот чет с ним не так, раз появился тот же раст.
>>966916
>Ну вообще xp платформер или как там его - у него поддержка до 2019, это та версия для банкоматов и терминалов.
Ну ты это скажи разработчикам раста, у которых ни бинарники, ни тулчейн на хр давно не работают.
>>966916
>-Почему ты решил что 1000 горутин на твоем четырех-ядерном проце будут эффективны?
Ну например, потому что когда я запускаю тысячу нативных тредов у меня загрузка ЦП под сто, а 1к горутин - не более 5% охуеть да?
Плюс например модель goroutine per request, уж на тредах ты ее никак не реализуешь, потому что спавн и обслуживание нативного треда дороже горутины.
>Если разработаешь отдельной либой, у тебя просто будет горутина, которая запускаться через какой-то метод-функцию, а не через ключевое слово go. И уже в этой либе там будет весь менеджмент и юзание корутин. В общем все взаимодействие будет через API библиотеки, местами не так красиво - но эффект "подкапотом" достижим.
Ну вот именно. И либа эта будет от какого-то 3rd разработчика, а в go это все глубоко интегрировано, все изменения в runtime/gc делаются с оглядкой на модель горутин. А эти все либы - лишь какой-то ебаный костыль.
>>966942
>То тебе читать, то теперь писать (Если коммитить то кому? Почему в вашей команде нет код стайла? Если же лезешь в чужую разработку - будь добр соблюдай их код стайл)
Ну вот а в Го во многом один код стайл, по крайней мере в плане форматинга (хотя gogland вроде как не полностью идентичен gofmt) и такой проблемы просто не может возникнуть и gofmt-форматнутый код - стандарт для всех начиная с стандартной библиотеки и кончая наколенными поделками на гитхабе с 0 просмотрами. Я не помню, когда видел go код, который бы чем-то отличался от gofmt-обработанного.
>В этом весь го, он не профессиональный, компилятор занимается помимо компиляции еще какой-то хуйней.
Если ты про форматирование, то gofmt - это не часть компилятора и в принципе его можно эвойдить.
>>966956
>Почему го запрещает ставить фигурную скобку на новой строке в определении функции?
Это связано с точкой с запятой, которой в го вроде как нет, но на самом деле она там есть и подставляется при переходе на новую строку, т.е. если ты напишешь
>if foo == 1
>{
На самом деле это будет
>if foo == 1;
>{
По сути херня со скобками никого не ебет, весь мир давным давно ставит эту скобку в конце строки, а не на отдельной или вообще в начале.
Ну и Go код же должен быть единообразным, это и есть логика/философия языка.
Ведущий:
-Смотрите, с нашей сидушкой-багажником вы можете возить слона на велосипеде
Ведущие достают надувного слона с надписью "хелллоу ворд" и сажает на сидушку.
Зрители:
-Ба... действительно, они возят слона на велосипеде, какая же круть, это прорыв!
>и обзывать собеседника школьником.
Я сказал, что это школьная логика. Я не называл тебя школьником, я уверен ты взрослый дядя, просто мыслишь еще так
>Там же нет няшной concurrency модели го с глубоко интегрированными примитивами и быстрой компиляции в статические бинарники.
Нет.
Но она видимо плохо совместима с другими неГо подходами.
Асинхронное программирование это пипец как сложно.
Всякие async await в том же шарпе, вроде как просто, но на деле куча подводных камней.
Ну вот представь, что async живет вместе с горутинами. Та ну нафиг.
Ну а вообще, есть nodeJS например, который те же яйца только в профиль.
>Ну например, потому что когда я запускаю тысячу нативных тредов у меня загрузка ЦП под сто, а 1к горутин - не более 5% охуеть да?
Нехуя горутины не просто улучшают цвет волос, они еще и ускоряют бизнес-логику.
Или у тебя там пустые горутины крутятся?
То что я вижу 1000 потоков юзают 100% процессорного времени, а горутины всего 5% процессорного времени, хотя по логике должны тоже 100% (но завершиться быстрее).
PS школьники не знают как работает процессор и хвастаются тем, что у них 95% проца почему-то простаивает - скорее всего на вводе-выводе где-то.
Лолец прям.
>Асинхронное программирование это пипец как сложно.
Но не с Go.
>Ну а вообще, есть nodeJS
Однопоточный? Или уже нет не в курсе просто за последние новости
>>967004
Блять, скорость та же, проца жрет меньше.
При нативных тредах почти все время тратится на переключение контекста при таком большом числе тредов.
Да не спорю, наверное можно добиться с помощью асинков того же эффекта, но это явно будет сложнее, чем наспавнить 1к горутин, которые будут сосать данные из канала и отправлять результат в другой канал и все это на built in абстракциях языка. По факту больше нигде такого нет и поделать с этим ты уже ничего не сможешь.
>> нечитаемый кал ^^
Это ты сейчас прям про все Го сейчас сказанул, я лишь отступы убрал, а так это все ваша говно-обработка ошибок.
>Ну ты это скажи разработчикам раста, у которых ни бинарники, ни тулчейн на хр давно не работают.
Не работает компилятор, собрать можно, их заставила мозила. А так да, раст тут хипстерит.
>>966990
>Там же нет няшной concurrency модели
У джавы целый набор няшеств был, в том числе атомарные типы!, еще до того как го выплюнули
>Однопоточный? Или уже нет не в курсе просто за последние новости
Я вообще не в курсе с самого начала. Сорян, просто слышал, что там асинхронщина реализована оче эффективно и ты тип пишешь код синхронно.
>Да не спорю, наверное можно добиться с помощью асинков того же эффекта, но это явно будет сложнее, чем наспавнить 1к горутин
Горутины и автомат на асинках, почти одно и то-же в плане производительности.
А полоумный идиот, которому ты отвечаешь, вообще топит против любого асинхронного кода. А может и не знает, что это такое.
Предлагаю его игнорировать.
Хз, кто твой илюша.
Задача: есть ~1k прокси, надо с использованием каждой посылать запрос к определенному сайту (запрос формируется из данных, считываемых из файла).
Я просто спавнил по горутине на каждый прокси, забирал данные из канала (в который их читал из файла в отдельной горутине) и результат также отправлял в другой общий канал, откуда он считывался и обрабатывался.
Аналогично решил задачу с помощью джавы (создал 1к потоков и т.д.) и при втором решении было охуевшее потребление всех системных ресурсов.
Это самое последнее.
Кода, как и результатов, естественно, не будет.
>Блять, скорость та же, проца жрет меньше.
Иди матчасть учи, у тебя 95% проца курило просто.
Проценты указывающие в статистике это количество потраченного процессорного времени.
В том и беда синхронного софта в том, что часто проц именно простаивает, когда мог бы быть загружен под 100% А у этого долбаеба наоборот
У нас тут не только 95% простоя проца, да еще и с лексикой проблема
Долго же до тебя доходило.
А ты думал про /го/вно и поголовных дебилов и школодебилов - это шутка такая, да?
(Автор этого поста был предупрежден.)
> А полоумный идиот, которому ты отвечаешь, вообще топит против любого асинхронного кода.
Интересно, он ебанутый или просто такой толстый?
Спавнить ещё процессов, если ты чувствуешь, что простой на автомате слишком большой, не?
Тру стори, я тоже думал что это просто форс, но когда посидел в их чате и там завязался спор, эта масса начала нести такого говно, что я охуел.
Я реально почувствовал, что я в какой-то секте.
Я конечно в душе не ебу кто там кто, но точно был чел из подкаста и чел который на конфы катается.
В общем это не здоровая хуйня если честно (язык реально фильтрует всех маргиналов ИТ, я конечно уверен там есть норм люди, но такого я еще не видел).
Тоже самое, покодил на го 2 дня и понял, что как будто не творишь, а монотонно делаешь одно и тоже, язык может и хорош для каких-то узких задач, типо написал и забыл, но чтобы разрабатывать на постоянной основе что-то, хз, не понимаю именно фанатов языка.
Потом с челом общался (хз, может звездит). Он говорит го у них как показатель плохого скилла в программировании.
Ну типа, если они видят, парень на своем гитхабе упарывается по го - значит он ему нравится и значит он из тусовки необразованных (типа мало знаком с общими представлениями о программировании раз его все устраивает, мол с таким далеко не уехать)
Выгорел за две недели, под конец убеждал себя что в тянусь, но вот помимо ощущения себя печатной машинкой, ощущал какую-то грязь от языка. Обычно, в начале, на прототипах чувствуешь какой-то прилив сил, красоту, а тут как-будто уже легаси код поддерживаешь.
>Интересно, он ебанутый или просто такой толстый?
Походу все вместе.
Смотреть посты ниже твоего выше моего ответа.
Если это не бот, то у человека проблемы. Как будто чокнутая мамаша с вуменс ру.
Пиздец. Пишешь ты такой имплементация "Рафта" на каком-нибудь Го, а потом тебе такая веб/ынтырпрайз макака, которая как вот эта
> специально перемешивает мапу, чтобы умные суслики не думали что мапа хранит последовательность.
не знают, что такое хэш мап, а умеет только высирать АБСТРАКТФАКТОРИБИНЗЭТМЭЙКСОНЛИПРОКСИС, выёбывалась на тебя типа: "Вы нам не подходите, вы нихуя не понимаете в алгоритмах". Вот я бы охуел от жизни.
>Иди матчасть учи, у тебя 95% проца курило просто.
А ты видимо действительно тупой.
Разумеется, 95% (в случае с Го) это отсыл запросов+ожидание ответов сервера, короче, сетевые задержки. Так и должно быть, но в случае с джавой нагрузка была под сто, понимаешь ты, под сто процентов.
То есть приложение на Go, решающее ту же задачу за примерно то же время экономило 95% процессорного времени.
>У джавы целый набор няшеств был, в том числе атомарные типы!, еще до того как го выплюнули
Мало ли что у кого было. Джаве почти 30 лет, еще бы в ней не было того, что есть в языке в три раза моложе.
Это мелочи.
Вот я от их конференции офигел, там девка пол часа извинялась за то, что у нее белая мать, и оправдывалась, мол, хорошо понимает черных.
Какой язык, такое и комьюнити. Особенно оно выделяется на фоне комьюнити тех же ML языков.
https://www.youtube.com/watch?v=WC0l3ex9F2E&t=24s
Просто посмотрите видео
>Не работает компилятор, собрать можно, их заставила мозила. А так да, раст тут хипстерит.
а у вас что, компилятор не на вашем rust написан?
ах да, он же под виндой msvc требует.
это типа такое признание в том, что ваш язык - говно?
даже го компилятор написан на го, правда, там большая часть автоген из кода на С
>девка пол часа извинялась
>26 минут видео
На таких сходках любого языка будут всякую хуйню рассказывать, это норма
>На таких сходках любого языка
Ну если для тебя любой язык ограничивается goвном и руби, то да.
На каких-нибудь icfp или fscd такого ты точно не увидишь.. На конференции крестов -- тоже.
>даже го компилятор написан на го
Который есть прямой транслятор примитивного goвна в ассемблер без каких-либо оптимизаций. Так себе достижение. Альзо раст же написан на расте, нет?
>Который есть прямой транслятор примитивного goвна в ассемблер
Ну го почему-то стабильно рвет по скорости все остальное даже без твоих оптимизаций и пока это так, все кукареки про плохой дизайн языка ни к чему не ведут. Да, дизайн языка говно, но пока что нет ни одного языка с теми же возможностями. Как сделают норм язык с столь же хорошей глубоко интегрированной моделью легкой concurrency, так го никому будет не нужен.
> раст же написан на расте, нет?
Не знаю, честно говоря, но, раз можно сбилдить раст код в бинарник, работающий на XP, но при этом тулчейн под хр не работает, значит ответ - нет. Го, например, позволяет билдить под хр и тулчейн в принципе под хр работает.
>На таких сходках любого языка будут всякую хуйню рассказывать, это норма
На любых IT сходках и конференциях будут и рассказывают всякую хуйню.
Которая с практикой пересекается на пол процента в лучшем случае.
А все просто. Работа в IT это квалификация уровня грузчика, в лучшем случае оператора погрузчика.
Полиморфизм картонных коробок и класс контейнер для ящиков.
Вот собрались грузчики на конференцию, и давай про лямбда выражения рассказывать, как с ними удобно грузы перемещать.
Управлять складом ведь гораздо проще когда у тебя сложная система классов и прочих абстракций(сарказм).
А потом, какой нить амазон говорит -
>не, мы решили что склад это просто, и ненужно ничего придумывать, мы реализуем подход ГО.
И почта России такая FUUUUUUUUUUU
А где-то, скажем в США, придумывают специальную JVM которая спекулятивно оптимизирует сложные абстракции бюрократии, от которых нельзя отказаться, чтобы получить простой склад из сложноуправляемого нагромождения факторей и лямбд.
А потом приходит Трамп и вся эта Хиллари тусовка со спекулятивной оптимизацией FUUUUUUUUUUUUUUU
Ох как я устал от надувания АЙтишниками щек.
Сколько я раз уже слышал
>Кудах кукареку мы же не мартышки, это тебе не ПХП у нас то настоящий кодинг мы программисты
Ты такой - ну ладно, что тут у вас. CTRL+C CTRL+V, не думай делай, бесконечная вермишель дерьмокода, и прочие увлекательные прелести.
Хвала Аллаху, кто-то понял, что ненужно городить огород, и дал простой инструмент для решения простых задач.
Го, это не только оптимизация самого процесса дерьмокодинга, это еще и огромная оптимизация издержек. Можно половину всяких менеджеров сократить, ненужны специалисты по тюнингу жвм и прочим прелестям, ненужен суперкрутой лямбдапрограммист чтобы разобрать лямбдродерьмо написанное другим супердорогим лямбдоспециалистом.
Подозреваю именно эти лишние люди и бугуртят от ГО.
>На таких сходках любого языка будут всякую хуйню рассказывать, это норма
На любых IT сходках и конференциях будут и рассказывают всякую хуйню.
Которая с практикой пересекается на пол процента в лучшем случае.
А все просто. Работа в IT это квалификация уровня грузчика, в лучшем случае оператора погрузчика.
Полиморфизм картонных коробок и класс контейнер для ящиков.
Вот собрались грузчики на конференцию, и давай про лямбда выражения рассказывать, как с ними удобно грузы перемещать.
Управлять складом ведь гораздо проще когда у тебя сложная система классов и прочих абстракций(сарказм).
А потом, какой нить амазон говорит -
>не, мы решили что склад это просто, и ненужно ничего придумывать, мы реализуем подход ГО.
И почта России такая FUUUUUUUUUUU
А где-то, скажем в США, придумывают специальную JVM которая спекулятивно оптимизирует сложные абстракции бюрократии, от которых нельзя отказаться, чтобы получить простой склад из сложноуправляемого нагромождения факторей и лямбд.
А потом приходит Трамп и вся эта Хиллари тусовка со спекулятивной оптимизацией FUUUUUUUUUUUUUUU
Ох как я устал от надувания АЙтишниками щек.
Сколько я раз уже слышал
>Кудах кукареку мы же не мартышки, это тебе не ПХП у нас то настоящий кодинг мы программисты
Ты такой - ну ладно, что тут у вас. CTRL+C CTRL+V, не думай делай, бесконечная вермишель дерьмокода, и прочие увлекательные прелести.
Хвала Аллаху, кто-то понял, что ненужно городить огород, и дал простой инструмент для решения простых задач.
Го, это не только оптимизация самого процесса дерьмокодинга, это еще и огромная оптимизация издержек. Можно половину всяких менеджеров сократить, ненужны специалисты по тюнингу жвм и прочим прелестям, ненужен суперкрутой лямбдапрограммист чтобы разобрать лямбдродерьмо написанное другим супердорогим лямбдоспециалистом.
Подозреваю именно эти лишние люди и бугуртят от ГО.
Да кстати для работы компилятора rust нужны visual studio build tools.
>Не знаю, честно говоря, но, раз можно сбилдить раст код в бинарник, работающий на XP, но при этом тулчейн под хр не работает, значит ответ - нет. Го, например, позволяет билдить под хр и тулчейн в принципе под хр работает.
У раста компилятор на расте написан.
Про кроскомпиляцию никогда не слышал? Необязательно компилятору быть запущенным под целевой системой.
>ощущал какую-то грязь от языка.
Самое неприятное в го -- система типов. Это тихий ужас. Формально она статическая, но как только тебе нужен полиморфизм (а нужен он очень часто) или просто интерфейс и реализация, приходится использовать interface {}, и го скатывается в динамическую типизацию и ооп полиморфизм в духе смоллтока/рубей. Ну и на кой там статическая типизация тогда?
В итоге типизация в го -- это такая немощная калека, он которой толку ноль, но о которую постоянно спотыкаешься.
Лучше уж писать либо на линамическом языке, либо на языке с нормальной строгой типизацией и выразительной системой типов.
Ну и банального тип суммы нет, стремный язык в общем.
>Го, это не только оптимизация самого процесса дерьмокодинга, это еще и огромная оптимизация издержек.
Раст кстати то-же.
Я все слышал.
Есть пруфы, что можно сбилдить компилятор раста под XP?
Если нельзя, значит либо он не на Rust, либо не может таргетировать XP.
>но как только тебе нужен полиморфизм (а нужен он очень часто) или просто интерфейс и реализация
То тебе нужен ООП язык.
Аллах, прошу, покарай неверных пытающихся примять ООП подход в ГО. Не понимаю, как можно быть настолько непрошибаемыми дебилами.
>Ну го почему-то стабильно рвет по скорости все остальное даже без твоих оптимизаций
В фантазиях гоферов? Потому что в реальном мире он где-то на уровне жабки и окамла при полной своей убогости.
Ну и программы написаны руками в лоб будто на сишке, с кучей лупов и if-ов. Стоит написать функцию с функцией аргументом или еще что-то посложнее лупа, и производительность начинает сосать по-страшному. Не знаю, кому нравится писать в 2017 году прикладной софт в стиле а ля си.
>Самое неприятное в го -- система типов. Это тихий ужас. Формально она статическая, но как только тебе нужен полиморфизм (а нужен он очень часто) или просто интерфейс и реализация, приходится использовать interface {}
Го - это не объектный язык. Если тебе там нужен полиморфизм, это у тебя проблемы дизайна. Ты пытаешься симулировать фичу, которой нет в языке и потом ноешь, что из-за этого у тебя какие-то проблемы? Лучше иди нахуй.
>но как только тебе нужен полиморфизм
>То тебе нужен ООП язык.
То есть полиморфизм не нужен? Ты это сейчас серьезно? Теперь я понимаю, почему половина постов в r/programmingcirclejerk посвещена го.
>Ну и программы написаны руками в лоб будто на сишке, с кучей лупов и if-ов. Стоит написать функцию с функцией аргументом или еще что-то посложнее лупа, и производительность начинает сосать по-страшному. Не знаю, кому нравится писать в 2017 году прикладной софт в стиле а ля си.
Никому не нравится, я уже третий раз пишу, если в нормальный язык завезут примитивы конкурентности а-ля го, то го будет не нужен.
Go просто безопаснее и проще в освоении, чем C и надо на нем писать соответственно. Если ты пытаешься реализовать ООП или функции в качестве аргументов, то не надо жаловаться, язык для этого не предназначен вот и все.
>>967293
>То есть полиморфизм не нужен? Ты это сейчас серьезно?
Нужен, не нужен, его там нет.
>Есть пруфы, что можно сбилдить компилятор раста под XP?
>Если нельзя, значит либо он не на Rust, либо не может таргетировать XP.
Ты правда хоть немного знаком с программированием?
Если знаком, то должен понимать, что программы под разные платформы требуют разного кода для работы с разным окружением.
Компилятор внезапно, то-же программа которой может быть что-то нужно, чего нет скажем в XP, но это не значит, что другой программе, скомпилированной хоть этим компилятором, хоть небом, хоть Аллахом, то-же нужно что-то такое, чего нет в XP.
Поколение МИМИМИ это пиздец, не знают как архитектуру компутера, не знают архитектуру Ос, не представляют себе вид ассемблера, а лезут в программирование.
>Го - это не объектный язык. Если тебе там нужен полиморфизм, это у тебя проблемы дизайна.
Haskell, sml -- не объектные языки, полиморфизм к ооп отношения не имеет. Как ты без полиморфизма напишешь функцию, которая будет итерировать по контейнерам разного типа, спискам, массивам и деревьям, например? Или в говне это не нужно?
>Ты пытаешься симулировать фичу, которой нет в языке и потом ноешь, что из-за этого у тебя какие-то проблемы?
Так в этом суть языков и есть, лол. Паттерны разные для того и существуют, чтоб описать то, чего в языке нет.
>>967296
>если в нормальный язык завезут примитивы конкурентности а-ля го, то го будет не нужен.
Да они там есть давно, на самом деле, и гораздо лучше. Lwt, reagents, STM. Горутины как раз полное говно, ибо текут как сучки, что уже стало одной из самых существенных проблем языка. Го популярен по другой причине, это такой компилируемый пхп для отсталых и sjw.
Им и полиморфизм не нужен, и дженерики, шлепай себе лупы, а если нужна полиморфичная функция, нашлепай функция для каждого типа или юзай интерфейс.
>Компилятор внезапно, то-же программа которой может быть что-то нужно, чего нет скажем в XP, но это не значит, что другой программе, скомпилированной хоть этим компилятором, хоть небом, хоть Аллахом, то-же нужно что-то такое, чего нет в XP.
Да я то как раз это знаю, просто rust депендится на кучу внешних тулзов, почитай хотя бы инструкцию по билду Rust из исходников на Windows.
Просто в вашем Rust нет кросс-компиляции, потому что реально нельзя ее выполнить даже для тулчейна самого языка.
В Go есть честная кросс-компиляция и собранное честно работает на всех основных платформах (всякие экзотические не проверял), если только сам разработчик эксплицитно не использует что-то специфичное для платформы (ну там явный вызов winapi).
>Да они там есть давно
В виде библиотек, а не примитивов языка есть много где, согласен.
> Lwt, STM
Не все готовы к функциональщине.
> просто rust депендится на кучу внешних тулзов
> на кучу внешних тулзов
> make, curl, python, git
Вот и выросло поколение.
>>967306
>В виде библиотек, а не примитивов языка есть много где, согласен
А тебе нужен примитив языка? Нахуя? А если тебе этот язык нужно будет под какой-нибудь avr портировать?
Язык должен быть максимально выразительным и абстрактным, остальное должно быть в библиотеке.
Хотя в говне даже дженерик слайсы/массивы -- примитивы языка. Ну что за пиздец.
>Не все готовы к функциональщине.
Да и в императивных futures есть сто лет как.
>Как ты без полиморфизма напишешь функцию, которая будет итерировать по контейнерам разного типа, спискам, массивам и деревьям, например? Или в говне это не нужно?
Ну, для начала бы нужна реальная задача, требующая подобную функцию. Нужно практическое обоснование. И Окам с бритвой.
>полиморфизм к ооп отношения не имеет
Подобное серьезное заявление, требует не менее серьезных доказательств.
>Или в говне это не нужно?
Просто не используй ГО, не интересуйся им, и не заходи в ГО тред.
>Так в этом суть языков и есть, лол. Паттерны разные для того и существуют, чтоб описать то, чего в языке нет.
Есть разные подходы к проектированию и разработке ПО.
Для разных подходов разные патерны.
>если в нормальный язык завезут примитивы конкурентности а-ля го, то го будет не нужен.
Erlang, elixir, scala?
>Просто в вашем Rust
Да я вообще к расту никаким боком, сорян.
>в вашем Rust нет кросс-компиляции, потому что реально нельзя ее выполнить даже для тулчейна самого языка
Насколько я знаю, система сборки таки у раста очень неплохая.
А кросс-компиляция это трики бизнес для "системного" языка, коем раст и является.
>В Go есть честная кросс-компиляция и собранное честно работает на всех основных платформах
Ну это хорошо, ктож спорит.
>Ну, для начала бы нужна реальная задача, требующая подобную функцию. Нужно практическое обоснование.
Зачем нужен итератор? Ну вот есть у тебя есть синтаксическое дерево и список лексем. Ты напишешь два разных итератора для дерева и для списка?
>Подобное серьезное заявление, требует не менее серьезных доказательств.
Ты ебнутый что ли? Я тебе для языка привел в пример с полиморфизмом и без ооп. Иди Пирса наверни, go-неуч.
https://ru.wikipedia.org/wiki/Параметрический_полиморфизм
>Есть разные подходы к проектированию и разработке ПО.
Конечно, например, лапшичный неподдерживаемый пиздец.
>Ну вот есть у тебя есть синтаксическое дерево и список лексем. Ты напишешь два разных итератора для дерева и для списка?
В чем конкретно заключается проблема, что ты хочешь с этим деревом и списком сделать?
>Ты ебнутый что ли? Я тебе для языка привел в пример с полиморфизмом и без ооп.
И из этого следует, что полиморфизм не имеет отношения к ООП?
>go-неуч.
Не пишу на ГО.
>Иди Пирса наверни
Слушай, это просто программирование, ты слишком серьезно относишься к этому.
>с полиморфизмом и без ооп
Ну, когда есть полиморфизм, то это считай уже ООП.
Какие там основные принципы ООП?
>Конечно, например, лапшичный неподдерживаемый пиздец.
Вообще, насколько я знаю, в ГО есть аналог интерфейсов, а следовательно и полиморфизм.
Причем очень простой.
>В чем конкретно заключается проблема, что ты хочешь с этим деревом и списком сделать?
Список нужно собрать в дерево, дерево -- упростить. Для этого достаточно написать полиморфичный reduce и использовать функции добавления в дерево и упрощения. В говне гофер скорей всего напишет безумную лапшу из кучи вложенных лупов.
>И из этого следует, что полиморфизм не имеет отношения к ООП?
Конечно, равно как арифметика не имеет отношения к Си.
>Не пишу на ГО.
Хорошо, просто неуч.
>Ну, когда есть полиморфизм, то это считай уже ООП.
Еще и с логикой проблемы. Если в ООП полиморфизм реализуется через наследование, полиморфизм -- признак ООП. Если человек кормит молоком своих детей, то кормление детей молоком уже считай признак человека. Все млекопитающие -- люди!
>Вообще, насколько я знаю, в ГО есть аналог интерфейсов, а следовательно и полиморфизм.
Да, и мы возвращаемся к первому посту нашего гофера
>но как только тебе нужен полиморфизм (а нужен он очень часто) или просто интерфейс и реализация
>То тебе нужен ООП язык.
>Да, и мы
Вы это кто?
>возвращаемся к первому посту нашего гофера
Я не ваш и я не гофер.
>Еще и с логикой проблемы. Если в ООП полиморфизм реализуется через наследование, полиморфизм -- признак ООП. Если человек кормит молоком своих детей, то кормление детей молоком уже считай признак человека. Все млекопитающие -- люди!
Нет, с логикой проблем нет, логическую ошибку приписываешь мне ты, хотя я ее и не совершаю. Ты говоришь с образами в своей больной головушке.
>В говне гофер скорей всего напишет безумную лапшу из кучи вложенных лупов.
Как скажешь, только не нервничай сильно.
>Хорошо, просто неуч.
А ты очень умный и образованный, сразу видно.
>Erlang, elixir, scala?
>Нормальные языки
Нет, прости, но твоя хипстота - это не нормальные языки.
>Список нужно собрать в дерево, дерево -- упростить. Для этого достаточно написать полиморфичный reduce и использовать функции добавления в дерево и упрощения. В говне гофер скорей всего напишет безумную лапшу из кучи вложенных лупов.
И при этом эта куча по производительности будет оставлять далеко позади "охуенные" языки с полиморфизмом и всем прочим.
>И при этом эта куча по производительности будет оставлять далеко позади "охуенные" языки с полиморфизмом и всем прочим.
Пока оно сосет даже джит компилируемой жабке и скале.
Про отсосный GC у го я даже не буду упоминать.
>but it had 1062 pauses comparing to Java G1 GC which had only 65 pauses. Time spent in GC was 23.6s for Go but only 2.7s in Java.
https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e
>>but it had 1062 pauses comparing to Java G1 GC which had only 65 pauses. Time spent in GC was 23.6s for Go but only 2.7s in Java.
Они только забыли написать, что код на go все равно быстрее даже с паузой в 21 секунду.
Да пиздабол он (хотя ты это и есть), он хотел ляпнуть как крута го с 5%, а на самом деле вышло наоборот и обосрался (ибо как любое дитё думал - что чем ниже процент тем лучше, не понимая как вообще там работает)
Так что нахуй иди, то что ты за день в вики вычитал тебя уже не спасет. Слив с 95% засчитан.
Просто о го нечего рассказывать
Та ща свой го и обосрал. Именно в этом и смысл, что нехуй создавать очередную свистелку-перделку-язык и писать все занова, люди кричать мол пишите на том во что вложено уже сотни миллионов человека часов.
Даже синтаксический сахар не дает выигрышь перед экзо-системой языка, а го это вообще огрызок и шаг назад
Согласен, самое правильное это создавать языки на уже существующей платформе, типо .net или jvm или swift, под который реально пилят тулзы и есть своя экосистема. Голые языки сейчас не нужны. Даже у js экосистема в 1000 раз круче, чем у go.
>Если тебе там нужен полиморфизм, это у тебя проблемы дизайна
Почему никто не собирает эти чудесны цитаты?
Можно же устроить ежегодное го-шоу-уродов!
>люди кричать
Хватит уже о себе в множественном лице говорить.
Шизофреник чертов.
>Та ща свой го и обосрал
Мысль дурака дискретна. Увы, но объяснять что либо, кому-то вроде тебя, бессмысленно.
>Даже синтаксический сахар не дает выигрышь перед экзо-системой языка, а го это вообще огрызок и шаг назад
Хз что там за экосистемы такие.
Truth is, переиспользование кода происходит на порядок в меньших масштабах нежели это малюют в учебниках.
Стандартная бибилотека - да. А все что со стороны - не так уж часто.
А когда таки происходит, то таит в себе огромную кучу подводных камней. Ну например вот в треде про раста заливают сипипишники, что мол сипипи это миллиарды строк отлаженного и проверенного десятелетиями кода. На что можно сказать только OpenSSL. Оказывается, время совсем необязательно ведет к улучшению кодовой базы. То там то сям можно слышать о том, что какой-то проект переписали с нуля.
А изобретение велосипедов в повседневной работе - обыденная практика.
Часто проще и дешевле изобрести свой, чем пытаться разобраться в чужом, не говоря уже о всяких лицензионных нюансах.
Я например работал в одной фирме, занимался статистическим анализом клинических исследований.
У нас был свой секретный набор функций и макросов, который помогал много чего вычислять, а заодно делал заебись и интегрировал программы с системой управления проектом.
Вот эти вот наши велосипеды, вообще играли роль конкретного преимущества.
>Однако наступает момент, когда больше не имеет смысла наращивать возможности железа для сокращения пауз. Если паузы на сервере снизятся с 10 до 1 мс, заметят ли это пользователи? А если для такого снижения вам потребуется увеличить аппаратные ресурсы вдвое?
>Go оптимизирует длительность пауз за счёт пропускной способности, причём настолько, что кажется, будто он хочет на порядок замедлить работу вашей программы, лишь бы сделать паузы чуточку меньше.
> учитывая медленность сборки мусора в куче с помощью пометки и очистки, вам нужно много места в запасе, чтобы не столкнуться со сбоем режима совместного выполнения. По умолчанию в Go предусмотрена стопроцентная избыточность… то есть он удваивает объём памяти, необходимой вашей программе.
На, кушай наивный суслик:
https://habrahabr.ru/company/mailru/blog/318504/
Ты это уже приносил.
Статейка конечтно крута.
Крутой погромист с высоты проффесиональго полета разбивает в пух и прах.... рекламные лозунги.
>статистическим анализом клинических исследований.
Похоже я тебя знаю ну или такого как ты -
дебил даже по мерка /зк.
Разжевывать надо?
Го имеет такую стратегию сборки, что он ценой твоих ресурсов и производительности готов достигать - маркетинговые булшиты.
Конечно на числодробительных тестах ты этого и не увидишь, а когда будешь сосать в продакшене - будешь думать что так и положенно.
Новое поколение говноедов.
>Даже синтаксический сахар не дает выигрышь перед экзо-системой языка
Ошибочное мнение. Так бы все писали на си или ассемблере, и не было ни плюсов, ни джавы, ни го
Просто go дал возможность людям, которым не нравится программирование и которые бы в других языках соснули, писать код, а отсюда и все остальное вытекает, непринятие нормальных языков и паттернов, убежденность в собственной исключительности и тд
>этот школоиксперд
Илюша такая илюша.
Даже дебилом назвать как-то неправильно по отношению к незаслуженно оскорбленным дебилам
>Похоже я тебя знаю ну или такого как ты -
>дебил даже по мерка /зк.
Оооо, кокой ты крутой, аноним в интернете.
Впрочем, не думаю все-же, что мы знакомы.
Более того, в мапу добавили рандомайзер, чтобы бестолочи не подумали что мапа хранится как упорядоченный список.
Производительность в го? С 1.6 вьебали просадку на 20% (по неофициальным данным в два раза больше), потом вьебали на 5% в 1.8 (по голанг-шоу кто-то говорил о 20%).
Купил еще одну ноду, обновил го.
Репорт.
ГО КРУУУУТАААААААААААААА!!!!!!!!!!!!11111
Репорт! Ща я вас всех зарепорчу!!
Зачем ты все это пишешь?
Оскорбляешь незнакомых людей, тратишь время на поливание говном какого-то ЯП на анонимном форуме.
Ты безработный?
Нет времени объяснять, репорти
>Почему никто не собирает эти чудесны цитаты?
Еще как собирают.
https://www.reddit.com/r/gobashing/
https://www.reddit.com/r/programmingcirclejerk/
Теперь я спокоен за будущее этого мира
> в мапу добавили рандомайзер
Пруфы в коде, бестолочь. Или ты не знаешь как работает hashmap?
Не то, чтобы я хотел бы поторолить, но как тебе там живётся с разным порядком аргументов в функциях высшего порядка, а ещё array_filter, но in_array? Да и обычно пыхеры, насколько я спрашивал у знакомых, перекатываются как раз на Го, почему-то. Честно говоря, науке неизвестна причина.
Вы видите копию треда, сохраненную 24 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.