LINUX.ORG.RU

Что происходит с популярностью Go?

 ,


1

4

Примерно с лета прошлого года популярность языка программирования Go неуклонно падает. По крайней мере если верить индексам TIOBE и PYPL. В начале прошлого года Go входил в первую десятку самых популярных языков программирования, но сейчас он уже во второй десятке - ближе к её нижней границе. Если TIOBE и PYPL не отражают действительность, то какие другие индексы отражают её лучше? Хотя на https://langpop.com/ Go всё ещё в первой десятке. Что вообще происходит с Go и каковы ваши прогнозы на ближайшие пару лет?

Ну и чтобы два раза не вставать, дополнительный вопрос. Один из конкурентов Go - это JavaScript/TypeScript на платформе node.js. Когда популярность Go росла, значительный процент новых программистов на Go был представлен теми, кто переходил на него с JS/TS. Однако если сейчас посмотреть на объявления о работе (живу не в России), то там какое-то засилие именно JS/TS, причём в основном это молодые компании и стартапы. Можно ли это объяснить банальной экономией на найме, когда одни и те же люди делают и бэкэнд и фронтэнд? Иначе я никак не могу понять тягу к языку, в котором нет нормальной параллельности и вообще куча костылей и легаси.

Update: большой брат подслушал и порекомендовал в ютубе: www.youtube.com/shorts/Vh97uPhmhqI



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

Самому смысла нет, согласен, да и ваниль под пистон говно редкое, её явно портировал крестоед который питон в глаза не видел

Я потому и написал что всякую мелочь уже начали на го переводить. Крупняк кмк лучше на жабу, но это вкусовщина

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

Чё там у вэбщиков?

У вебщиков тут сейчас 90% всего современного кода, создаваемого в год. Замечу - очень удобно создаваемого, с любыми возможностями - бэкенд и фронтэнд. Больше 2,5 лямов готовых модулей.

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

то ли Rust понятнее за счёт мощной типизации, то ли нейронки на нём чище пишут.

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

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

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

Для Rust есть веб-фреймворки … На C популярных веб фреймворков нет …

Это доказывает, что Rust лучше чем С. Но спрашивалось-то чем Rust лучше Go.

Axum умеет ловить панику и ронять один обработчик вместо всего приложения

Решается архитектурой: несколько обработчиков позади балансировщика.

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

На вопрос «А долго ждать как на расте что-то полезное напишут?» заскулил, начал плеваться, ругаться матом, полез в драку, в общем, ушёл от ответа.

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

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

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

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

тут скорее проблемы плюсов, которые текут всегда и везде - это их норма

V8 написано на C++. В Wikipedia указано что Node.js на C++. Интересно, а что ещё написано на C++.

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

На Расте ты будешь постоянно воевать с borrow checking и тяжёлым синтаксисом. Порог входа в Rust гораздо выше и тебе будет гораздо сложнее найти адекватных разработчиков на нём.

Не будешь. Все органично просто работает. Если ты воюешь с боровом - ты делаешь что-то не так.

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

А это все накладывается. Да, js тоже течет люто как раз по этой же причине. Но первична тут сишка.

Ты пробовал писать на раст? Нулевые утечки в 99.9% случаев. Софтина может неделями и месяцами висеть с одним и тем же потреблением памяти до байта.

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

Я думаю, этого достаточно, чтобы квалифицировать тебя как пустозвона и балабола.

Мордой не вышел «квалифицировать» других людей. Себя приведи в порядок или детей своих «квалифицируй».

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

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

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

Конечно. CSP значительно защищает от этих ошибок, от случайных точно. Необходимость абсолютной защита от data races необоснована.

В программировании вообще сложно обосновать любой абсолют, ибо всегда всё упирается в компромиссы. Защищать абсолют вообще легко: ты заранее знаешь, что внутренняя непротиворечивость неприкосновенна. Именно эту ошибку допускают, например, те, кто предлагают заменить файловую систему на PostgreSQL. Однако, эта позиция редко полезна в реальном мире.

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

Конечно. CSP значительно защищает от этих ошибок, от случайных точно.

Т.е. через CSP я могу в другую гороутину отдать указатель на какой-то контейнер и спокойно модифицировать этот контейнер из двух гороутин. Со всеми последующими прелестями.

Я правильно вас понял?

Необходимость абсолютной защита от data races необоснована.

Это вы сейчас мощно задвинули, внушаить.

Даже мощнее, чем с гарантиями от компилятора по поводу проверок err.

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

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

Gordon
()
Ответ на: комментарий от r--r--r--

Докажи

Вы слились, продемонстрировав недобросовестное отношение (отрицание без положительного аргумента и ad hominem). Я за это вас уже заслуженно поругал. Захотите добавки - возвращайтесь с чем-нибудь новым.

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

Т.е. через CSP я могу в другую гороутину отдать указатель на какой-то контейнер и спокойно модифицировать этот контейнер из двух гороутин.

Можно ещё член дверью нарочно прищемить и потом рассказывать всем про неправильные двери.

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

Можно ещё член дверью нарочно прищемить и потом рассказывать всем про неправильные двери.

«Пороть нужно не чушь, а пухлых голозадых женщин. В следующий раз, будьте внимательнее.» (c) ugoday

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

и ad hominem

Я протестую!

половина объяснения в том, что программы просто не могут обуздать больший параллелизм.
Go всё ещё сохраняет здесь свою релевантность, предлагая простую модель совмещённых вы числений (CSP).

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

Нет, это не я слился!!111

Это не ad hominem, это ad vscucareticum.

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

Я правильно вас понял?

Учитывая отсутствие контекста задачи, позволю себе покритиковать решение: не нужно передавать указатель на контейнер. Что за средние века? Передавайте значения через канал :)

Но если по условию задачи точно неизбежно нужен контейнер, то CSP как бы и не намекает на защиту. Программист знает что делает. Если нет, то spoon-feeding от нагромождённой системы ему не поможет.

Необходимость абсолютной защита от data races необоснована.

Это вы сейчас мощно задвинули … Даже мощнее, чем с гарантиями от компилятора по поводу проверок err.

Я не верю, что вы впервые слышите прагматический аргумент. Что удивительного?

Есть палка с двумя концами. На одном простая, но несовершенная модель, которая незаметно покрывает 80% случаев. На втором совершенная, покрывающая 100% случаев, но сложная модель, которая всюду лезет под руку. На мой взгляд, оба подхода имеют место быть.

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

Ну т.е. по факту, в Go нет никакой другой защиты от data races кроме внимания самого разработчика.

Тогда как в Rust-е эта защита есть.

Собственно, это один из камешков на весы с оценками Rust-ом и Go.

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

Ну т.е. по факту, в Go нет никакой другой защиты от data races кроме внимания самого разработчика.

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

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

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

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

Да хотя бы работа с модулями через единую утилиту. В го для этого надо несколько команд для работы с проектом. Точнее несколько разных.

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

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

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

Пользуюсь кучей программ (включая Винду) написанных если не на C++, то на Delphi или C. Необоснованное выжирание памяти наблюдаю только в яваскриптах и реже в программах на .NET.

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

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

Самое интеерсное - я для нее переписал код с сишки для работы с раскладками. Так тот сишный код тек.

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

простая, но несовершенная модель, которая незаметно покрывает 80% случаев

Даже в разговоре с техническими специалистами (вот прямо здесь, прямо сейчас) это идея крайне сложно продаётся.

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

В го для этого надо несколько команд для работы с проектом.

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

на низкоуровневых задачах

Да, согласен. Как замена C Rust подходит гораздо лучше. Тут его ниша и глупо соревноваться, когда есть множество других (более интересных и денежных) задач.

получаются бинарники меньше,

node_modules в проекте, который берёт json и создаёт несколько AWS ресурсов может запросто весить больше, чем установочный дистрибутив Windows98SE2. Это так, для сравнения.

го занял именно промежуточную позицию

Другими словами — занял золотую середину.

а для высокоуровневого недостаточно удобен

С чем будем сравнивать?

ugoday ★★★★★
()

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

Запустил несколько проектов на гошке (теперь приходится таскать их ага), и не понял зачем он нужен, все что в нем есть, в той или иной мере существует на том же расте. Фреймворки, ормки, либы, биндинги, всё есть. Очевидно всё это барахло есть и в других языках.

Может в этом причина падения популярности? Люди попробовали, наигрались и вернулись к своим привычным инструментам?

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

Даже не знаю как я пользуюсь μTorrent, XChat, Vacuum IM, USB safely remove, SunsetScreen, Opera mail, WinDjView, AlReader2, ICE book reader, Omega commander, FAR, WinRAR, WinZIP, AIMP, Light alloy, eMule, MSI Afterburner, Notepad2, Sublime text, EyeDefender, PDF-Viewer, EssentialPIM, Daemon tools, Archivarius 3000, Honeyview, Microsoft Onenote, WizTree, eBoostr, Cherrytree, Aml maple, Nettime, LoudIt, Atomic alarm clock… Хромог на C++. А то что видеоигры вообще работают без Rust и не ложат компа самое настоящее чудо. Ещё загадка как удавалось пользоваться KDE. Rust приди порядок наведи!

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

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

