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.

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

это бремя на себя уже thesis принял

Да я всегда рядом, видно же, что без меня не справляетесь.
Ни софта, ни поржать. Толку от вас.

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

Тяжело объяснить js-макаке, что вместо нажатия мышкой breakpoint устанавливается путём изменения исходных текстовэ

А програмировает она тоже мышкой, кстати? Или…

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

Да не, на самом деле вы все молодцы и т.д.
У меня весь день башка болит, развлекаюсь как могу, чтобы отвлечься(

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

Стопочку беленькой под сало с чесноком и баиньки.

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

Да он непробиваемый какой-то, у него «скомпилированные файлы» как в дельфях какие-то, у него отладчика пошагового нет в SBCL, хотя ему раз 5 уже рассказали что он есть.

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

Спасибо, учту. Лучше бы на CL, хотя в жабе тоже есть свои плюсы.

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

Да ты хоть 50 раз скажи неправду, она от этого правдой не станет. Ты не мне объясни, а js-макаке, что в SBCL есть пошаговый отладчик, обучи его пользоваться и пусть он вникнет в величие CL.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от ugoday

взяли да рассказали, как свой DSL придумали и внедрили и чего из того вышло.

Зачем, если вы и так все знаете наперед?

ваши DSLи на C++ и Ruby путали

Но под красивыми слайдами покоится то самое чувство «мы не хотим это говно править, мы хотим это говно переписать (и ещё попробовать поиграться с новой кульной фичей Х в языке Y)».

ЗЫ. Клоунада здесь с самого первого сообщения.

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

Ну, естественно, было. И обоснование, и графики с презентациями, и совещания на разных уровнях, всё было. Как иначе? Но под красивыми слайдами покоится то самое чувство «мы не хотим это говно править, мы хотим это говно переписать (и ещё попробовать поиграться с новой кульной фичей Х в языке Y)».

Чёрт. Я видимо из тех, кому зачастую интересно именно это говно исправить.

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

Протёр, но у меня это не открывается. Бесконечная загрузка. Это твой прод на CL или на PyCharm?

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

Это че такое?

This site can’t be reachedThe webpage at https://files.catbox.moe/h8pyag.png might be temporarily down or it may have moved permanently to a new web address.
ERR_HTTP2_PROTOCOL_ERROR
her_s_gory
()
Ответ на: комментарий от wandrien

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

saibogo ★★★★
()

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

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

Зачем, если вы и так все знаете наперед?

А вдруг вы меня удивить сможете. Бывает же и такое.

ваши DSLи на C++ и Ruby путали

А как прикажете вас понимать? У вас было два тезиса:

  1. Энтерпрайзный код не путает.

  2. Вы — автор DSL’ей.

Я попытался скомбинировать их и сделать вывод.

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

А вдруг вы меня удивить сможете. Бывает же и такое.

Мне это зачем?

А как прикажете вас понимать?

Например: каким бы кондовым не был «enterprise like» код на Java, он несет меньше сюрпризов, чем eDSL.

Я попытался скомбинировать их и сделать вывод.

У вас, ожидаемо, не получилось.

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

Все что угодно - это плохой перл. Кроме собственно перла.

Потому, что хороший перл - это мертвый перл?

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

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

Golang - это cloud native bash с многопотоком для вкатунов из техникумов, ещё и с омерзительным синтаксисом, как бы пародия на Си подобный язык, намекающая, как делать не надо.

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от ugoday

У нас есть такие приборы, такие приборы! Но мы вам о них не расскажем.

Я правильно понимаю, что какой-то аноним, зассавший засветить свое реальное имя в профиле, пытается взять меня на слабо?

В отличии У нас есть такие приборы, такие приборы! Но мы вам о них не расскажем.от вас, я здесь под своим настоящим именем, там же, в профиле, есть актуальная ссылка на блог. Если есть время и желание, можете поискать там по ключевым словам «ruby dsl».

Если нет, то и нет. ЧСВ вы свое уже продемонстрировали.

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

И тут Остапа понесло, он почувствовал прилив новых сил и шахматных идей

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

Тяжело объяснить js-макаке, что вместо нажатия мышкой breakpoint устанавливается путём изменения исходных текстов

не следил, о чем вообще речь, но js-макаки вполне могут написать debugger в исходниках, и chrome посчитает это брейкпоинтом.

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

какой-то аноним, зассавший засветить свое реальное имя в профиле, пытается взять меня на слабо?

Какая разительная смена вокобуляра. Вжух и умудрённый опытом дядечка, снисходительно объясняющий щеглам как оно в жизни всё устроено, превратился в агрессивного малолетнего гопника. Прелесть просто.

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

Вы, видимо, за последние лет 15 в первый раз со мной пересеклись. Местных анонимных надмозгов я всегда ссыклом называл.

И если вы думаете, что вы чем-то отличаетесь от оных в лучшую сторону, то зря.

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

Думал, с приличным человеком говорю, а тут такой афронт.

Та же фигня.

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

Тяжело объяснить js-макаке, что вместо нажатия мышкой breakpoint устанавливается путём изменения исходных текстов.

А как «js-макакам» объясняют async/await?

tp_for_my_bunghole
()
Ответ на: комментарий от ugoday

49 страница треда, Евгений крепился, как мог! Я свидетель! Но есть пределы всему на свете, это я Вам как ссыкло ссыклу говорю :D

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

Вы смеётесь, а мне обидно. Я заподозрил, что Евгений делал DSL и как-то жутко облажался, что и определило его текущую позицию. А сознаться в содеянном духу не хватает. Но вдруг я неправ? Вдруг я огульно охаял хорошего инженера? Меня теперь совесть мучить будет.

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

А как «js-макакам» объясняют async/await?

Дают ссылочку на туториал, откуда макака копипастит строки в проект и далее везде.

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

Вы смеётесь, а мне обидно.

Я уже либо недостаточно юн, либо недостаточно верю в людей, чтобы обижаться на буковки на экране. Даже если буковки убеждены, что они больше, чем буковки, для абсолютно посторонних людей из-за того, что свои данные выложили открыто. И Вам не советую. Тем более у всех могут быть плохие дни.

Да и

Вдруг я огульно охаял хорошего инженера?

этот хороший инженер себя в обиду не даст :).

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

Термин «макака» в данном случае содержит сарказм не в адрес js-разработчиков, а в адрес лисперов.

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

как «js-макакам» объясняют async/await?

Это врождённое макачье знание, ну типа как строить плотины у бобров. А дебажить без мышки — нет, не могут. У каждого свои недостатки.

Это я вам как настоящая котомакака говорю.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)

Symbolic AI уже обсуждали нет? Есть ли будущее в этой сфере у Lisp?

Вот про Deep Learning из каждого утюга заливают. Здесь https://www.youtube.com/watch?v=36DNmAlB8Sc (3мин.) профессор высказалась в пользу SAI, что меньше тренировочных данных надо. В принципе в части большой тренировки для DL моделей согласуется с моим опытом.

necromant ★★
()

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

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

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

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