LINUX.ORG.RU

Почему Go это плохо, и он вам, на самом деле, не нужен.

 ,


7

15

Давайте я вам поясню про язык Go, откуда у него растут корни, и почему его на самом деле не стоит использовать. То что напишу ниже, это взято как из инсайдерской информации, так и из материалов, доступных в интернетах.

Дело в том, что Go это, на самом деле, «решение» внутренних гугловских проблем. Но отнюдь не проблем горизонтального масштабирования серверного ПО, как многие почему-то думают. Он приспособлен специально для использования в гугле вот в каком контексте.

Гугл нанимает большое количество тупых студентов, только-только после вуза или ПТУ, и заставлять их писать хоть какой-то простой код. И делать минимум ошибок, при этом. Для этого Go сделан таким тупым и упрощенным. И выкинут в паблик он только для того, чтобы вероятность, что у такого студента, только пришедшего в гугл, было хоть какое-то знание Go, была выше нуля.

Но дело вот в чем. В гугле, на самом деле, над каждой командой гошников стоит тимлид, или целая группа, который/которая вот этим взаимозаменяемым роботам-гошникам расписывает всю систему, чуть ли не вплоть до состояния конечного автомата, до if-ов, и показывает куда и что писать. Поэтому же Go на корню режет всю креативность, поэтому там нет практически никаких средств абстракции, и поэтому он не дает делать вообще ничего сложного. Дабы программисты на нем вообще ничего лишнего не думали, а кодировали все чуть ли не побуквенно по указаниям умных людей.

Из гугла же идет маразматическая система управления зависимостями Го, которая заточена на монорепы.

Тут возникает вопрос - а почему этому тимлиду не дать в руки кодогенератор, вместо всей этой accidental complexity, возникающей из-за огромного количества строк кода, и из-за затрат на коммуникацию?

А тут надо понимать, как внутри устроены огромные корпорации типа гугла.

Их давно пожрал рак бюрократии. Там у менеджерских и околоменеджерских должностей один из главных критериев промоушнов, или вообще даже ассесмента(усидения на должности), это количество людей у тебя в подчинении. И количество говнокода в вакууме которая твоя команда написала. И вот все эти люди, сидящие на более-менее средне-высоких должностях, постоянно бодаются за эти промоушны и ассесменты. Это их главная и единственная цель. Поэтому, ни о какой эффективности тут речи не идет вообще от слова совсем. Тут главное - корпоративные игры, количество голов в твоем стаде и количество и размер высеров, которые это твое стадо произвело(причем буквально, важны SLOC).

Естественно, это все отражается на качестве продуктов, и это видно как по полному прекращению инноваций в гугле, так и по постоянно мелькающим и закрывающимся высерам этой компании - hangouts, duo, google plus, google wave, и прочее и прочее, можете еще вспомнить много чего.

Если у вас в компании такой «модели управления» нет, и более того, у вас нет возможности нанимать крайне высококвалифицированных людей за крайне много денег, единственное назначение которых будет расписывать стаду гошников(которые тоже стоят немало денег просто из-за количества) систему до уровня конечного автомата, то вам этот язык и вся его экосистема нахрен не сдалась.

Никакой мифической простоты в отладке и в понимании кода Go не приносит. Да и сложность программных систем растет совершенно не из-за понятности/непонятности какой-то отдельной взятой строчки кода или функции. Потому, что, во-первых, понятность это понятие субъективное, во-вторых потому, что, отдельно взятая фунцкия на 5 строк понятна любому опытному программисту, будь она написана хоть на Rust, хоть на Common Lisp.

Сложность программных систем возникает из-за их размера. И Go эту проблему значительно ухудшает. Человек не может удерживать в голове слишком много вещей, даже если каждая отдельная вещь - очень простая. Количество RAM в голове ограничено.

В случае если вы не хотите выкидывать кучу денег просто так, и скорее предпочли бы нанять немного, но более-менее опытных программистов, Go будет только вреден, потому что все вменяемые люди от него, на самом деле, плюются. Он реально отталкивает опытных людей, которые способны понять сложные требования и написать, и поддерживать, более-менее сложные системы уровнем хотя бы нескольких сервисов плюс БД и MQ.

★★
Ответ на: комментарий от Obezyan

This is a major/blocking issue that the library author needs help with.

На самом деле, это работает если отрубить обработку исключений FPU в лиспе. Это проблема не лиспа, и не дотнета, а сигналов юникс(они говно кривое из 60х, такое же как и вообще весь линукс, вообще юниксы, и всякие там поделиям типа golang, и до уровня даже технологий MS вся эта срань не доросла, куда там до лиспов - лиспы по сравнению с этим это просто будущее с летающими машинами и космолетами и вот этим всем)

Интероп с .Net можно прикрутить к любому современному языку тк CLR идёт в комплекте чуть ли не с 1998 года.

Всё, аноним посыпался и поплыл. Дурачок, .NET Framework уже давно deprecated, и в новом дотнете API хостинга и интероперабельности совершенно другое, во-первых. А во-вторых, даже в старом .NET у тебя был бы конфликт рантаймов с дотнетом, если ты его не подключаешь из тупой сишечки разве что, для вывода хелловорлдов. Особенно если рантаймы написаны через жопу и не учитывают виндовую специфику типа SEH(а то что у Go рантайм написан через жопу и для него винда это second class citizen все прекрасно знают).

https://github.com/AtsushiSuzuki/node-clr

Архивированное говно для .NET Framework непонятного вида работоспособности причем.

https://github.com/sebastienros/jint

Это интерпретатор для .NET. Я еще раз сказал - interop. Чтобы из ноды, допустим, которая на V8, дергать библиотеку на .NET 7, допустим WPF, как у меня в примере

https://github.com/Lovesan/bike/blob/master/examples/wpf.lisp

https://pkg.go.dev/github.com/matiasinsaurralde/go-dotnet

Обосраться, они завернули три или сколько там, базовых сишных функции из coreclr.dll и выдают типа нате пользуйтесь.

Я тебе секрет открою -

  1. Этим пользоваться просто так из коробки нельзя (у этих функций куча ограничений), разве что кроме вывода hello world. Ты дотнет объектами оперировать этим не сможешь. Это не interop, а тупая обертка для coreclr.dll. Эти функции предназначены для построения интеропа с дотнетом. Чего, конечно, гошники не делают(потому что умственно отсталые)

  2. Обертка скорее всего нерабочая, блеать, потому что интероперабельность двух рантаймов в области GC и прочего она ВООБЩЕ не учитывает.

https://github.com/ropnop/go-clr

Говно заброшенное, которое оборачивает Hosting API, т.е. судя по всему .NET Framework(который deprecated и windows-only)

Скорее всего опять же нерабочее по причине пункта (2) из комментария к предыдущей библиотеке.

Итого, чтобы написать интероп Go<=>.Net достаточно одной строки:

Это хорошо, что ты под анонимом, потому что так обосраться и показать какой ты дурачок, это надо уметь конечно.

Вывод - ты показал, что гошники а) тупые б) их проекты это наколеночное кривое говно, причем недоделанное и заброшенное. в) они способны только на тупой хайп.

Спасибо, что доказал собственно то, что написано в изначальном треде.

lovesan ★★
() автор топика
Ответ на: комментарий от Mobutu_Sese_Seko

Прошу прощения, отвечаю с телефона, часть букв сама в верхний регистр лезет, особенно если после точки. Пытаюсь быть быдлом как умею, не судите строго. И вообще, позвольте мне самому выбирать стиль общения и схему лечения пациента.

Obezyan
()
Ответ на: комментарий от crutch_master

Мб он язык-то и хороший, просто незаслуженно забыт. Надо обсуждать язык, а то ничего не понятно.

Так ведь для кого-то и Modula-2 с Oberon-ом были отличными языками, и отлично подходили для чьих-то задач.

Но их время ушло. Хотя кто-то до сих пор с успехом Modula-2 пользуется. Однако, вряд ли у Modula-2 есть шансы вернуться в мейнстрим сейчас или в ближайшем будущем.

Аналогично и с CL.

Вы бы лучше спросили у ТС-а почему он работу на .NET ищет, а не на CL :)

eao197 ★★★★★
()
Ответ на: комментарий от lovesan

я ИП

Бездельник, кароч.

Мне как раз вот это всё все планы и обломало

Ну разумеется тебе режым в штаны навалил. Как же иначе.

alex1101
()
Ответ на: комментарий от eao197

Но их время ушло.

Это время крестов вон ушло, это говно из 60х с ООП из 70х используется только потому, что на нем в свое время наворотили кучу говнокода для слабых машин в 90х.

До CL время по сути еще не дошло даже, весь мейнстрим это говно из 70х до сих пор.

lovesan ★★
() автор топика
Ответ на: комментарий от alysnix

ни на каких крестах рантаймы лиспов не пишутся, кроме редких случаев когда нужна интероперабельность именно с крестами.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Это время крестов вон ушло

Да вы-то поди, и нормального кода на С++ не видели никогда.

До CL время по сути еще не дошло даже, весь мейнстрим это говно из 70х до сих пор.

Главное верить. А до тех пор, пока время CL не пришло, зарабатывать на .NET надрачивая на CL и расчесывая собственное ЧСВ до вселенских масштабов.

eao197 ★★★★★
()
Ответ на: комментарий от lovesan

ни на каких крестах рантаймы лиспов не пишутся

а на чем пишутся? так чтобы рантайм сидел на железе, а не дотнете каком-нить.

alysnix ★★★
()
Ответ на: комментарий от alex1101

Я к тому, что lovesan ИП не из-за желания делать бизнес.

Это его бизнесмены ИП сделали, чтобы собственный бизнес оптимизировать.

Так что рассуждения lovesan-а о том, что он что-то понимает в бизнесе т.к. он ИП, можно оправлять в /dev/null еще быстрее, чем его мнение о C++ :)

eao197 ★★★★★
()
Ответ на: комментарий от alysnix

когда на «железе» - пишутся на самих же лиспах

https://github.com/froggey/Mezzano

когда на современных ОС, которые являются рантаймами языка Си - тогда на языке Си, в основном. Но это не потому что Си тут зачем-то особенно нужен и без него никак, а просто чтобы не запоминать номера сисколлов для каждой отдельной ОС, и так далее.

https://github.com/sbcl/sbcl/tree/master/src/runtime

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Жаль, что Вы не прочитали дальше первой строчки в репе и не увидели что этот интерпретатор работает как раз через interop .Net CLR. Спишем Ваше невежество на желание поскорее ответить.

Про заброшенность и нерабочесть другой репы Вы судите скорее всего потому что репа переведена в архив в этом году? «Ок». Что тут ещё сказать?

Про претензии к винде вообще не понял, учитывая на чем Ваша версия работает. На Макоси наверное?

Я не буду ещё раз тыкать носом в то что эти решения рабочие (в отличии от Вашего), я лишь хочу сказать что .Net CLR делает всю магию интеропа что на JS, что на GO что на CL.

В конце прекрасный вывод, учитывая что я не гошник. Моё imho по GO - это долгожданный инструмент для стыка задач программиста и девопса. Свою нишу он покрывает, не более того.

Опять вы поторопились с выводами и портки обделали, да что ж такое-то.

Obezyan
()
Ответ на: комментарий от eao197

Это его бизнесмены ИП сделали, чтобы собственный бизнес оптимизировать.

Лол. Изначально делал чтобы на зарубеж работать. Ты как фрилансер по белому только по ИП можешь получать, т.к. валютный контроль и вот это всё.

И с «оптимизаторами» бизнесов из РФ кстати не работал ни разу.

И чем ИП это не бизнес? Или бизнес это только когда у тебя офис в бизнес-центре и туда все с галстуками ходят, лол? Ну твоя зашоренность, впрочем, понятна, ты вон вообще на C++ пишешь.

lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

И чем ИП это не бизнес?

Ну, формально это тоже предпринимательская деятельность. Примерно как работа таксистом. С рассказами типа «да я бы так-то в Формуле-1 всех порвал, да клятые санкции не дали развернуться!»

alex1101
()
Ответ на: комментарий от crutch_master

Доживёт. Пенсионное дело вообще одно из самых устойчивых штук мира: переживает и смены общественно-экономических формаций, и переезды на другие континенты, и чёрта в ступе.

Mobutu_Sese_Seko
()
Ответ на: комментарий от Obezyan

Жаль, что Вы не прочитали дальше первой строчки в репе и не увидели что этот интерпретатор работает как раз через interop .Net CLR. Спишем Ваше невежество на желание поскорее ответить.

Какой интероп, дурень? Там реализован полноценный интерпретатор JS, вот и всё.

https://github.com/sebastienros/jint

Я не буду ещё раз тыкать носом в то что эти решения рабочие (в отличии от Вашего), я лишь хочу сказать что .Net CLR делает всю магию интеропа что на JS, что на GO что на CL.

Мое как раз рабочее, а вот то что ты скинул, это говно наколеночное, или вообще поделия, не относящиеся к теме.

Ты вообще не в теме и не понимаешь о чем пишешь, короче. Не пиши про это больше, а то еще больше опозоришься.

GO - это долгожданный инструмент для стыка задач программиста и девопса.

Golang это полноценный инструмент для ИБД, затягивания сроков и распиливания бюджетов. Ну и еще в какой-то степени, это может быть, такой инструмент welfare для умственно отсталых(Чортовы леваки!)

lovesan ★★
() автор топика
Ответ на: комментарий от eao197

По защищаю немного Лавсана, а то ему и так нелегко.

Я к слову тоже ИП, а как иначе прикажете работать с иностранными конторами выставляя им инвойсы в валюте? Как проходить валютный контроль в Банке без геморроя?

Это до 14го года пейпалы с пайонирами были актуальны. С 20го года примерно нет ничего лучше ИП на УСН 6% и с патентом. Для специалиста с опытом самое то.

Obezyan
()
Ответ на: комментарий от lovesan

Сэр, вы серите не снимая штанов.

var engine = new Engine(cfg => cfg.AllowClr());
engine.Execute(@"
    var ListOfString = System.Collections.Generic.List(System.String);
    var list = new ListOfString();    list.Add('Лавсанчик');
list.Add('посмотрите внимательно на первую строку кода.');
list.Add('ой вей');
");

Вы не первый лиспер пытающийся отползти от общения со мной просьбами не писать ему. Понимаю, гештальту больно, но взрослеть-то надо уже.

Obezyan
()
Ответ на: комментарий от crutch_master

Так в том-то все и дело, что полезного кода от этих «разрабов не среднего ума» особо никто и не видел. За исключением пары (и то весьма спорных) примеров, используемых только этими же самыми фанбоями, и то в основном для ответа на вопрос «а где код?» в интернет-холиварах. И то разработанных не благодаря неким якобы повышенным потребительским свойствам их маргинальщины, а вопреки.

Minoru ★★★
()
Ответ на: комментарий от Minoru

Код на CL чтоли никто не видел? Или че?

Grammarly вон, поди каждый второй использует - так он на CL.

lovesan ★★
() автор топика
Ответ на: комментарий от crutch_master

За CL никто не платит, очевидно.

А почему?

Только вот не нужно уходить в тезис о 95% идиотов. Люди, как уж они устроены, всегда пробуют новое. Да, не все, то есть критическая масса тех, кто пробует, а затем за ними следуют остальные. Но только если есть за чем следовать.

Си, C++ и упомянутый ТС-ом Go стали мейнстримом потому, что при всех своих проблемах они решали стоящие перед людьми проблемы. И решали, в целом, чуть получше альтернатив.

eao197 ★★★★★
()
Ответ на: комментарий от Obezyan

Я к слову тоже ИП, а как иначе прикажете работать с иностранными конторами выставляя им инвойсы в валюте?

Понятия не имею, я не ИП.

У нас в РБ в свое время был бум перевода сотрудников на ИП с целью оптимизации размера ФОТа. И, насколько понимаю, такая же картина была и в РФ.

eao197 ★★★★★
()
Ответ на: комментарий от Minoru

Это эксперементальная херня. Что ты хочешь от них полезного? Чтобы они ракеты в космос запускали? На экспериментальном языке?
Делают всякие дефолтные вещи, которые писали до них сотни раз на других язычках (как сейчас на расте). Хотят смотрят, как оно работает, что лучше/хуже, сколько стоит внести изменения, насколько тяжело это сопровождать, искать баги, насколько вообще легко сделать фатальную ошибку и не заметить её, насколько просто вкатиться в проект челу с улицы. Потом какие-то удачные фичи так или иначе перетекают в другие языки. Так прогресс и делается, а не «писать надо на правильном промышленном языке, на котором все пишут и не выделываться. То есть, писать надо на фортране, шпана!» /

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Каким боком CL экспериментальный?

lovesan ★★
() автор топика
Ответ на: комментарий от crutch_master

Тогда может лучше специализированную литературу почитать, чем срачи на LOR-е?

eao197 ★★★★★
()
Ответ на: комментарий от lovesan

У них бизнес по продаже жопочасов. И, смею вас уверить, когда вы попробуете продать не свои жопочасы, вы поймете, в чем тут бизнес.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Си, C++ и упомянутый ТС-ом Go стали мейнстримом потому, что при всех своих проблемах они решали стоящие перед людьми проблемы. И решали, в целом, чуть получше альтернатив.

Опять эти сказки, на которые просто уже даже устаешь отвечать.

Нет, товарищ аутист, то что C, C++ и Go популярны - не говорит об их полезности, технических характеристиках, удобстве и отсутствии/присутствии альтернатив - ровно нихера вообще.

lovesan ★★
() автор топика

Админил я как-то один сервер на котором программер написал сервис на go, который по http отдавал определенную логику. Так вот на каком-то этапе разработки, прога в проде начала без причины жрать проц и память. В тестовой среде проблему никак не удавалось воспроизвести. Решалось только перезапуском. Я сказали программеру чтоб отдебажил и пофиксил. Он поковырялся долгое время но так и не смог найти причину. А проблема была где-то в GC. Так вот эта приложуха второй год перезагружается скриптом в момент когда начинает глючить. Так и работает, на костылях и подпорках.

Многие хейтят Си. Но в отличие от go, при грамотном написании софта, есть предсказуемость и полный контроль над ресурсами. Так что иногда проще отдебажить свой код, а не дебажить GC определенного ЯП.

iron ★★★★★
()
Ответ на: комментарий от eao197

Только вот не нужно уходить в тезис о 95% идиотов.

Но, это так и есть.

Люди, как уж они устроены, всегда пробуют новое.

Люди пытаются думать как можно меньше и делать так как все делают. Те, у кого шило в жопе их да, меньшинство.

Но только если есть за чем следовать.

Ну да, чтобы оно удовлетворяло требования этих самых 95%. А для этого не надо ничего особенного, извратного и вообще лучше возможностей поменьше, чтобы результат был предсказуем.

crutch_master ★★★★★
()
Ответ на: комментарий от eao197

Так что такое бизнес? Не обязательно делать продукт - разобрались. Не обязательно ходить в офис в галстуке - разобрались.

Дальше что?

lovesan ★★
() автор топика
Ответ на: комментарий от crutch_master

сам по себе CL простой, там только функций говорят целый шкаф, хуже чем в с++. и сборка мусора. что на нем писать - непонятно.

это мнение не обязательно совпадает с мнением редакции.

alysnix ★★★
()
Ответ на: комментарий от WSL_user

Полностью с Вами согласен, поэтому я уделил внимание именно подключению и загрузке в примере. Тот самый new для object, и точка.

Obezyan
()
Ответ на: комментарий от lovesan

Дальше что?

дальше смузи и пальмы над бассейном

alysnix ★★★
()
Ответ на: комментарий от lovesan

Илитарный вы наш, если хотите, чтобы вас хотя бы в качестве клоуна воспринимали, потрудитесь отвечать на задаваемые вам вопросы. Например, где вы могли видеть C++, если вы .NET программист.

А то ваш бредогенератор про отсутствие чего-то в C++ или Go уже набил оскомину.

eao197 ★★★★★
()
Ограничение на отправку комментариев: