LINUX.ORG.RU

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

 ,


1

2

Примерно с лета прошлого года популярность языка программирования 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

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

vbr ★★★★★
()

Наткнулся на цитату, которая отлично иллюстрируют многие, затронутые тут темы:

Deep down, that’s what most people want. To feel special. That’s far more important than merely purchasing a solution. Basic, cheap, or even free options are for the common dolt, with simple needs and simple problems, goes this wicked intuition. Few people have the courage to admit their life and work isn’t that complicated.

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

Вот и ответ насчёт if err != nil. Если придумать как добавить более изящную обработку ошибок, то злопыхатели переключат шарманку и начнут ругать язык за отсутвие явной проверки ошибочной ситуации.

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

if err != nil

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

В питоне с динамической типизацией таких проблем нет.

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

мне вспомнилось дейкстровское интервью (смотреть с 11:39), где он высказал следующее: «The management didn’t want faultless programs because the company derived its stability from maintenance contracts. And the programmers weren’t interested because they derived their intellectual excitement from the fact that they didn’t quite know what they were doing. They felt that if you knew precisely what you were doing and didn’t run risks, it was a boring job.»

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

> пользователи не разобрались и ушли на какой-то другой язык

А есть какие-то наблюдения, подкрепляющие данное предположение? Я вот не припомню постов в стиле “I’m leaving Go for Python.”

На мой взгляд,

1. Есть опрос разрабов Go за второй квартал 2022 [1]. Среди 6% тех, кто не собирается использовать дженерики, только 12% назвали причиной “A steep learning curve or lack of helpful documentation . . .”

2. Верно обратное: на другие языки уходили из-за *отсутствия* дженериков до версии 1.18.

3. Дженерики для клиентского кода — элементарная фича (особенно если есть обратная совместимость). А у авторов библиотек работа такая — разбираться в нюансах.

4. Специфичная заслуга Go: дженерики не породили два мира полиморфизма, а расширили понятие интерфейса. Это позволило сообществу не разделиться на тех, кто продолжил бы писать код по-старому, тех, кто перешёл бы на новое, и всех остальных между двумя огнями. Как следствие, дженерики используются только как крайняя мера. В стандартной библиотеке дженерики до сих пор используются очень консервативно и это никому не мешает и не порождает ожесточённые конфликты.

5. Дженерики существуют в массовой культуре уже десятилетиями, это не академическая инновация. Это не неймспейсы в линуксе, если сравнивать по концептуальному пониманию.

6. «Объяснение явлений через глупость людей — это характерная черта снобов, выдающая их собственный узкий взгляд на мир.»

[1]: https://go.dev/blog/survey2022-q2-results

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

> я не совсем понимаю как обходится без дженириков в языке со строгой типизацией

Использовать interface{}/any и приведение к типу [1]. Пример из стандартной библиотеки: container/heap [2]. Неудобно, но в случае с контейнерами не катастрофично — способ хранения уже является частью предметной области. Масштаб бедствия был бы на порядок выше, если бы в Go присутствовала иерархия типов — в данном случае дженерики защищают от повсеместной рефлексии [3].

[1]: https://go.dev/tour/methods/15

[2]: https://pkg.go.dev/container/heap@go1.26.5#example-package-IntHeap

[3]: Что происходит с популярностью Go? (комментарий)

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

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

Зачот.

// Вот за что до сих пор читаю ЛОР, так это за редкие краткие много проясняющие формулировки.

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

Индусы pdr (directi) и internet bs точно раньше так делали (незаконно и можно было оспорить в иканн, разумеется).

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

не совсем понимаю как обходится без дженириков в языке со строгой типизацией

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

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

В эпоху ИИ мне уже пофиг, но вообще если мне код надо писать самому, я твёрдо убеждён, что исключения лучше. if err != nil это очень плохо с самого начала. Но можно и с этим жить, конечно.

Самое смешное, что исключения в Go тоже есть с самого начала. Просто их назвали паниками, в стандартной библиотеке не используют там, где следовало бы использовать, и в целом призывают для обработки ошибок не использовать. Но механизм - есть. И если бы с самого начала вместо if err != nil просто кидали бы паники везде, было бы гораздо лучше. Да.

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

Я вот человек старый, достаточно тормозной, но я не совсем понимаю как обходится без дженириков в языке со строгой типизацией

Вопрос не понятен. Просто кастовать куда надо и всё. Так же, как в Java до 5 версии обходились, так же, как в Go обходились.

Да, каст это не строгая типизация. Ну что поделаешь. Попробуй поищи нетривиальную программу без единого каста. Кому нужна на 100% строгая типизация - тем, наверное, в хаскель какой-нибудь. А Go намеренно принёс «в жертву» строгую типизацию в этом месте, чтобы сделать язык в 10 раз проще. Я думаю, что это правильно.

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

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

В питоне с динамической типизацией таких проблем нет.

Это другая крайность. Статическая типизация отлавливает очень много опечаток. Но тут работает что-то наподобие принципа Парето. Усложнение языка типиизацией на 20% даёт 80% профита. А генерики это усложнение языка на 80%, которые дают 20% профита. И ещё много вреда приносят, ибо некоторые личности, вместо того, чтобы педалить код, начинают на этих генериках строить абстрактные фреймворки. Это плохо и контр-продуктивно. Го всегда был хорош тем, что там не было средств для подобных абстракций, и ты просто сидел и педалил код.

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

А есть какие-то наблюдения, подкрепляющие данное предположение?

Нет. Просто мысли вслух.

опрос

в интернете показал, что он есть у 100% людей.

Боюсь, что тут примерно то же. Те, кто проходит опросы, это грубо говоря 0.1% самых крутых программистов, которые рыщут по интернетам, читают всё подряд, проходят опросы, изучают там какие-то фичи. А 99.9% просто педалят кодпромптят клауду и идут домой в 18:00. Они опросы не проходят, они даже не открывают те сайты, на которых эти опросы. Эту тёмную массу можно увидеть только по косвенным статистическим сведениям.

Но, конечно, это всё так, болтология. Может и не падает популярность у Go. Я сам тоже этого не замечал. Разве что через ИИ-шку некоторые взялись на Rust переписывать всё подряд, но по-мне это тоже баловство от нечего делать.

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

Боюсь, что тут примерно то же. Те, кто проходит опросы, это грубо говоря 0.1% самых крутых программистов, которые рыщут по интернетам, читают всё подряд, проходят опросы, изучают там какие-то фичи. А 99.9% просто педалят кодпромптят клауду и идут домой в 18:00. Они опросы не проходят, они даже не открывают те сайты, на которых эти опросы. Эту тёмную массу можно увидеть только по косвенным статистическим сведениям.

Это как для музыканта необходим слух.
Если «слух» есть, то не нужно рыскать по интернету.
Тем более что в нём самые азы обычно возвеличивают в «ЗНАНИЯ».

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

Если «слух» есть, то не нужно рыскать по интернету.

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

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

Если пианино правильно настроено, то звук будет хороший, но это ещё и от музыканта зависит.

Речь шла конечно о мелодии.
Хотя звук конечно без фальши.

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

Чаще всего нужно просто вести разработку архитектуры, а не рыскать.

Самая больша проблема это начать работу и усердно ей заниматься, даже если результат будет не быстр.
В этом случае всё будет хорошо.

Другой путь это ждать ХАЛЯВЫ и находить сотни доводов к тому, чтобы ничего не делать.
Это «Горе от ума».

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

Усложнение языка типиизацией на 20% даёт 80% профита. А генерики это усложнение языка на 80%, которые дают 20% профита.

Да ладно, без джереников декораторы приходилось плодить :( А что за усложнение то? Синтаксис что ли? Или чего?

anonymous
()

Кстати народ кто в теме, NetBird 0.75

Я давно слежу за wails но сейчас задумался, а гуй там как реализуется то? На самом последнем уровне? За место GTK что то свое или что? Почему то мне раньше это в голову не приходило.

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