LINUX.ORG.RU

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

 ,


1

3

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

Обобщенное программирование – это не только контейнеры

Я понимаю. Однако, без иерархии типов необходимость дженериков уменьшается ещё сильнее.

(В качестве примера, slices.Sort на дженериках против sort.Sort без дженериков)

что предлагал пользователю первый Go, если пользователь хотел реализовать свой разреженный вектор?

any (на тот момент `interface{}`) и рефлексию, если вдруг где-нибудь надо

Конкретно *реализовать* вообще не должно быть сложно.

не нуждается ни в каких разреженных векторах

Изысканные структуры данных вообще редко нужны. Сами-то давно пользовались, скажем, префиксным деревом?

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

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

заканчивая очень странным способом перехвата паник

On purpose же. Паники для исключительных случаев, поэтому синтаксис не должен поощрять применять их без необходимости.

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

Если что то в go это не создание структуры с другим именем.

Это создание нового типа, а то что оно структура дело десястое.

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

Предметом обсуждения был вопрос, почему в яву (первую) не приехали шаблоны.

Потому что именно с Java 2 это уже не MVP.

И какое отношение этот "не MVP" имеет к вопросу, почему в MVP не приехали шаблоны?

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

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

А так учитывая что тот же Роберт Гриземер прямо вместе с Виртом работал вполе очевидно откуда он и вытащил многие концепты - из того времени когда у него хязыки были лучше.

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

В качестве примера, slices.Sort на дженериках против sort.Sort без дженериков

ИМХО, slices.Sort показывает как оно должно быть. Тогда как sort.Sort без дженериков выглядит как крутой workaround, который талантливым разработчикам удалось придумать в условиях отсутствия дженериков.

any (на тот момент interface{}) и рефлексию, если вдруг где-нибудь надо

И получить огромный расход памяти и просадку про производительности в случаях, когда хранить нужно int-ы или double-ы.

Сами-то давно пользовались, скажем, префиксным деревом?

Вот это вы удачно зашли. Для текущего заказчика года полтора назад довелось сделать реализацию специфического дерева на базе padix-tree. С тех пор раз в 3-4 месяца в это дерево добавляются какие-то новые фичи. Одну из них нужно добавить вот прямо сейчас.

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

Общаясь с вами все лучше становится понятно для какой аудитории делали Go. И понятно почему Go пользуется такой популярностью.

Общаясь с вами все лучше становится понятно почему о вас такого невысокого мнения даже анонимусы.

И откуда и зачем вы его взяли? А, наверное вам, как Go-шнику, подойдет и неоптимальное решение. Главное, чтобы простое.

Уровень идиотии просто зашкаливает. Потому что только идиотией можно объяснить ваши выводы, например о том, что «подойдет и неоптимальное решение», в разговоре о формальном определении.

Языка C/C++ не существует.

И снова приступ острой мозговой недостаточности. C/C++ - это общепринятое обозначение сразу двух языков.

По поводу Си-ных массивов вопросы следует адресовать разработчикам Си.

Да что вы говорите? А я думал у вас хватит извилин хотябы на гипотезу. А то вон как про Go разошлись, хоть санитаров зови.

Да, а еще Пайка брали в Google чтобы он Go для Google сделал.

Скорее всего его туда брали не только для этого, но в итоге именно Пайк стал основным разработчиком Go.

Какой же вы сказочный.

Какой же вы болезный.

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

Это Java 1.0 со своим JDK, в который входила даже GUI библиотека AWT, была MVP?

В вашей палате дурдома MVP с GUI - не MVP? Попробуйте ванны и больше времени проводите на свежем воздухе.

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

Разве может набирать популярность язык с таким синтаксисом..

type User struct {
	Name string
}

Будте конкретнее, объясните что вам тут не нравится.

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

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

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

И какое отношение этот «не MVP» имеет к вопросу, почему в MVP не приехали шаблоны?

Если вы не понимаете что такое MVP, то какой смысл отвечать на этот ваш вопрос?

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

В вашей палате дурдома MVP с GUI - не MVP?

Нет. У нас тут с другими поциентами полный консенсус: MVP – это минимальный продукт. Ну т.е. покрывающий самый-самый минимум. В приложении к Java 1.0 это было бы как компилятор и совсем скудный набор базовых классов (типа вектора и хэш-таблицы). Но когда в комплект кладут базовую библиотеку такого объема, который по тем временам мало кому снился, а еще и кроссплатформенный GUI в довесок… Не, на MVP это не тянет. Это полноценный программный продукт.

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

твоей юзкейс навыворот

Вполне реальный юзкейс. А в твоей вселенной Java классам запрещено реализовывать больше одного интерфейса?

А так учитывая что тот же Роберт Гриземер…

Не знаю что там делал Роберт Гриземер, но ты несёшь какой-то бред.

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

Я помню первый ДУБ, Гослинг если я его не путаю разрабатывал жаву как расширение браузера.

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

покрывающий самый-самый минимум

А кто этот минимум определяет? Вот у нас, например, MVP это прямо полноценное приложение, с GUI и всякими штуками. Просто потому, что без GUI и всяких интеграций с BI, например, приложение нахрен не нужно, ну так бизнес считает.

Не, на MVP это не тянет.

У нас как-то полноценная ЭТП как MVP улетела. С интеграцией с госухой, с физическими токенами для авторизации, там больше десятка серверов и куча микросервисов. И это был MVP, обрабатывающий 1000+rps в один инстанс, терабайты данных, миллионы позиций. Поэтому что такое «минимально работающий продукт» решать не тебе, а бизнесу.

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

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

А кого здесь интересует формальное определение? Разве что вас.

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

Если вы хотите пофлеймить на тему определения «разреженного вектора» с точки зрения математики – то флаг вам в руки.

C/C++ - это общепринятое обозначение сразу двух языков.

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

А уж в разговоре про типы массивов употреблять C/C++ еще более нелепо, потому что есть массивы в Си, а есть совсем другие массивы в C++. И если у вас есть претензии к массивам Си, то нехрен притягивать сюда C++, в котором к std::array ничего из описанного вами не применимо.

А я думал у вас хватит извилин хотябы на гипотезу.

Еще одно доказательство того, что «думать» – это не ваше.

А то вон как про Go разошлись, хоть санитаров зови.

Ну позовите. Или в спортлотто напишите. Go выпустили в свет в 2009-ом году, когда все мейнстримовые языки уже прошли путь от «без дженериков ибо нахер не нужно» до обязательной поддержки обобщенного программирования.

И тут остается только гадать, что мешало авторам Go учесть этот опыт.

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

И еще хрен знает насколько бы успешнее был старт Go, если бы он вышел на пару лет позже, но с дженериками. Чтобы в нем slices.Sort был сразу вместо sort.Sort.

Скорее всего его туда брали не только для этого,

С вероятностью 99.9(9)% его туда брали вообще не для этого. А если вы все еще верите в теории заговоров, то это лишь подтверждает, что думать – это не ваше.

но в итоге именно Пайк стал основным разработчиком Go.

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

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

то какой смысл отвечать на этот ваш вопрос?

Объяснить цель написания постов, пересказывающих историю явы, в этом топике.

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

Поэтому что такое «минимально работающий продукт» решать не тебе, а бизнесу.

Ну так Sun, как бизнес, и решил.

И вбухал десятки миллионов долларов в разработку и маркетинг Java. Там одна реклама Java 1.0 была настолько агрессивной, что никаким MVP никогда и не снилось.

PS. И, кстати говоря, почему вы написали про «решать не тебе, а бизнесу» именно мне, а не hummer-у? Это же он классифицировал Java 1.0 как MVP. Т.е. hummer-у можно, а другим нет? Или hummer и был тогда лицом, принимающим решения, в Sun?

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

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

То есть C/C++ )))

есть массивы в Си, а есть совсем другие массивы в C++

А как же «C++ поддерживает некоторое подмножество Си»?

Остальной бред про «божественнойсть дженериков» я уже не хочу комментировать - это только портить )

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

Там одна реклама Java 1.0 была настолько агрессивной, что никаким MVP никогда и не снилось.

Отдельной масштабной рекламной кампании именно для Java 1.0 не было. Никогда. Врунишка.

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

Подумайте. Обычно анонимусам это не свойственно. Но вдруг.

Подумал и задал вполне себе резонный вопрос. Но комментатор решил съехать с темы.

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

Но комментатор решил съехать с темы.

Зарегистрируйтесь, тогда можно будет поговорить.

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

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

Зачем? Что-то не устраивает - жалуйтесь в спортлото. Я отсюда 5 лет назад выпиливался не для того, чтобы регистрироваться. Прихожу когда хочу, комментирую что хочу. Не нравится - не общайтесь, делов то. Хотя чтобы не отличить разных анонимусов это чаще всего надо постараться, да.

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

Зачем?

Чтобы получить ответы на ваши вопросы. Если вам они нужны.

Не нравится - не общайтесь, делов то.

Именно так и сделаю.

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

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

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

Но это видать сложно, или не нужно … х.з.

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

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

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

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

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

Осспади, да по куке нумеровать. Если накодить. Осталось кому-нить накодить и сделать пуллреквест. Это же в опенсурсе.

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

У нас тут с другими поциентами полный консенсус

Медсёстры хоть красивые?

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

Go это язык для идиотов же официально? А их нейросети заменили и он стал не нужен

Как я рад, что тебя среди моих коллег нет, в виду замены нейросетями.

hummer
() автор топика
Ответ на: комментарий от ya-betmen

Кажется обсуждать с тобой типизацию в разных языках бесперспективное дело.

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

Но складывается ощущение, что hummer не может в предметный диалог.

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