Тут золотая середина не играет. Он вобрал в себя неудобства и для того и для другого. Ну и мы видим снижение популярности на практике - как итог.

С чем будем сравнивать?

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

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

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

А когда кадый день день за днем - хочется автоматизации и удобства.

Боюсь представить что вы делаете, если лишний раз go mod init вызвать занимает значимое количество сил и времени.

мы видим снижение популярности на практике

Где? Только не надо на индекс TIOBE ссылаться. Это мусорный источник.

наверное ява, котлин, шарп.

Вот уж дудки. Это монстры в которых есть много лишнего и ненужного.

питон

Вот, ускорьте его в 10 раз и горутины добавьте. Тогда можно будет начать рассматривать в качестве кандидата.

и node.js.

js — это насмешка над языком программирования. Из современных только php хуже.

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

ugoday ★★★★★
()

Что происходит с популярностью Go?

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

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

Вот, ускорьте его в 10 раз и горутины добавьте. Тогда можно будет начать рассматривать в качестве кандидата.

Так он используется там, где и раст и го излишни и скорость работы не решает, а решает скорость разработки. Как и node.js

js — это насмешка над языком программирования. Из современных только php хуже.

Возможно, а вот ts очень даже неплох. Попробуй.

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

, а решает скорость разработки

Так в Go она не хуже будет. В том и смысл, что можно взять среднего питонаста, вручить ему A tour of Go и завтра он уже начнёт писать средненький код. А за пару недель основные приёмы и стилевые особенности выучит — и всё, готовый средний гошник. Код при этом бесплатно будет работать в десять раз быстрее.

Попробуй

Пробовал в качестве языка для AWS CDK. Собственно, оттуда у меня node_modules на сотни мегабайт и остались. Плюс иной раз приходилось раскуривать с чего бы это ошибки вида пришла переменная типа path/to/dataType в место, где дожна быть slightly/another/path/to/dataType возникают. А в целом — язык как язык.

P.S. А вот что будет, если среднеми питонисту вручить Rust я предсказать не берусь.

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

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

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

Так в Go она не хуже будет. В том и смысл, что можно взять среднего питонаста, вручить ему A tour of Go и завтра он уже начнёт писать средненький код.

Да вручить то можно, а кто вручит 2,5 миллиона готовых модулей, которых на го нету?

Вот смотри, я беру для гуя node.js+раст, для бэкенда node.js+раст. И получаю в нужных местах скорость и качество и при этом не теряю скорость разработки, потому что мне доступно ну вообще все что только возможно и было создано по сути.

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

Я думаю в Расте как и в питоне два вида программеров.

Одни пишут пооцедурно мелкие проекты другие классами.

Так поди и в расте, заюзает какой нибудь либу и уже - я пишу на расте.

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

Я даже не знаю что ответить на такой уровень самовнушения что везде утечки памяти кроме Rust и JavaScript. Даже возможно что это начало современной мифологии.

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

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

При чем тут самовнушение, если я вижу это на практике? Вон у меня прямо сейчас на раст утилита моя самописная, которая месяцами не течет ни на байт. На сишке я таких, например, не встречал ни разу. Часть из нее переписана с сишки, которая текла. Теперь не течет.

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

А откуда растовики появляются то.

Из бывших сишников, которым кто-то рассказал, что XXI давно на дворе.

Он же постоянно палкой бьёт по рукам

Не все любят BDSM и даже не все практикующие хотят быть нижними.

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

кто вручит 2,5 миллиона готовых модулей, которых на го нету?

Пошёл проверить как там left-pad поживает. Нормально поживает. Миллион скачиваний на этой неделе.

я беру для гуя node.js

Может обождёте пока кризис с оперативной памятью разрешится?

для бэкенда node.js+раст

В смысле есть компилятор из раста в ноду или из ноды в раст? o.O Иначе смысл такого подхода от меня ускользает.

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

везде утечки памяти

и CVE. и выходы за пределы буфера. и use-after-free. Утечки памяти это, в общем, даже и не проблема, так, мелкая неприятность.

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

Если способы коннекта - подключения модулей на раст к ноде. Смысл в оптимизации узких мест.

Ну и еще есть задачи, которы физически невозможно решить на ноде, но можно на раст.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария