Представлен релиз языка программирования Go 1.15, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=53539
SHOWmustGOon
Say "NO" to "Go"!
А эти, как их там, женерики еще не завезли?
Из-за таких, как ты, ненужноженерики таки пропихнут в 2.0.
> ненужноженерикиА вот и подтянулись любители void* и прочих непроверяемых в компайл-тайме тайп-кастов.
А вот и подтянулись знатоки void* и непроверяемых тайп-кастов в go. Ты бы матчасть подтянул прежде чем троллить, а то скучно с тобой.
Неосиляторы подтянулись
Ну и чушь ты несёшь, брат анон. Лучше бы помолчал.
Брат Анон на Великом Троличьем Посту
> Брат Анон на Великом Троличьем ПостуБрат Анон всегда смотрит за тобой, Аноним! Чтобы ты глупостей писал поменьше.
Справедливости ради, компайл-тайм дженерики иногда нужны.Подчеркну: иногда.
Учитывая особенности языка, в большинстве конечного кода они не нужны, это правда.
Там где в джавке/до-диезе/плюсах дженерики вообще единственный выход, в го просто никто так не пишет, чтобы они нужны были.Но порой в коде для библиотек, к примеру, не хватает. Опять же, проблема не настолько большая как её раздувают свидетели дженериков.
> Но порой в коде для библиотек, к примеру, не хватает.Вот как раз для библиотек язык без дженериков - провальная идея. Понятно что в обычном приложении/сервере дженерики редко используются напрямую, но очень много и часто через библиотеки. Можно конечно извернуться, писать в C-style и докучи применять рефлексию (а она в stdlib применяется повсюду), только потому что Роб Пайк имеет личную неприязнь к ним и дженерики снились ему в синтаксических кошмарах, но ведь это не сделает код библиотеки понятнее, красивее и компактнее. Да, указатели на void были единственным вариантом в эпоху создания C, но сейчас, когда дженерики есть практически во всех языках, создать язык без них как то странно, хотя причины понятны и уже ранее озвучены.
> Можно конечно извернуться, писать в C-style и докучи применять рефлексиюПопробуй не изворачиваться и применять интерфейсы (непустые).
Интерфейсы не могут заменить дженерики, как и наоборот. Более того, сами интерфейсы могут содержать дженерики. Допустим, простейший интерфейс, который может принимать любые типы, например Comparable<T> с методом compareTo(other T). Каким образом его переписать, не используя дженерики? Только с пустым интерфейсом, что аналогично void*. И таких юзкейсов как дженерик + интерфейс очень много, что позволяет делать гибкие реализации.
не надо только г из джабы. уже есть одна. в C++ templates:)
Вы, видимо, кроме java и c++ не знаете языков с дженериками. А их много, поверьте). Да и в самой java они появились гораздо позже чем в том же C++...
> Интерфейсы не могут заменить дженерики, как и наоборот.А и не надо их заменять в лоб. Надо умеючи использовать, чтобы получить такой же результат, затратив не больше усилий.
> затратив не больше усилий.А вот для этого нужен выразительный язык. А если язык простой и скудный, то и бойлерплейта придётся писать много.
Откуда желание засрать лаконичный и красивый язык, всякой ненужной лабудой
Уже можно поиграться https://go2goplay.golang.org/p/OdjDyDpjofa
Ниже комментарий про 10 отличий посмотрите.
Да уж лучше бы не завозили чем так как собираются сделать в 2.0.
Название языка определённо оскорбляет инвалидов-колясочников, напоминая им о том, что они go не могут.
Ваше существование оскорбляет Петросяна.
Существо оскорбления петросянит вас!
Петросование существяна
>Для 32-разрядных систем x86 в следующем выпуске будут подняты минимальные требования к системе - продолжат поддерживаться только процессоры с SSE2. Для сборки в режиме GOARCH=386 потребуется как минимум Intel Pentium 4 (выпущен в 2000 году) или AMD Opteron/Athlon 64 (выпущен в 2003 году).А чем они это мотивируют? Почему нельзя ориентироваться на процессоры 2006 хотя бы? На 386 (встройки) я так понимаю всё равно не запустится, а помимо этого ведь никакого смысла нет вроде бы?
Это в чьей голове смысла нету ?? P4 win7 1-2gb ram , такие машие все еще работают. Некоторым образом ..
Это кто так не любит процессоры без Intel Me ??!!
Да это интел забыл залогиниться.
Поддержкой видимо. Берете предыдущий реализации и спокойно работаете...
Лучше бы вообще дропнули x86 и все процы без SSE4.2, x64 нормальный уже пятнадцать лет повсеместно.
И силы бы не распыляли, пилили бы только для релевантного железа.
И превратились бы в Раст.
Некоторые до сих пор использую железо из 60-х и готовы тратить сотни миллионов $ что бы оно работало. Когда все люди будут готовы тратить миллионы $ на новое оборудование, тогда они прекратят поддержку старья и будут выпускать каждый год новые и прекрасные железки.
>до сих пор использую железо из 60-хНу это явно не от хорошей жизни, оно перестало справляться со своими задачами ещё в 70.
В том то и дело, что оно прекрасно справляется со своими задачами, которые с 60-х не менялись.
Да, отлично справляется, если на входе и выходе стоит кластерок крутящий в кубере костыли для этого легаси
ээээ ... зачем для z/390 кластерок на нём же ?
Похоже, выше на связи поколение кубернётесов и чпокеров. Они не подозоревают о сущестовании чего-то другого и, о ужас, что на этом другом крутятся все критические отрасли мировой индустрии.
Большинство банков и госорганизаций США работает на старых компьютерах. F-22 использует 386 процы, F-53 старые PowerPC, наверное у их создателей нет денег или может быть мощности этих железок хватает?
Скорее там сидят люди, которые на этих железках всю жизнь работали в своих кб и не доверяют новому.
1. Крупнейшая в России (а может и в мире) компания, производящая трубы использует кое-где и 386 и 486 и др. Не из бедности, а потому что технология уже давно отлажена. Лозунг: "Работает - не чини, м.дило!". И там такие клоны юниксов, что без специальных книжек 80-х во все тонкости не въехать...2. Один очень крупный производитель электроники делает продукцию для РосКосмоса и авиации по стандартам начала девяностых. Не потому, что не могут по другому, а по принципу: "Работает - не меняй, м.дило". Там есть всё: и компоненты в керамике и в золоте, и кондёры с зашкаливающимся количеством тантала и даже титановые ломы. :-) У того же И. Маска со SpaceX всё фейлами завершалось, пока стандарты до наших не подтянули...
P.S. Всё инсайд.
P.P.S. Тов. Майор, за мной можно не выезжать. Конкретики не назвал, секретов не выдал. Всё это и без меня прекрасно гуглится...
Пункт №2 делают не поэтому, у вас какой-то инсайд дебильный, а потому что в космосе радиация, а она мешает работать всяким там малонанометровым технологиям — помех много.
Популярные заблуждения про радиационную стойкость микросхем
https://habr.com/ru/post/452128/
вкратце:
Уменьшение проектных норм, безусловно, влияет на радиационную стойкость изготавливаемых на них микросхем, но вовсе не обязательно в худшую сторону. Общий тренд состоит в том, что со снижением проектных норм влияние полной дозы уменьшается, а одиночных эффектов увеличивается.прямо сейчас уровень проектных норм, на котором ведутся разработки вычислительных платформ для космоса — это 65-45-22 нм. По 45 нм уже выпущен в серийное производство американский комплект микросхем RAD5500, по 28 нм в следующем году должен выйти европейский процессор DAHLIA,
Радиационно-стойкие микросхемы стоят безумных денег, т.к. во-первых производятся малыми тиражами, во-вторых производятся по специальным техпроцессам и схемам (с мажоритарной логикой, помехоустойчивым кодированием, ватчдогами и т.п.) , в-третьих специально проектируются и тестируются в течение примерно десятилетия, а в-четвёртых выбираются исходя из необходимой вычислительной мощности конкретного устройства (не используют процессоры с избыточной производительностью).Дело не в том, что там не доверяют новому, а в том, что прямо сейчас ведутся разработки микросхем, которые в космос полетят только лет через 10-15. И эти микросхемы имеют мало общего с микросхемами общего назначения. Совместимы с процессорами общего назначения они оказываются скорее по чистой случайности: нужно выбрать какую-то систему команд, какую-то архитектуру, и выбирают достаточно известные и распространённые образцы, чтобы не изобретать велосипед.
Думать, что в космосе нет новых процессоров только потому, что в КБ сидят замшелые старики - это верх идиотизма. Это скорее в интернетах много пионерии с взором горящим, которые считают какой-нибудь iPhone вершиной развития технологий.
> использую железо из 60-х и готовы тратить сотни миллионов $ что бы оно работало
> Когда все люди будут готовы тратить миллионы $ на новое оборудованиеДа, непонятно, когда, наконец, люди начнут рационально мыслить и осознают, что выгоднее тратить миллионы, а не сотни миллионов.
> Да, непонятно, когда, наконец, люди начнут рационально мыслить и осознают, что выгоднее
> тратить миллионы, а не сотни миллионов.Как только исчезнет коррупция, так сразу и начнут. Не при нашей жизни это будет.
Не когда а если.
Коррупция -- проявление "власти народа" в виде проявления меркантильного своеволия одного/двух/нескольких заинтересованных в личном обогащении индивидов. Когда будет побеждена демократия и демократы перестанут со словами "мы здесь власть" класть к себе в карман чужое, тогда и коррупция будет побеждена.
Кагбэ, есть вариант, что миллион на новое оборудование - это только верхушка айсберга. Если взять простой мощностей, переобучение персонала, время на отлаживание после пуска и прочее, а самое главное - риск конкретному управленцу получить по башке, если с этой модернизацией что-то пойдёт не так, то нуевонах, пусть остаётся как есть.
> переобучение персоналаРеальная проблема с легаси в том, что обученного персонала днём с огнём не сыщешь. Более того, учиться всякому старью в принципе никто не хочет. Так что в действительности всё не так, как на самом деле.
> x64 нормальный уже пятнадцать лет повсеместно.x86_64 15 лет не повсеместно, а местами. Повсеместно лет 5 примерно (или когда там 32-битные атомы выпускать перестали?).
x86_64 в большинстве мест с 2007(8)-го, где-то. А 32-битные атомы перестали после 2009-го.
> (или когда там 32-битные атомы выпускать перестали?).Начиная с 2008-го, если что, а это 12 лет, а не 5.
> все процы без SSE4.2Согласен, AMD ненужно.
Как минимум, SocketAM3, FM2+ поддерживают SSE4.2.
Сокет поддерживает инструкции? Чего только не прочитаешь на опеннете…
Из версии в версию пишут что в сабже заимствования из питона. Какие (несмотря на утинную типизацию и foreach)?
Да никаких. Просто автор побоялся писать про limbo, о котором тут никто не слышал.
Это, наверное, наличие отсутствия точек с запятой в конце строки
Если структурную типизацию считать признаком Питона, то OCaml и Haskell тогда тоже питоны.
Базовые структуры данных взяты из питона
Гоу к питону имеет весьма отдаленное отношение
Слайсы и range для перебора значений в слайсах, например. Ещё кортежи в неявном виде. В том числе можно вернуть несколько значений из функции сразу.
Так это все матлабhttps://www.mathworks.com/company/newsletters/articles/matri...
Or the subscript can itself be another vector:
v([1 5 6]) % Extract the first, fifth, and sixth elements
The colon notation in MATLAB provides an easy way to extract a range of elements from v:
v(3:7) % Extract the third through the seventh elementshttps://www.mathworks.com/help/matlab/ref/function.html
Function with Multiple Outputs
Define a function in a file named stat.m that returns the mean and standard deviation of an input vector.
function [m,s] = stat(x)
Зачем он нужен когда есть RUST?
Зачем нужен RUST когда есть он?
> Зачем он нужен когда есть RUST?чтобы в 10* раз меньше усилий и времени на написание кода тратить (сам код будет всего в 2 раза медленнее)
*количество будет разным для всех, привёл своё +-
> в 2 раза медленнеепричём медленнее на расте будет :) ведь чем сложнее язык - тем невероятней написать оптимальный алгоритм.
unsafe поможет тебе, юный падаван.
Зачем тогда Раст? А для сейфа всегда есть Го
> unsafe поможетВся суть раста: либо тормоза, либо как в си.
>> unsafe поможет
> Вся суть раста: либо тормоза, либо как в си.
>> unsafe
> либо как в си.Вся суть опеннетных экспердов: очередной пук в лужу из-за незнания предмета.
Сложность раста только на уровне zero-cost абстракций до компиляции, это уже никак не влияет на производительность в рантайме.
Очень интересно, продолжай рассказывать сказки...
Неверие признак незнания
Так ты наоборот в 10 раз больше усилий приложишь. Чем примитивнее язык, тем более объемные конструкции приходится использовать. Попробуй написать "Мама мыла раму" на Токипоне, аналогия прямая.
> Так ты наоборот в 10 раз больше усилий приложишь...сразу видно: аноним ни на одном из этих двух серьёзного проекта не написал. а ещё живет где-то в 80-х без богатой стандартной библиотеки и github с тысячами готовых и пригодных либ.
У Go нет богатой стандартной библиотеки, а перемалывать Github на каждый чих - это сомнительное удовольствие.Мне говорят, что я напишу в 10 раз меньше кода - не напишу, по умолчанию я напишу в разы больше, а как уже избавляться от этого недостатка и нужно ли в принципе - это дело десятое.
> У Go нет богатой стандартной библиотеки...многоуважаемый "эксперт" признался, что на Go ни разу не писал
> а перемалывать Github на каждый чих - это сомнительное удовольствие.
многоуважаемый "эксперт" признался, что ни одного серьезного софта в жизни не написал (только школьники-максималисты пишут свои хеллоу-ворлды без сторонних либ. профи никогда не изобретают велосипед)
> Мне говорят, что я напишу в 10 раз меньше кода - не
> напишу, по умолчанию я напишу в разы больше, а как уже
> избавляться от этого недостатка и нужно ли в принципе - это
> дело десятое.единственное количество кода которое вы можете написать - это hello world, и то не факт
Чтобы продолжить этот разговор тебе стоит попробовать Scala / Haskell, на худой конец Kotlin. Go - это тоска по ушедшей молодости Пайка и Томпсона, унылые отголоски из 70-х, и больше ничего.
Лол, функциональные яп вы теперь выдаёте за модно-молодежно?
Мозилла всю команду Раста уволила несколько дней назад.
Давно пора.
На самом деле перевели в Фаундейшн без ЗП. Посмотрим что они там накоммитят за бесплатно.
Тоже что и в D. Идея прекрасная, реализация хорошая, но нету денег - нет движения.
Джентльменам на опеннете принято верить на слово.
Звучит как "зачем нужен язык со сборкой мусора, когда есть язык c compile-time управлением памятью, но с более сложной семантикой по этой причине".
Раст создан для системщиков
Гоу создан для прикладников
> Раст ... для системщиковОборжаться, в мурзилке - системщики :)
А системнщики-то у не знали. И продолжали использовать нормальные языки.
Зачем нужна вилка, когда есть ложка и палочки?
и сюда sjw добрались. а будет весело если кто-то форкнет и вернет как было)
> "blocklist"Гениально! Надо было сделать ещё и "whotelist", для симметрии и мнемоничности
Мне вот интересно когда китайцы и прочие азиаты начнут оскарбляться на «жёлтую прессу».
Китайцам до лампочки. Во-первых, по сравнению с их родной партией и их ограничениями, это все конфетки. А, во-вторых, в то время, как эти все ребята страдают херней с разными переименованиями, китайцы с них вовсю стрегут бабосики и перекупают их же компании.
Меня смущает прототип дженериков, который они хотят добавить. Он ужасен. :(
А разве бывают нормальные? Покажи, хочется взглянуть.
Изобретать ничего не надо. Лучший generic одинаков во многих языках:
T myMax(T x, T y)
{
return (x > y) ? x : y;
}Все. Теперь смотрим на Go-путь:
func Print(type T)(s []T) {
// same as above
}Вызов:
Print(int)([]int{1, 2, 3})Просто бред. Излишество. "Ненужно". Если примут, это будет худшее дополнение языка.
А мне норм https://go2goplay.golang.org/p/a-Kx6GadoTP
Найдёшь 10 отличий?
https://play.golang.org/p/0owzSs6UPb_U
Хотел бы я взглянуть на пример использования дженериков в go, который действительно облегчает жизнь.
https://blog.golang.org/why-generics
Да, выходит реализация мин выглядит такой:contract Ordered(T) {
T int, int8, int16, int32, int64,
uint, uint8, uint16, uint32, uint64, uintptr,
float32, float64,
string
}func Min (type T Ordered) (a, b T) T {
if a < b {
return a
}
return b
}Не говорите, что это нормально. Хорошо, этот min/max они добавят в math (или куда?). Но скажем, теперь каждый дженерик подразумевает какую-то доп. когнитивную нагрузку на поиск определения типов для него. Разработчик может переопределить свои контракты - и понеслась....
func New (type Node, Edge G) (nodes []Node) *Graph(Node, Edge) {весело ...
Даже там то же самое, как ни странно.
func Reverse(s []interface{}) {…
Поэтому D) Лучший синтаксис, хоть и также gc.
dlang
Они уже бесполезны в го, так как и stdlib, и другие крупные бибилотеки проектировались без них. Переписывать вряд ли кто будет, даже если сильно захотят. А уж команда го переписывать stdlib явно не будет, по идеологическому Пайковскому "не нужно" в том числе.
Нишевый язык для веб-макак. Это даже его создатели не отрицают.
Беда в том что в яп ООП большая часть народу так же не умеет программировать. Ваши монструозные наслоения абстракций и кучи всего всего, реально задалбывают. Попытки везде сделать так что бы код не повторялся. Ощущение что им там 5 лет долбили что то в голову потом они ещё пору лет что то где-то гавнокодили и смотрели ютубчик как надо правильно. А потом пришли к тебе и такие я все умею и могу, а ты меня не берешь ты боишься за свое место. Вас к коду подпускать нельзя.
А кто тебе сказал, что я на ОО-языке пишу? И да, на Go я писал 2 года, так что знаю, о чем говорю.
Нет никакой беды. Есть толпа макак (известное распределение 80/20), которым цвет ручки инструмента (само собой лампочки всякие.. пиу... пиу...) важнее решаемой задачи (если у вас в руках молоток, любая проблема кажется гвоздем). Есть решающие задачи - они выбирают инструмент под неё.
Принцип мышления, при чем, тут простой: это сделал Google, в Google работают лучшие, Google не может сделать гавно.
При этом сам Google в лице Роба Пайка утверждает, что их программисты не исследователи, а гуглеры, они не способны освоить мощный язык и поэтому для таких сделали Go. Где-то на хабре была эта цитата в очередной статье с критикой Go.
Просто поразительно, как избыток инструментов порождает религиозные течения.
Выбирай любой и пользуйся. Не ?...
Еще раз - слишком много макак и мало инженеров.
> Еще раз - слишком много макак и мало инженеров.Так кто ж отрицает? К великому сожалению, так оно и есть.
Смею заметить, что ООП и монструозные наслоения абстракций никак не связаны.
И какии боком там Питон ? Если бы к примеру Модула, то еще можно понять ...
Автор бездумно копипастит про Питон, хотя всем вменяемым известно что заимствования там были из Делфи
Дельфи ? Хм. Советую для начала почитать про Вирта, потом про Паскаль, потом про Модулу ...
В самой популярной книге по языку есть такая схема https://1.bp.blogspot.com/-Hwxp4W_RdUE/W7o_P4XpxqI/AAAAAAAAB...
+1. Ну и где там Питон ? (про Дельфи я молчу, хотя по сути это и не язык ;))
В смысле не язык, Объектный паскаль это все таки не Вирт, а уже Хейлсберг (до его перехода в МС на сишарп и тайпскрипт). Оличия от классического П примерно как у просто си и плюсов.https://ru.wikipedia.org/wiki/%D0%A5%D0%...,_%D0%90%D0%BD%D0%B4%D0%B5%D1%80%D1%81
Отличия ОП от классического П примерно как у просто си и плюсов.
https://castle-engine.io/modern_pascal_introduction_russian....
>с отдельными заимствованиями из языка PythonКакими именно?
Ура, мой любимый язык зарелизился, спасибо!
Не знаю, почему вспоминают Питон: возможно, так как Гуглы на стэке Питон+С раньше пилили часть своих сервисов, пока на Го не перевели. Или же маркетолог поработал. А может всё просто - точку с запятой в конце строки ставить не надо.Но почему регулярно не упоминается Лимбо (о чём писал товарищ-аноним выше)?! Очень непонятно, какое-то очередное переписывание истории. И на схеме (выше) Лимбо так же отсутствует.
Забавно, что в официальном доке регулярно встречаются упоминания Юникса, Плана-9 и Винды. Вот упоминание Линукса пока не попадалось, вероятно, ещё не добрался...
Местами го похож на питон: простотой (якобы), структурами данных, деструктуризацией возвращаемых значений, for in range и т.д.
Вроде Restic на нем? - Хороший "комбайн". А других проектов что-то и не вспомнить..
rclone, docker, kubernetes, prometheus, grafana, traefic, terraform, vault, gitea/gogs, etcd, hugo
Интересно, на основании чего новость про релиз Emacs попала в мини, а новость про релиз этой пакости - в главные.
Новости про гоу и раст обречены быть в топе, поскольку первый разрабатывается айти-гигантом,
а второй просто гигантом
...мысли, отцом русской демократии
> Для сборки в режиме GOARCH=386 потребуется как минимум Intel Pentium 4 (выпущен в 2000 году) или AMD Opteron/Athlon 64 (выпущен в 2003 году).А смысл вообще тогда оставлять поддержку 32 бит x86? Это ведь amd64 процессоры.
Кукурузбёрст был 32 битным (до 2005 что ли). Это всё пустое, 32 битные мокроконтроллеры и встройки ещё можно найти. Но 64 битные процессоры того времени были не очень качественными и забагованными. В 2006 появился core2 -- его можно считать первым 64 битным процессором интел. Собственно, сегодня весь софт собирается под эту архитектуру (обидно, что софт собранный под более новые архитектуры и тормозит больше на сегодняшних процессорах). Вероятно, в самих процессорах как раз оптимизации под машинный байткод той древней ревизии.
Кажому россиянину по эльбрусу, а то сидят на пеньках и Go не могут
Лично я буду только за, если мне эльбрус дадут, да еще бесплатно. В Go могу, но не хочу ибо гуано.
Но вам его и не за бесплатно <s>никогда</s> пока не дадут, бгг
Давно ли эльбрус может в го?
Эх, мне бы Эльбрус (сразу тачкой, сам проц мне не к чему)... Вот я бы развернулся!P.S. Не Тео Де Раадт, но тоже чего-нибудь нахимичил... ;-)
вот когда к go добавят to, тогда наступит счастье всем goto'шникам
В go есть goto. Кен счастлив.
заметил такую иронию во всех статьях про go - чаще всего пишут про то как обмануть GC и уменьшить время траты на его циклы. А смысл тогда этого языка если все сводится к борьбе с основной фичей? Я уже на С посижу. Мне воевать с решением задачи нужно, а не с языком и его компилятором.
> заметил такую иронию во всех статьях про go - чаще всего пишут
> про то как обмануть GC и уменьшить время траты на его
> циклы. А смысл тогда этого языка если все сводится к борьбе
> с основной фичей? Я уже на С посижу. Мне воевать с
> решением задачи нужно, а не с языком и его компилятором.Так совсем его отключить нельзя?
В теории можно но он вшит в управление памятью такими костылями, что лучше не отключать, а просто обманывать его путём создания всяких пуллов для ресайклинга уже выделенной памяти
> В теории можно но он вшит в управление памятью такими костылями, что лучше не отключать, а просто обманывать его путём создания всяких пуллов для ресайклинга уже выделенной памятиоткуда же вы такие лезите, друзья? закусывали бы... костылей нет, отключать - легче чем где-либо
Ну давай отключи и попробуй запустить в проде, потом напиши как у тебя с течкой
> Ну давай отключи и попробуй запустить в проде, потом напиши как у тебя с течкой"течка" у мамкиных илитистов (которые пишут в лучшем случае лабы на своём лучшем в мире языке)
если использовать Go без GC, память и выделять, и освобождать нужно руками
Да ты можешь отключить одной командой или передать через переменную, но тут возникает загвоздка: почти все стандартные библиотеки в go любят выделять память на heap по любому чиху, взять хотя бы тот же net/http, через n запросов твоя программа либо встанет колом либо сольется. Допустим ты отказался от использования стандартных либ, обвешал все своими собственным кодом, все бы хорошо но вот опять течка - runtime как оказалось тоже не против выделит для себя памяти на каждый пук, плюсом ну и теперь у тебя стандартный mheat сходит с ума так как mcache почти перестал работать нормально, так как GC не переводит снапы тебе в свободное queue. Конечно можно вызывать GC напрямую и runtime - но тогда это будет кошмарно со стороны производительности. Вот ты уже сидишь и переписываешь runtime, а если ты переписываешь runtime тогда GC уже на тебе. Другая опция забыть про heap, о5 25 - если все держать в стаке то зачем отключать GC? Да и так далеко не уедешь. Вот и остается что оставить GC в покое и минимизировать число выделений, ресайклать уже выделенную память и держать только n routines с всякими chan для передачи работы. Вот и весь твой go сошел на нет. Зачем так (https://github.com/valyala/fasthttp) себе мозг выносить, когда можно на том же C, ну или добавить немного мазахизма и писать на С++.
никакой загводки тут нет (ну если не выдумывать её изо всех сил пытаясь меня критиковать)Go - язык с GC, и это - несомненный плюс. Точнее скажем так: есть задачи (вроде захвата звука с железа) где GC - это минус. Но их очень мало. Во всех остальных случаях плюс. Ну для профессиональнх программистов. Тех самых, что работают программистами за деньги, тех, кто решает бизнесс-задачи. Мамкины элитисты, которые учили ЯП 10 лет чтобы хвастаться в интернете что они лучше других, а потом начали переучиваться т.к. вышла новая версия с кучей новых фич, а старый код (и все их знания) теперь legacy, и писать так неидеоматично (ребята во дворе засмеют), могут со мной не согласиться конечно, но кого интересует их мнение?
для кого языки с GC оказались недостаточно хороши для обработки http (фактическое приложение, а не реверс-прокси)? могу припомнить только Msft. но это не проблема управляемого кода, ведь Google и Facebook как-то справляются. так что это проблема Msft и их проблем с архитекутрой и масштабированием.
ещё раз коротко: Go позволяет писать без GC (в стиле Си например: malloc, free и sizeof на месте), но это влёчет (вполне ожидаемо) кучу проблем, поэтому профи будет делать такое только при острой необходмости. например при захвате звука с железа. "борьба с GC во всё мире" - это или юношеский маскимализм, или полная некомпетентность и профнепрегодность, или, что самое плохое, психическое расстройство в духе "набижать в тему про Go и пытаться убедить всех вокруг в том, что он плох ибо не похож на тот самый лучший в мире язык" (который должен был "всех похоронить", но оказался никому не нужен (плохой маркетинг, скажут невменяемые адепты))
Суть темы первого комментария в этой ветки была про то что «профи» из всяких там Amazon, microsoft, Apple (и других «мамкиных программистов» (С) ты) пишут статьи о том как они выжимают производительность из софтваря go - путём обманки GC и удержания и использования уже выделенных ресурсов несколько раз. Конечно если у тебя трафик какого-то http со статичным 1.5 тыс запросов в 10 лет то да ты проблем не видишь. Насколько я помню сам go вроде не включает GC в спецификацию языка, а вот конкретная имплементация на него завязана по полной. Так вот, если все программирование, сводится к тому, что ты вместо решения бизнес задачи пишешь ловушки для GC то как минимум выбор инструментов был неверен.
Вот из опыта 8лет на go скажу, что Го из задумки создать безлопастный системный язык превратился в тыкву для поднятия ЧСВ у всяких питоно-руби-жс писателей.
> Суть темы первого комментария в этой ветки была про то что «профи»
> из всяких там Amazon, microsoft, Apple (и других «мамкиных программистов» (С)
> ты) пишут статьи о том как они выжимают производительность из софтваря
> go - путём обманки GC и удержания и использования уже выделенных
> ресурсов несколько раз. Конечно если у тебя трафик какого-то http со
> статичным 1.5 тыс запросов в 10 лет то да ты проблем
> не видишь.не 1.5 тыс в 10 лет, а 1 млн в минуту. оптимизация начинается где-то с этого момента (писали бы на Go - знали бы). в России это актуально только для мылру да яндеха. вот пример статьи: https://medium.com/smsjunk/handling-1-million-requests-per-m... (разумеется она не от Amzn, Msft или Googl, они такие статьи по Go вообще не пишут, но откуда вам знать?)
> Вот из опыта 8лет на go скажу...лооол, а можно подробнее? хоть 2 примера? я на Go c 2016 пишу, в России тогда было ровно 0 вакансий. или вы на западную контору работали? (8 лет назад и там было 0 вакансий)
уже 18 лет работаю в Comcast. Ой уже 19 лет и на вопрос я живу в Фили. Да, я такой глупенький, только а MIT лекцию читал несколько лет.
> Да, я такой глупенький, только а MIT лекцию читал несколько лет.аааа! пощади, человек-анекдот! прям МТИшная звезда пришла на opennet чтобы какую-то бредятину анонимно накидывать? в космос не летали случаем? нобелевку может получили? xDxDxD
ну и тот факт, что за 8 лет не набралось 2-х проектов чтобы вспомнить доставляет. или они секретные? ЦРУ всё изъяло xDxDxD
>> заметил такую иронию во всех статьях про go - чаще всего пишут
>> про то как обмануть GC и уменьшить время траты на его
>> циклы. А смысл тогда этого языка если все сводится к борьбе
>> с основной фичей? Я уже на С посижу. Мне воевать с
>> решением задачи нужно, а не с языком и его компилятором.
> Так совсем его отключить нельзя?можно конечно, просто переменную окружения экспортируете. ну или прямо из кода:
https://golang.org/pkg/runtime/#hdr-Environment_Variables
https://golang.org/pkg/runtime/debug/#SetGCPercent
>>> заметил такую иронию во всех статьях про go - чаще всего пишут
>>> про то как обмануть GC и уменьшить время траты на его
>>> циклы. А смысл тогда этого языка если все сводится к борьбе
>>> с основной фичей? Я уже на С посижу. Мне воевать с
>>> решением задачи нужно, а не с языком и его компилятором.
>> Так совсем его отключить нельзя?
> можно конечно, просто переменную окружения экспортируете. ну или прямо из кода:
> https://golang.org/pkg/runtime/#hdr-Environment_Variables
> https://golang.org/pkg/runtime/debug/#SetGCPercentСпасибо Вам
В джаве тоже при более-менее серьёзной нагрузке обычно юзают пулы по-максимуму.
Вообще, их и в C/C++ тоже гоняют в хвост и в гриву, т.к. в хайлоаде malloc/free считаются нифига не дешёвыми.