LINUX.ORG.RU

А что Go сдох? Кто вместо него?

 , , , ,


1

5

Перестал следить за ним 8 лет назад. Сейчас глянул снова. Старожилы сообщества либо без вести пропали, либо пишут на чём угодно кроме Go. Проекты попротухали. Компании, с которыми я имел дело, переписали всё на JVM based языках. Вакансий по Go, если опустить США, дай боже 5-10 штук в месяц. Из них половина - админство / devops. По статистике TIOBE и PYPL Go растёт (1.42% рынка), а PHP падает (против 1.13%; для сравнения, у Haskell 0.24%). Тем не менее, за, прости господи, PHP предлагают как будто бы в два раза больше денег. Что происходит?



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

Нет конечно :)

Go - это очередная итерация after-C … Смотри список создателей, и чего они между Си и Го ещё делали - там всё прямо и очевидно… ну если хоть одна извилина есть, тут да :)

И как бы вас не корчило, но на сейчас Го - это самый нормальный инструмент для клепания Net-bounded софта, ну то есть - 90% от того что сейчас делается вообще по самому скромному прикиду. Очень жалею что он так поздно появился :(

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

чего они между Си и Го ещё делали - там всё прямо и очевидно…

Кидай ссылки, лень гуглить)

Го - это самый нормальный инструмент для клепания Net-bounded софта

Ну да, современный пыхапэ, все так и есть XD

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

Ты прям все технологии назвал про которые я либо ничего не слышал, либо стороной обхожу когда есть возможность обойти. С Kubernetes приходилось 3 раза сталкиваться когда авторы своё поделие через него распространяли. Все 3 раза поделие не завелось или работало через попу и было принято волевое решение чем бороться с багами в кривом продукте проще взять нормальный опенсорс который ориентирован на весь мир и распространяется адекватно. Больше всего попа горела от DeepPavlov, но к счастью проект вроде как бесполезен стал. Чатгпт и его опенсорсные аналоги его убили.

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

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

Obezyan
()

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

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

общей деградации программистов

Растёт потребность в погромировании, поэтому растёт массовость профессии, а с ней падает средний уровень специалиста. То есть не программисты деградировали, а погромирование спустилось с небес на грешную землю, где нужно не только вояджерами управлять, но и простому Васе город Саратов посылочку из Китая вовремя доставить.

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

И не говорите. Goto выпилили, структурное программирование какое-то придумали %)

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

Вот почему-то у меня никогда ничего не ломалось. Может дело все таки в руках + lombok (frowned upon) + неумение готовить фреймворк? Сайчас достал свою софтину из 2011, скомпилировал и запустил :)

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

Вообще интересно как виртовские языки в данной нише победили.

В каком месте Go — виртовский язык? Если из-за ключевого слова func, так подобный синтаксис используется ещё в Rust и JS, которые виртовскими, кажется, никто не называет. Кошмарное сишное недоразумение в виде int functionorvariablethatisaquestion(), которое успело покусать C++, Java, C# и D, в новых языках не приветствуется. И даже в современных плюсах как минимум для лямбд определение возвращаемого типа ушло в другое место. Вчера начал объяснять сыну, как понимать int main(), почувствовал себя дебилом. И это начинается сразу с, простите, хеллоуворлда.

Или ты там ещё какие-то признаки виртовского языка видишь?

Хотя все тыкают в оберонщиков пальцами и крутят у виска при упоминании его применений.

Кто такие «все»? Я не то, чтобы сильный поклонник Оберона, считаю, что по части минимализма Вирт сильно перегнул палку (те же Delphi/FreePascal для прикладных применений выглядят куда симпатичнее, хотя за сознательно внесённую путаницу с object/class я бы кое-кому настучал линейкой по пальцам). Но многие идеи там вполне здравые. Программа должна быть читаемой, это я говорю как программист, которому время от времени приходится править плюсовый код из 2009 года.

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

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

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

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

Кошмарное сишное недоразумение в виде int functionorvariablethatisaquestion()

Почему вы считаете это кошмарным недоразумением? Там в конце скобочки, значит это функция.

Мне вот все эти let, fn итп кажутся чем-то инопланетным и очень ненужным.

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

Мне вот все эти let, fn итп кажутся чем-то инопланетным и очень ненужным.

Человеку всегда легче воспринимать слова (в пределах разумного), а не спецсимволы. Проблема даже не в спецсимволах, но рано или поздно их становится много и тогда уже в этом птичьем языке невозможно разобраться, что имел ввиду автор.

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

Или ты там ещё какие-то признаки виртовского языка видишь?

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

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

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

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

Ага, ага, я всю свою молодость (школьную) учился понимать именно такие вот конструкции потому что крутые хакиры ведь именно так и пишут, да? Только вот за 20 лет своей карьеры я не видел такой конструкции в продакшен коде. Ни разу. Так что засуньте это туда где взяли и не позорьтесь.

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

let, fn итп кажутся чем-то инопланетным и очень ненужным

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

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

По человечески — это func functionorvariablethatisaquestion() int. Вместо func может быть function или просто fn, во всяком случае — какое-то ключевое слово, явно указывающее, что речь именно про функцию.

Почему так не сделали — это к K&R :)

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

Какой-то enum сравнится с гошным? Они там в Си, например, с дефайном бегают всегда. Потому что enum там очень убогий. И непонятно для чего вообще добавленный.

type Token int

const (
	Illegal Token = (1<<iota)*2 + 16

	literlas_begin Token = (1<<iota)*2 + 32
	String
	Number
	literals_end

	keywords_begin Token = (1<<iota)*2 + 64
	For
	Func
	keywords_end

	While = For

	ЛёгкийСпособСлиться Token = (1<<iota)*2 + 128
	tail
)

type Easy byte

const (
	One Easy = iota + 1
	Two
	Three
	_
	_
	Six
)

type Medium float64

const (
	Seven Medium = (Medium(Six) + iota + 1) / 10
	Eight
	Nine
)

type Complex complex128

const (
	A Complex = complex(10, iota)
	B
	C
)

https://go.dev/play/p/YmupnKiVjcu

– Ко-ко-ко, это не enum.
– В не убогом виде он выглядит именно так.

В Гошеке единственно правильная реализация перечислений. По крайней мере из известных мне.

thegoldone ★☆
()