Представлен релиз языка программирования Go 1.16, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=54605
о, наконец то поддержка М1лучшие компьютеры стали ещё лучше
А что там особенного, это ведь тот же арм пусть и покоцаный.
Переделанный доступ к памяти. Из-за этого М1 рвут другие армы как тузик грелку и даже составляют конкуренцию интелам.
> даже составляют конкуренцию интеламСомнительное сравнение, ладно бы с райзенами сравнил.
Где там конкуренция? Весь софт и игры доступные на интелах уже есть и на м1/арм? Нет? Ну то хряпни вялого, эплобаба🤣
а какой в них аналог ME/PSP? без бэкдоров и скрытого кода - не конкуренты! :)
Главное что систему пакетов, сделали наконец хотя бы частично вменяемой. А то раньше она работала максимально идиотским способом.
кто использует Golang, сколько строк LoC у вас в проекте?
> сколько строк LoCИ сколько USD dollars of the United States of the USA вы зарабатываете?? Отпишитесь в этом ИТТ треде!!
У тебя какая-то тройная тавтология.
Приложения на Go уже массово используются - Docker Kubernetes Prometheus Grafana Jaeger Loki и тд. По сути инфраструктура
я в курсе, но интересно как используется язык за пределами Devops тулов
Всякие мелкие инфраструктурные штуки удобно писать, типа собиралки логов, или доставки событий, или backend-а для авторизации во внутренней системе (в паре с nginx auth_request), или всякие мелкие внутренние сервисы (типа кастомного geoip).Строк кода в одной программе обычно совсем немного, в районе сотни-двух (они простые совсем), зато таких мелких программ десятки.
А вот пожалуйста - не лень же мне было целое пользовательское приложение пилить на Go: https://github.com/d2r2/go-rsync
lol реально нефига было делать.
А как ui сделали? - Через файн либу?
В нас, в Лондоне очень много компаний и банков на Go.
особенно весело что Kubernetes в фоне кушает 10% cpu и с минимум с пол гага памяти.
А теперь возьмите все маленькие демоны которые есть в лине и прикиньте сколько они бы жрали будь они написаны на гошке?
Тут от systemd плачут что он такой тяжелый не нужен, но с гошкой все впорядке, это теперь "инфраструктура"
>особенно весело что Kubernetes в фоне кушает 10% cpu и с минимум с пол гага памяти.Чувак, так что ж ты языком треплешь? Пиши такое-же (по функционалу) но чтоб 5% cpu и четверть гига памяти.
И все, греби деньги лопатой.Или что, слабо !? Языком то оно на опеннете можно молотить забесплатно.
А что там такого распрекрасного "по функционалу"? Небрежная обёртка для автоматизации запуска докеров. Подобные штуки админы старой школы на баше или perl писали пачками, каждый для себя. А тут сваяли для современных девляпсов, чтоб не напрягались. Они и молятся на это. Аж "инфраструктура" это у них! B аноним выше прав, кубер то ещё поделие. Глючит по-чёрному, жрёт память и CPU на ровном месте. Там не полгига. Он и несколько гигов может сожрать без проблем, и занять своими etcd и kubelet-ами CPU на 50% без проблем. Вижу это поcтоянно.
Да что ты несешь такое, человече!
Ну окунись ты в тему, прежде чем умного из себя строить))))
В отличии от тебя, окунутся таки пришлось. По самые уши запачкался этой субстанцией.
Почти поверил даже)
Ну напиши хоть на баше, хоть на перле, да на чем хочешь, такую альтернативную "обертку", чтоб выполняла примерно то же самое, но жрала меньше и не глючила. Станешь знаменитым.
>Подобные штуки админы старой школы на баше или perl писали пачками, каждый для себя.Ага, вот после таких поделий админов старой школы которые они строчили пачками не приходя в сознание за перлом и закрепилась его репутация как язык нечитаемых однострочников.
И по итогу: все поделки умерли, и репутацию неплохому языку изговнякали.
Обёртка для докеров - орнул. Вы видимо не в теме уже давно. Во первых - там под капотом не докер. Во вторых - это не для запуска 1 пода с вашим анимэ на старом макбуке в кредит, а для огромных кластеров.То, что некоторые умельцы, вроде вас, забивают вроде вас гвозди сковородкой, и им не удобно, это не проблема сковородки.
Вот для огрумных клустеров админы старой школы и писали. А как работали все крупные сервисы до появления всемогущего всевеликого бубера по-вашему? И докер там под капотом, ещё пока везде, не скоро его оттуда сковырнут.
Обёртка для докеров - орнул. Вы видимо не в теме уже давно. Во первых - там под капотом не докер. Во вторых - это не для запуска 1 пода с вашим анимэ на старом макбуке в кредит, а для огромных кластеров.То, что некоторые умельцы, вроде вас, забивают вроде вас гвозди сковородкой, и им не удобно, это не проблема сковородки.
>Чувак, так что ж ты языком треплешь? Пиши такое-же (по функционалу) но чтоб 5% cpu и четверть гига памяти.
>И все, греби деньги лопатойДа вы, великий маркетолог, сходу определи потребности рынка и точно знает как грести лопатой деньги.
Сегодня же пойду выбирать лопату что бы грести деньги...>Или что, слабо !? Языком то оно на опеннете можно молотить забесплатно.
Не могу ответить, я еще не пробовал грести деньги лопатой.
Хотелось бы более подробную инструкцию от знающего человека.
Шаг 1: Возьмите деньги...
Шаг 0: Возьмите лопату
> Шаг 0: Возьмите лопатуБудут деньги — будет и лопата.
> Шаг 0: Возьмите лопатуНу лично я согласен и без лопаты, обходясь лишь подручными средствами - есть тачка, метла, строительный таз на 100 литров, прицеп грузоподъемностью с полтонны, могу арендовать грузовичок.
>Да вы, великий маркетолог, сходу определи потребности рынкада хули тут определять, кубернетсы есть - значит есть рынок кубернетсов.
>точно знает как грести лопатой деньги.
Ага, делаешь функциональный аналог существующего продукта, но в 2 раза дешевле - и все. весь рынок твой!
>Ага, делаешь функциональный аналог существующего продукта, но в 2 раза дешевле - и все. весь рынок твой!git pull https://github.com/kubernetes/kubernetes
find . -type f -name "*.txt" -print0 | xargs -0 sed -i "s/kubernetes/kubernetes pro/g"
готово, в лучших традициях РашенСтартап по мотивам Дениса и Лёхи.
что-то не увидел в твоем рецепте уменьшения потребления ресурсов.
Из этого делаю вывод. как сделать лучше ты не знаешь, можешь только ныть в комментах.
Чтож, очередной балабольчик.
Пол-гига это ещё по-божески, полноценное окружение несколько гигов сожрёт, ничуть не лучше, чем написанный на питоне openstack.Кстати:
> отдельными заимствованиями из языка Python
вообще ничего общего.
Есть заимствования.
Я очень быстро не мелкий проект с Python+Flask перевел на Golang именно потому, что местами похоже.
Проблемма програм на ГО не столько в самом ГО, сколько в разработчиках, хотя у самого языка проблем выше крыши. ГО - это простой и доступный инструмент, который предоставляет достаточно низкоуровневые возможности. Пользуясь этим, многие вчерашние веб разработчики, особенно домороченные нода-разрабы, которые слезли с фронта и сразу возомнили себя бекендерами, лезут реализовывать свои влажные мечты, не понимая зачастую что кроме знания синтаксиса языка, необходимо так же хоть сколько-то понимать архитектуру ОС и компилятора, ну и в общем имеют знания немного из другой области и думают что достаточно понимания алгоритмов. А успех продукта в итоге больше зависит от хайпа нежеле от качества кода. В результате получается что кучка не очень грамотных разрабов выпускают успешный продукт, в котором в общем-то ничего великого нет и код говно, но на который все молятся. А реальной же заслугой разрабов является идея, усердие для её воплощения и потраченное время. Вот так и живем...
У меня есть маленький уютный опенсорс-проект на 35 тысяч строк кода, например, а что? (на самом деле проект не один, но этот - любимый)
Дай позырить =)
В моём проекте в стартапе у меня в сумме было 70к LOC
А я вощем написал такоеfor(int i = 0; i < 70000; i++) {
puts("Helo Worald");
}и мой проЭкт тоже 70000 тыщ строк!
> А я вощем написал такое
> ...scip...
> и мой проЭкт тоже 70000 тыщ строк!Нет, я писал не такое.
когда по скорости растров догонят? ой никогда, конкуренции руби и питон у этой поделки
ха-ха-ха.. уморил, но Rust производительнее
> Добавлен пакет embed, предоставляющий средства для встраивания в программу произвольных файлов и каталоговПотихоньку догоняют Си 40-летней давности. Когда там добавили #include? Когда появился xxd?
Что, хипстеры наконец подзаколебались при сборке постоянно перекачивать весь интернет?
> Что, хипстеры наконец подзаколебались при сборке постоянно перекачивать весь интернет?У же два года как вендоринг надёжно решил эту проблему. Лишь бы ляпнуть чо.
>> Добавлен пакет embed, предоставляющий средства для встраивания в программу произвольных файлов и каталогов
> Потихоньку догоняют Си 40-летней давности. Когда там добавили #include? Когда появился xxd?Опеннетные балаболы потихоньку балаболят?
https://pkg.go.dev/github.com/jteeuwen/go-bindata
> Nov 20, 2014
> This package converts any file into managable Go source code. Useful for embedding binary data into a go program. The file data is optionally gzip compressed before being converted to a raw byte slice.
Такую фигню можно для любого языка написать. Правда в сишке это было всегда, а в игогошечке вплоть до сегодняшнего дня нужно было идти качять)) стороннюю мокрую писечку.
это линкером делается, писать ничего не надо - добавляешь свою секцию data
Вот только для мипсов бинутилы для этого так и не доделали.
допустим затянул ты линкером некий файл в бинарь.
Как его потом из С использовать?
Берешь вот и используешь себе. В чем проблема ? Или учебник скачать не можешь ?
проблема в том что ты безграмотный балабол.
Лет через десять смотри и догонят.Сингулярность,епт.
очередной дырявый сишник заврался.Это когда #include научился каталоги встраивать в программу?
> очередной дырявый сишник заврался.Скорее всего, очередной "слаще морковки не едавший" увидел знакомое слово.
Кстати, интересно, "гуру" с xxd выше, в курсе "маленьких нЬю-ансов"
> 4095 characters in a logical source line
> 4095 characters in a character string literal or wide string literal (after concatenation)
> 65535 bytes in an object (in a hosted environment only)(а в с89 - вообще лимит в 32KB)
> 65535 bytes in an object (in a hosted environment only)Это не жесткое ограничение. У меня таким образом инклудится двухметровый файл с unsigned char x[] = {...};
>> 65535 bytes in an object (in a hosted environment only)
> Это не жесткое ограничение. У меня таким образом инклудится двухметровый файл с
> unsigned char x[] = {...};Естественно не жесткое, это минимальный лимит из стандарта.
И естественно, на разных компиляторах можно было по разному "поудивляться" ;)
Никогда там не будет #include - это как раз тот анахронизм, от которого все модные молодежные языки програмирования избавляются с рождения.Вот здесь рассказ Роберта Пайка, создателя языка Go, про то, что #include в больших проектах на C/C++ приводит к тому, что один и тот же файл вычитывается десятки раз, из за чего время компиляции на этапе препроцессинга достигает получаса и более (читать раздел 5. Dependencies in C and C++): https://talks.golang.org/2012/splash.article
[сообщение отредактировано модератором]
Отличная иллюстрация того что проблемы гугла не шибко то волнуют остальной мир и именно по этому гуглу и нужен был golang.
C++ тоже уходит от include на модули в C++20
В то время когда уже эти ушли.
Выкинув все либы и оставив весьма тухлую возможность подключать C код (CGo is not Go как говорит Пайк). Вот когда допилят свои либы до уровня крестов, можно будет честно сравнить. Ставлю на то, что в крестах скорость компиляции к тому времени поднимут в 10 раз, как и обещал Страуструп.
Все решаемо, по крайней мере, на GCC
http://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html...
> Потихоньку догоняют Си 40-летней давности. Когда там добавили #include? Когда появился
> xxd?А давно Си умеет квалифицированный импорт, инициализацию пакетов в правильном порядке импорта и сокрытие сущностей? Лучше бы молчал -- умнее бы выглядел.
Вот чисто для справки - весь твой модный го..вненок делается за пару часов на коленке, откуда столько шума вокруг этого убожества - понять невозможно, видимо за это вваливают бабло, а раз вваливают значит окучивают лоха. А на директора гулга ты не похож кстати.
>Вот чисто для справки - весь твой модный го..вненок делается за пару часов на коленке,очередной анонимный "таксист", всегда знает как надо сделать лучше, но некогда 😁
что-то жиденькое совсем у тебя. Этому на мивину не давать месяц ! пусть подсохнет децл
Да что ты несёшь такое? Как ты сюда попал?
надо было компилятор Golang на rust переписать
А компилятор Rust переписать на Crystal.
Ну вот JVM переписали с C++ на Java и неплохо так вышло я вам скажу(GraalVM).
GUI юзабельный есть?
Я слышал, есть серьёзные проблемы с использованием нейтив кода. В частности, производительность просаживается. По этой причине никакого тебе гуя, и для игрушек тоже использовать нельзя. Чисто вебнявая поделка.
И инфраструктурная, что уже немало для вытеснения Java Python и прочее
Этих не жалко.
чтобы питон и джаву вытеснить отдного равенства или незначительного превосходства в производительности не достаточно, нужны сотни тысяч "батареек", кучу оттестиных временем модулей.
Не выйдет там батарейки стандартизированы и в комплекте, а тут бегай по всему интернету ищи.
Многие приложения сейчас на самом деле web приложения
Это где такое ?
Даже фотошоп стал облачным... а вам всё гуй гуй...
Пора и ОС в инеты загонять и абонплату за использование брать!
Вы, физики, как хотите, но бизнесс говорит: "Нет!".
Корпоративная тайна - данные организации которые публиковать нельзя.
Так что да - гуй, гуй..
Это сарказм был! Я, кстати, тоже за GUI, потому что нативнее и быстрее.
Бизнес говорит "Да, Майкрософт, имей меня полностью. Вот тебе мои документы онлайн, вот тебе моя переписка онлайн, вот тебе мои чаты онлайн, вот тебе база моих клиентов онлайн".
Ну если руководители бизнеса позволяют протыкать, то пожалуйста. У нас по-другому.
У вас бизнес научен фсб все прятать. В мире бизнес научен доверять корпорациям зла.
А причем тут фсб?
Слашал они приходят и все читают по ночам.
электрона хватит для всего
> GUI юзабельный есть?Gtk, Qt, Tk, UI, Godot, Flask, termux, HTML5 -- хватит?
>Godot, Flask, ... HTML5охлол
Погоди это какие-то библиотеки причем первая идет с тонной каких-то хвостов, а вторая С++ код только поддерживает и сомнительно что там есть биндинги к Golang.Речь о встроенной реализации, что-то вроде Swing в Java или WinForms в .NET,
а точнее какой-то путь предоставленный самими разработчиками языка.Просто язык который ен позаоляет визуализировать и взаимодействовать с пользоватлелем очень странный язык. Причем это какой-то путь в Backend для джунов?
> Погоди это какие-то библиотеки причем первая идет с тонной каких-то хвостов, а
> вторая С++ код только поддерживает и сомнительно что там есть биндинги
> к Golang.Мне, как программисту -- без разницы на чём написана либа. Все перечисленные имеют 1(или даже 2) привязки к Go, или имеют нативную реализацию на Go. Вам ехать или шашечки?
Вторая из перечисленных внезапно имеет биндинги как минимум к питону, кроме Go.
> Мне, как программисту -- без разницы на чём написана либаТут либо первое либо второе.
>> Мне, как программисту -- без разницы на чём написана либа
> Тут либо первое либо второе.Ответ не правильный. Тут дедлайн и бюджет.
Пожалуйте вот вам GUI fyne.io/fyne
liteide
> предоставляется новая директива "//go:embed".
> Например, указание в коде комментария "//go:embed test.txt"
> и объявление следом переменной "var f embed.FS" приведётТ.е. добавили в язык фичу, но она живёт в комментариях?
Это чё за жесть такая в 2021?
Костыли в языке такие большие, что их видно даже в прессрелизах!
Нужно больше магических выкрутасов!
А что вы хотели от человека, который такое утверждает:"Подсветка синтаксиса — для маленьких. В детстве меня учили арифметике на цветных палочках. Сейчас я вырос и использую чёрно-белые цифры."
но ведь он прав!
> но ведь он прав!Он прав.
>> предоставляется новая директива "//go:embed".
>> Например, указание в коде комментария "//go:embed test.txt"
>> и объявление следом переменной "var f embed.FS" приведёт
> Т.е. добавили в язык фичу, но она живёт в комментариях?
> Это чё за жесть такая в 2021?
> Костыли в языке такие большие, что их видно даже в прессрелизах!Т.е. то, что эта фича позволяет сохранить обратную совместимость первой ветки -- ничего не стоит? То, что эта фича работает на всех платформах -- это тоже не важно? И то, что 1.16 теперь работает исключительно с модулями -- этого вы (конечно) не заметили? Вы точно не в 90х?
Вы часом не поклонник перехода от питона2 к питону3?))
Может не нужно было это изобретать? Ни версию 1, ни следующие?
Однако - нет. Если этот комментарий не обрабатывается - то программа не будет правильно работать. Так что совместимости это не добавляет.Для Го давно есть несколько библиотек которые делают тоже самое. Могли бы API из них позаимствовать и добавить это в стандартную библиотеку, например.
> Однако - нет. Если этот комментарий не обрабатывается - то программа не
> будет правильно работать. Так что совместимости это не добавляет.Каким образом в старом коде может появиться НОВАЯ ФИЧА?
Каким образом в новом проекте может появиться НОВЫЙ компилятор, если он не установлен, а в новом компиляторе ПРИНУДИТЕЛЬНО ВКЛЮЧЕНЫ модули, где ПРИНУДИТЕЛЬНО указана ВЕРСИЯ КОМПИЛЯТОРА?
Вы какую-то чушь написали.
> Вы часом не поклонник перехода от питона2 к питону3?))Чисто религиозный вопрос.
ты кто такой, чтобы ставить это под вопрос?
Если бы гугель однажды не выкинул сие из своих недр за непригодностью, и хипстота не подцепила бы это, и не обмазалась бы этим по самые уши, мир был бы лучше.
C++ лучше. По сравнению с Node.js/Python/Java Go лучше
Go где-то на уровне питона по уродливости.Java и Node.js (это вообще-то платформа, писать можно но чем угодно, хоть typescript, хоть purescript, хоть rust) это просто совершенно другая лига. Со сройными консистентными API, достаточно хорошо задизайнеными абстрактными концептами и т.д..
В go из хорошего только каналы есть. Но как показывает практика, ни один серьезный код не обходится без мьютексов и всего того, что go обещал похоронить.
Это какой-то рак индустрии, на равне с javascript-ом.
nodejs под капотом однопоточный. И по сравнению с Го ждёт память как не в себя.
Java сложная и избыточна в той сфере, где применяется go.> ни один серьезный код не обходится без мьютексов и всего того, что go обещал похоронить.
Мьютиксы можно реализовать на уровне синтаксиса. Или использовать инструменты из пакета sync, мьютикс там кстати тоже есть.
> Это какой-то рак индустрии, на равне с javascript-ом.
Это не рак, это ещё один инструмент созданный решать конкретные задачи.
Зайди в любой магазин инструментов и ты увидишь как часто появляются новые механизмы и инструменты. Так же и в программировании.
У тебя есть кувалда и молоток, чем будешь пилить дерево?
> Это не рак, это ещё один инструмент созданный решать конкретные задачи.Рак это не болезнь, это еще один вид клеток, выполняющих конкретную функцию.
Единственная задача Go — позволить тысячам людей, научившихся в if-else писать код, который все-таки делает что-то полезное.
С этой задачей Go, конечно, справился, но выиграли ли от этого кто-то, кроме гугла — вот вопрос.
Ну может еще парочка говноконторок, типа intuit.Если бы да кабы в жизни не работает, но все-таки, очень хотелось бы, чтоб раст появился раньше, чем Go, чтоб эта фабрика макарон, которую называют языком, так и осталась в недрах гугла.
>nodejs под капотом однопоточный"под капотом" конкретно nodejs не однопоточный
Не, гугель просто заколебся тем что питоннетормозит!!!111 и устал сервера покупать. Поэтому решил устроить питоняшам экстерминатус.
Мне этот язык не нравится, чисто с админской стороны.Есть, например, небольшая программка на Go. Небольшая - зависимостей 10-15. Вопрос, который меня убил - как ее собрать в пакет?
Изучив то что было на тот момент в Go 1.14 по вытягиванию зависимостей, я был в ужасе.
Получается, что чтобы собрать программу текст которой содержит внешние зависимости от других библиотек, мне нужно... скачать их из какого-попало гитхаба/гитлаба и прочего.В гитхабе оно привязывается к тегу ну или бранчу... не важно. Главное что признаком нужной версии в конечном итоге является хэш коммита. НО! Пакетный менеджер Go видит тег, а не хеш. То есть теоретически если программа prog1 версии 0.1.0 требует библиотеку lib1 версии 1.0.4, то 1.0.4 будет тегом, который разработчики lib1 могут поменять.
Видимо программистов на Go не учили что такое "релиз" и, типа, это нормально зацепиться зависимостью на какой-то бранч в который в конечном итоге могут закоммитить и что-то поломать. И вот эта байда по всему Go.
Fedora, например, решает проблему так:
1. Написать спек для каждой библиотеки, от которой зависит программа так, чтобы результирующий SRPM проверял не только тег, но и хэш коммита
2. Писать спек rpm который будет тянуть код для сборки программы не из git, а из специально оформленных SRPM-пакетов с кодом зависимостей.В этой схеме получается, что есть тьма-тьмущая пакетов, которые используются только как зависимости, но отдельно не собираются. Каждый из них нужно сопровождать, отслеживая факт "фикса", когда разрабы поменяли либы, поменяли тег или когда приложение затребовало другую версию в связи с обновлением. Кроме того надо тянуть в репозиторий зоопарк из версий одной и той же либы.
Судя по обсуждениям и объяснениям, RedHat решил себе столько работы придумать, потому что не уверен в том, что завтра, послезавтра или через 5 лет программа из репозитория соберется, если у нее есть внешние бесконтрольные зависимости. Debian, как я понял из новостей про kubernetes решил что "и так сойдет", но я не проверял, это не точно.
Просто если дать Go-компилятору волю, он именно в инет на git полезет за своими зависимостями. Какие-то идеи по надежному сопровождению, гарантии, повторяемость сборки летят псу под хвост, если не обмазаться сотнями SRPM-ок на Go... с одной стороны. С другой стороны, работы на пустом месте оно создаёт так много, что лучше программы на Go просто не поставлять ни в составе дистров, ни в собственных корпоративных репозиториях. Только бинарно, построив отдельную специфичную для Go систему сборки и тестирования.
У питона, например, таких проблем нет, потому что питоновское барахло имеет релиз.
Если у вас на предприятии кто-то хочет писать на Go программу, которую нужно сопровождать Вам, постарайтесь донести до менеджмента, что наличие кода на Go увеличивает нагрузку на техподдержку. Микросервисы в кубиках пусть пишут, но не больше. Благо, с ними девопсы мучаются в отдельном CI/CD, а не техподдержка.
Особенно интересно собирать RPM для программы на Go в Fedora Copr. Перед этим нужно собрать нужные для компиляции зависимости, но ещё перед этим нужно собрать вторые зависимости для компиляции первых зависимостей.
Так не нужно запускать go get -u и не будет вам обновлений на зависимости.
Ну а вообще да если исходить из необходимости опакечивания то нужен отдельный тулинг для этого. Увы и ах, тулинг написанный под си тут не очень подходит из коробки
> Если у вас на предприятии кто-то хочет писать на Go программу, которую нужно сопровождать Вам, постарайтесь донести до менеджмента, что наличие кода на Go увеличивает нагрузку на техподдержку. Микросервисы в кубиках пусть пишут, но не больше. Благо, с ними девопсы мучаются в отдельном CI/CD, а не техподдержка.После секса с python 2/3 у нас на предприятии поднялся вопрос на какую платформу мигрировать окончательно чтобы больше не получать проблемы, простои и убытки. Нужно было выбрать максимально надёжный язык, гибкий, предсказуемый и не подкидывающий неожиданностей ЯП. Выбрали perl5 и ни разу не пожалели об этом. Чуть изучив XS стало ясно что на perl вообще можно сделать все что нужно и как того требуется. В обнимку с XS и Си мы смогли легко подцепиться к драйверам оборудования исходников которых производитель никогда не даст. Ну а то насколько "каквамугодно" позволяет perl разворачивать проекты - это фантастика. Раньше perl использовался только для админских задач, а теперь на нём строится весь dataflow в бизнессе.
PS: Как допилим проект и выйдем на закрытие задач по бизнесу - буду настаивать на хороший донат для perl. Он определенно заслуживает это!
Чёт котолампа.
Я имею в виду даже не котолампа, а копипаста. Я уже видел это именно в таком набросном изложении.
> Я имею в виду даже не котолампа, а копипаста.Логическая нестыковка по контексту. Следовательно, либо сообщения #88 и #89 писались разными анонимами, либо плоховато в голове у анона.
Не знаю что вы и где видели, но вот вам реальный "котоламповый" кусок кода из error.xsh :
MODULE = DriverIO PACKAGE = DriverIO::Error# комбинированный код+ошибка
U32 RawCode(arg)
U32 arg;
CODE:
RETVAL = raw_error_code(arg);
OUTPUT:
RETVAL# xs_error_code set XS_ERROR_CODE_FLAG
void SetXSErrorCode(arg)
U32 arg;
CODE:
set_xs_error_code(arg);AV* GetCode()
INIT:
AV* av = newAV();
SV* flags = newSVuv(get_error_code_flags());
SV* code = newSVuv(error_code_no_flags(0));
CODE:
av_push(av, flags);
av_push(av, code);
RETVAL = av;
OUTPUT:
RETVALU32 Success()
CODE:
RETVAL = test_success();
OUTPUT:
RETVALU32 IsDriverError()
CODE:
RETVAL = test_driver_error();
OUTPUT:
RETVALU32 IsXSError()
CODE:
RETVAL = !test_driver_error();
OUTPUT:
RETVAL
XS и развертывание - это как раз минусы перла. Особенно в последние годы упала стабильность интерфейса XS.
Даже в PHP API для написания расширений намного проще, чем XS.
Сам язык медленный. Далеко не все происходит в сишной части. Не такой тормоз, как питон, но все равно.Если подобного плана языки сравнивать, у Lua и развертывание, и написание биндингов проще даже не в разы - на порядок. За счет JIT можно писать производительный код даже прямо на языке.
Что там у перла упало в последние годы ?
Откройте для себя `go mod vendor`. Нормальные проекты, написанные на Go, собираются без лазанья в интернет за зависимостями, т.к. все нужные зависимости уже заботливо сложены в репозитории в папку `vendor` с помощью `go mod vendor`. См., например, https://github.com/VictoriaMetrics/VictoriaMetrics/ .
Только хотел написать, что мешает сделать локальный срез необходимых репозиториев?
>> Пакетный менеджер Go видит тег, а не хешбалабол-неосилятор. Как скажешь так и будет. Хоть тег, хоть хеш коммита.
Еще один не осилил, но критикует.Принцип тут ровно такой же, как и везде - если ты не разработчик, не дергай обновление зависимостей по сети. Читать про go mod vendor.
Ничего такого специфичного в системе сборки go нет, от всяких там gradle принципиально не отличается. А поставлять внутри предприятия конечно надо бинари, собранные на собственном билд-сервере.
> Видимо программистов на Go не учили что такое "релиз" и, типа, это
> нормально зацепиться зависимостью на какой-то бранч в который в конечном итоге
> могут закоммитить и что-то поломать. И вот эта байда по всему
> Go.Вы сейчас какую-то откровенную фигню написали. Посмотрите вот сюда:
> golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad // indirectЗдесь ВООБЩЕ нет никаких тегов. Дата коммита с точностью до микросекунды и хэш от коммита.
"Какой-то бранч"?))) Ну ка, пример в студию, как вы сможете зацепить бранч НЕ МАСТЕР?)) Ой, простите.. НЕ ПРАЙМЕРИ))Прижде чем постить абсолютно неправильное понимание пакетного менеджера в го и демонстрировать свою безграмотность -- поговорите хотя бы с джуниуром для приличия.
> Ну ка, пример в студию, как вы сможете зацепить бранч НЕ МАСТЕР?А по хешу коммита разве нельзя?
>> Ну ка, пример в студию, как вы сможете зацепить бранч НЕ МАСТЕР?
> А по хешу коммита разве нельзя?Нет, нельзя, если не указана ветка репы. Но если программист сам себе стреляет в ногу -- тут никакой доктор не поможет. Более того, я бы на месте доктора и не стал бы помогать.
>Микросервисы в кубиках пусть пишут, но не больше.Так а больше и не надо. Весь продакшен давно в кубике. Контейнер крутится - лавеха мутится.
Go это ЯП для смузидевочек с розовыми волосами
Не всем же быть бородатыми однимами в растянутых свитерах с аленями :)Я на Go написал TCP сервер с TCP клиентом передающий кадры через TCP сокет за вечер не напрягаясь.
>передающий кадрысегменты
Вообще я графические кадры передавал
> Вообще я графические кадры передавала зачем тогда акцентировать на TCP?
Просто свой протокол
вау, этот чел передал тсп за вечер, сума сойти, сила го !
> вау, этот чел передал тсп за вечер, сума сойти, сила го !да неее, просто не однозначно выразился, как следствие - появления дополнительных вопросов для ясности.
А теперь сохрани эти кадры в mysql
а я на с++ тоже самое за 20 минут
...а возни было больше с чтением и шифрованием кадров изображения. Я для демо проекта RSA реализовал.
Хотя C++ мне всё равно нравится больше
C++ это урод от мира ЯП, хуже него только раст
Раст лучше, продвинутее.
Продвинутее в убогости и я об этом
Как раз это таки про раст. Самое девочко-розово-френдли коммюнити. Но я, кстати, не записывал бы это в недостаток. Некоторые из этих девочек легко запихнут за пояс матерых свитероносцев, щеголяющих доскональным знанеим плюсов. Ну и что, что ноги не бреют?
А че кресты то сразу? Go каким боков пересекается с десктопом или системным софтом? Это язычок для написания микросервисов, так что сравнивать гоу правильнее с вебней типа шафра и жабы, но те конечно более общие ЯП
> А че кресты то сразу? Go каким боков пересекается с десктопом или
> системным софтом? Это язычок для написания микросервисов, так что сравнивать гоу
> правильнее с вебней типа шафра и жабы, но те конечно более
> общие ЯПМоя десктопная софтина на Go с тобой полностью не согласна. Чушь написал не подумав.
Кресты -- убожество.
> Go каким боков пересекается с десктопом или системным софтом?Так его же изначально сам гугл вроде как и позиционировал как "системный ЯП". Вебня на гошке - это побочный эффект, хотя гошка на сервере явно выглядит лучше, чем какой-нибудь пайтон.
Go был бы нормальным, если бы не сpал в ~/go и ~/.cache/go-build
Открой для себя GOPATH хотя бы
Ты не в теме. И совсем не понял проблему.
> Go был бы нормальным, если бы не сpал в ~/go и ~/.cache/go-buildПути выставлять и go cashe clean не пробовал, чудик?
Так это, rm -fr где там эти go, в /usr/bin через судо если что. Нафиг в систему тянешь всякую парашу.
Так решаются 98% проблем с исходниками Go:#!/bin/sh
set -eux
: "${KUMA_GIT_REPO:=https://github.com/kumahq/kuma.git}"
: "${KUMA_GIT_REV:=1.0.7}"tmpdir=$(mktemp -d -t "kuma-git-${KUMA_GIT_REV}-XXXXXX")
trap 'rm -rf "$tmpdir"' EXITgit clone --depth 1 --branch "${KUMA_GIT_REV}" "${KUMA_GIT_REPO}" "$tmpdir/kuma-${KUMA_GIT_REV}"
tar -cvJf "kuma_${KUMA_GIT_REV}.orig.tar.xz" -C "$tmpdir" \
--exclude '.*' \
"kuma-${KUMA_GIT_REV}"cd "$tmpdir/kuma-${KUMA_GIT_REV}"
go mod vendor -v
cd -tar -cvJf "kuma_${KUMA_GIT_REV}.orig-vendor.tar.xz" -C "$tmpdir/kuma-${KUMA_GIT_REV}" \
--exclude '.*' \
--strip-components=1 \
"vendor"
Почему не 100%? Потомучто там ещё JS & Yarn и нагенеренные файлы Go.
> Отмечается, что 96% разработчиков уже перешли на новую систему модулей.Другими словами 24 уже перешли, а 25й еще нет.
> import _ "embed"Если бы я даже на прошлой работе такое придумал меня бы расстреляли как минимум.
"Кому как, конечно, но я бы не стал" (с)
>> import _ "embed"
> Если бы я даже на прошлой работе такое придумал меня бы расстреляли
> как минимум.
> "Кому как, конечно, но я бы не стал" (с)1) Тебя никто не заставляет.
2) Куча пакетов с десятками килолайков на гитхабе именно так себя инициализируют. Например, небеизвестный goql.
Уже лет 7 на гошке пишу, после с++ - это просто радость.
При этом языке проще, а зп выше.
Опять все стерли. Обострение прогрессирует. Может к доктору уже пока не поздно? Еще чуть-чуть - и вспомнить не сможете что такое каменты и как их удалять.
Я серьезно. Мне самому-то уже лет дохрена, а я работал с программистами после инсульта. Ужасная штука. Лучше не шутить.
Давай я тебе по существу отвечу раз уж.
Гошка - гуано. Ниже мой камент про монгу, плюс немного собственного опыта. И даже если бы все поделки на го не жрали память как не в себя (уверен, где-то есть волшебные настройки, но пока не могу понять где, впрочем, уже ненужно), все равно воротит от синтаксиса. Для меня самое логичное обяснение гошкиному хайпу это то, что Пайк, при всем уважении, набрал кредитов и ипотеку впридачу, вот и вынужден симулировать бурную деятельность в гугле. Видосы с плюшевыми куклами для совсем уж целевой аудитории в том числе.
Я вернулся к плюсам. После питона, го, и прочего - радость просто неимоверная.
Память течет из-за кривых рук и не знания языка.
Ну у меня память в гошке не течет и расходуется слабо, в сравнении со всякими пхп и питонами, так вообще копейки.
Синтаксис языка божественен, его не любить можно только пока не начал писать, через три месяца работы на нем я понял, что нашел язык мечты и только дженериков не хватает...
А успех объясняется просто: gc, компилируемый, удобная многопоточность, кроссплатформенный, низкий порог входа, быстрая разработка (time to market ниже), активно развивается.
В Python всё объекты и в этом проблема когда, к примеру, строк тьма. Поэтому ацкие тормоза и аллокатор память жрет. Python не плох для консольных небольших утилит.
хайп вокруг го объясняется только тем, что за ним гугель стоит.
> ... И даже если бы все поделки на го не жрали память
> как не в себя (уверен, где-то есть волшебные настройки, но пока
> не могу понять где, впрочем, уже ненужно), ...Go жрёт память?!.... Сходил сейчас проверил -- не жрёт. Дальше можно не читать.
Ах да: тебе инструмент нужен от кривых рук? pprof! Пользуйся на здоровье.
После гошечки я обратно на питон не хочу. А от С++ с самого начала тошнило.
> Go жрёт память?!.... Сходил сейчас проверилТочно, оно добавляет памяти, вот было 4 гига, теперь 5, еще позапускаю чтоб стало 16 гигов и на апгрейде съекономлю.
Кстати! Кстати, пацаны, тока что вспомнил - ведь mongoimport на гошке, а я им недавно пользовался и вот что получается. Импорт бэкапа размером 3.5 гига отжирает ровно столько же гигов оперативки. Я демо-аплаенс виртуалбоксовский делал чтоб клиент заценил у себя на локалхосте все прелести нашего супермегапродукта. Четыре гига оперативы для виртуалки вполне хватало и для mongodb, и для мегасистемы, и еще свободно полтора гига оставалось. Но для cpaных монговских тулзов на гошке, тупо чтобы импортнуть базу, понадобилось еще подключить своп 8 гиг. Я чесслово в тот момент позавидовал майэскюэльшикам. А мне еще по плану делать импорт данных за месяц, а не за два дня как в данном случае. Сколько оперативы жрать будет? Очкую заранее.
В курсе вас держать не буду, есть более важные дела.
>Я чесслово в тот момент позавидовал майэскюэльшикама че тут завидовать, там ваще беда с версией 5.7, при банальном mysqldump с удаленного сервера, mysql сервер начинает отжирать память и не высвобождать, через пару дней таких бекапов и свопа нет, а дальше самизнаетечто. На 5.6 такого не замечал. Кто сталкивался?
Расскажите пожалста, как кривые руки автора утилиты (который на любой файл решил делать ReadAll) делают язык плохим?
Тсс, он не понимает, что это разное!
Это же просто хейтер, ему только поводы нужны.
Рассказываю: плохой язык притягивает к себе кривые руки.
> Рассказываю: плохой язык притягивает к себе кривые руки.Эк вы ... смело ... о Божественных Плюсах и Великой Сишечке высказались!
Столкнулся с тем что моя программа на go выполняется относительно медленно, посмотрел профилировщиком и увидел что 90% времени занимает crypto/sha256 чего по логике не должно бы быть. Кто нибудь знает что то про это? Буду искать аналогичную функцию но не из пакета crypto/sha256
Сам crypto/sha256 или выделение буферов памяти на каждую итерацию?
профилировщик пишет: crypto/sha256.block. у меня используется sha256 но ее доля мне кажется должна быть на уровне 0.1%, а тут жесточайшие тормоза и такой выхлоп профилировщика. попробую использовать альтернативную реализацию sha256
Какой-то бред sha256 вообще давно аппаратно ускоренное и уже давно есть в процах.
https://github.com/minio/sha256-simd
вот это посмотрите
да спасибо сам находил это, там оптимизация под AVX.
но дело в том что тормоза на проце который AVX не поддерживает.
буду писать модуль на С, у меня там криптография и лучше я в C заюзаю openssl
вообщем в результате даже на чистом C не такой уж большой выигрыш, я отказался от этого алгоритма и резко ускорился
> Столкнулся с тем что моя программа на go выполняется относительно медленно, посмотрел
> профилировщиком и увидел что 90% времени занимает crypto/sha256 чего по логике
> не должно бы быть. Кто нибудь знает что то про это?
> Буду искать аналогичную функцию но не из пакета crypto/sha256pprof запускать не пробовал?
Пробовал. Буду на C писать модуль для golang
Лучше модуль для Nim.
И получишь дикий оверхэд на сисколы и единое бутылочное горлышко для взаимодействия с С.
Никогда не понимал популярность этого языка. Производительность, как у Java, а фич даже меньше, чем в ней. Современные программисты уже настолько деградировали?
так Go упрощенная версия C:) C самый популярный не ООП язык.
> Производительность, как у Java,даже если это так. спорить не стану :) то написать на Java нужно намного больше кода чтобы реализовать тоже самое на Go или Python. но Python из-за GIL выполняет программы однопоточно. здесь Go выигрывает из-за простоты goroutines которые еще и намного легковеснее потоков. в Go любопытный планировщик. и памяти нужно намного меньше чем Java программам. есть версия для микроконтроллеров TinyGo
Сделать что-то "инфраструктурное" за приемлемый срок.
Те же поделия на java надо как-то сопровождать.
* Я даже слегка подозреваю, что… как бы сказать… каминг-аут с python 3.x проспонсировал google. Потому что "наглая рыжая морда".
> Никогда не понимал популярность этого языка. Производительность, как у Java, а фич
> даже меньше, чем в ней. Современные программисты уже настолько деградировали?Чо? Как у Java?))) Ну мне ты можешь не рассказывать, сынок. Ага. Ещё расскажи про конкурентность/мультипоточность, нативность и пожирание памяти))
А уж скорость написания кода и возможность читать его ( САМОЕ ГЛАВНОЕ) -- ой не в пользу второго языка. Молод ты ещё, не понимаешь сколько стоит труд разработчика.
Мань, у Go практически такая же производительно, а вот памяти он потребляет меньше, да. Ты лучше, прежде чем свои скобочки высирать, посмотрел бы бенчмарки.
> ... а вот памяти он потребляет
> меньше, да. Ты лучше, прежде чем свои скобочки высирать, посмотрел бы
> бенчмарки.Чушь на постном масле. Хотя бы на том основании, что Ява выделяет виртуальную память процессам в своей памяти. Управление локальной памятью относительно суперлокальной памяти процессов -- это явно дороже, чем прямая работа с кучей. Учи матчасть, сынок. Вот тебе небольшенький пруф:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
Разница в потребляемой памяти 12...16 раз. Если бы ты ко мне пришёл на собеседование -- я бы тебя не взял. Ни на Яву, ни на Го.
Ты мой пост вообще читал, дурачек? По твоей же ссылке видно, что скорость выполнения почти такая же, где-то го быстрее, где-то джава. А вот памяти го потребляет меньше, что я и написал в своем прошлом посте.
Ржу я над вами, собеседователями. Сидишь сам по себе, имеешь профит, но скучно же. В люди хочется. Бабло значения не имеет, но собеседователи такие все из себя такие, корчатся за недопущение тебя до должности которая стоит 30% того, что имеешь. Да ну вас всех в баню.
>корчатся за недопущение тебя до должностиКорчатся за недопущение твоих рученок до прода. Денег не жалко. Особенно если учитывать что собеседующие тех.спецы не имееют никакого отношения к денежным вопросам и размера твоей компенсации не знают вообще. Так что не льсти себе.
Когда гугл хром уже перепишут на go?
Это сколько терабайт памяти надо будет чтоб рендерить опеннет хотяб ? лол, максимум обвертка от сурла и тутже умирать чтоб память освободить, на большее "это" не способно.
> Когда гугл хром уже перепишут на go?ЗАЧЕМ? Что, больше не чем заняться? Ты ходилку с ржавым не перепутал, земляк?
google chrome на го, firefox на раст, не?
Goмики vs педеrustы, не?
Почитал разные ветки комментариев, стало грустно.Ну, товарищи, вряд ли кто-то говорит про "вытеснить Java" или "вытеснить Python" абстрактно, зачем такое вообще обсуждать. А вот с тем, что в качестве языка написания микросервисов Golang во многих случаях вполне себе теснит другие варианты, спорить уже давно невозможно. Это не "небольшой прирост производительности", на Go вы можете писать нагруженные сервисы, в отличие от Python. В топовых компаниях разработчики выбирают писать бэкенд на Go не от того, что никто Python не знает. И это ни в коем случае не наброс на Python, у языка просто другие области эффективного применения (привет, ML и DS). Не верится, что приходится такое проговаривать.
Побуду тут адвокатом дьявола немного. Дело не в том, что Go "обижают". Расстраивает не критика, которой вполне есть место и которую познавательно читать, а то, что на opennet обсуждение порой ведётся на уровне "devops-тулзов" и "вебнявых поделок".
Больше всего в комментариях писали про память.
https://blog.golang.org/go15gc - вот реклама сборщика мусора Golang, там же ссылка на совсем короткий доклад с GopherCon Рика Хадсона про сборку мусора, который интересно глянуть, даже если вы никогда не собираетесь писать на Go.
https://blog.plan99.net/modern-garbage-collection-911ef4f8bd... - а вот другой взгляд на вещи, с нормальной, адекватной критикой этой го-пропаганды. А не "ой, k8s - поделка, по мне так много памяти ест для таких задач".
Сборщик мусора у Golang изначально задумывался (и переписывался) именно исходя из идеологии обеспечения реалтаймовости. Пусть декларируемый разработчиками Go великий мировой "breakthrough" в построении GC звучит и явно громковато, но справедливо то, что именно они были наиболее успешны в вопросе минимизации длительности отдельных пауз.
И пусть пока куда чаще мы видим использование языка именно для "инфраструктурных" задач и для написания сервисов, перед нами всё же компилируемый язык вполне себе общего назначения. На Golang вы можете создавать не только нагруженные сервисы, но и реализовать СУБД или написать userspace-драйвер.
Очевидно, везде есть рамки адекватной применимости. И, да, в итоге в той же Фуксии Go оставили только в сетевом стеке - странно, что ненавистники языка не припомнили это, а просто "где-то слышали". Но надо понимать, что Go конкурирует в таком контексте с C, C++ и Rust, а не с Java или, тем более, Python.
Относительно недавно здесь же проскакивала новость по теме, сравнение производительности сетевого драйвера в вариантах на 10 языках программирования: https://www.opennet.dev/opennews/art.shtml?num=51475
Подытожу предельно скучным труизмом про то, что с Golang, как и с любым другим инструментом, нужно знать внутреннее устройство, чтобы уметь видеть преимущества языка и использовать их, понимать область применения решения, ну и не забывать о tradeoffs.
Нет, все-таки сишка - это круче гошки когда надо на минимальных ресурсах максимум отдачи. Пройденный этап для меня. Конечно, мнение субъективно, и, например, на серверах с минимумом 128GB оперативки я 10 лет не заморачивался с тем же mongorestore. Но как правильно сказал один чел, - дешевизна железа - это миф. И когда надо сделать рабочий вариант хренотени на минимальных ресурсах - вот тут-то и затык. А минимальные ресурсы - они повсеместно сейчас. Для кое-чего, если сумеете выжать из них нужное - будет профит. Ну вы поняли. Надеюсь.
>А минимальные ресурсы - они повсеместно сейчас. Для кое-чего, если сумеете выжать из них нужное - будет профитБанановые/снежные бантустаны в которых рабы пашут за копейки != повсеместно.
В странах первого мира затраты на разработку и поддержку многократно превышают затраты на железки. Именно поэтому создаются языки "с человеческим лицом", всязкие автоматизации, CI/CD, облака и прочее.
Вот в бантустанах - да, можно снять пару цехов старого завода, сделать говноремонт, посадить туда 300 писак на асме и сях, дать им в поддержку 15 бородатых админов которые будут вручную настраивать все с нуля и писать десятилетиями в овертаймы велосипеды на баше с перлом. И платить им всем копейки. Ну и самый дешевый чай в пакетиках не забыть в офис конечно же =).>серверах с минимумом 128GB оперативки я 10 лет не заморачивался с тем же mongorestore. Но как правильно сказал один чел, - дешевизна железа - это миф.
Ну так найми человека который перепишет mongorestore для тебя. И потом сравни сколько ты потратил на разработку и сколько бы ты потратил просто докинув памяти на сервер. Будешь приятно удивлен.
> В странах первого мира затраты на разработку и поддержку многократноУкраина, я еду, завали меня дешевыми железками и бесплатным электричеством !
"дешевый" и "дешевле" - это разные слова и про разное.Пора б тебе на старости лет это уже научиться понимать, а то так и останешься дешевкой.
Гоу захавывает мир
угу, все эти бессильные выс3.ы от копрораций потом назовут предсмертной гонкой лучших езыков программирофания. умора
ой умора, что ж тебе не зашел продукт Вирта? а жрешь выхлоп корпорации AT&T ?так вот проглотил один выхлоп корпорации, проглотишь и другие, и спасибо скажешь.
Это не вспышка на солнце, это знатно загорелось у любителя вирта с атэтэ и прочей копры ^_^
Розоволосые дефачки потекли... всьо C++ хана
https://fyne.io/ toolkit для Go GUI приложений