Представлен релиз языка программирования Go 1.22, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60564
Посмотрел на синтаксис Go, и что-то я не заметил каких-то схожестей с СиЧто именно там "Синтаксис Go основан на привычных элементах языка Си"?
Синтаксис Go - это кошмарная солянка синтаксисов кучи языков.
А у раста?
Rust самобытный и не Си-подобный от слова ни разу и не заявлялся таким. На него с Си-подобных языков не перепрыгнешь так просто. Зато он реально нормально работает.
У Go же в свю очередь вакханалия такая, что прикладные структуры данных реализованы на уровне языка и между списками и массивами синтаксис неадекватно плавает. Это дикость. Как это вообще имеет право на существование!?
От случая к случаю у него синтаксис то от С/Java, то от Delphi/Pascal, то от JS, то от Python, как будто его придумали обдолбаные наркоманы. Я понимаю когда язык существует не одно десятилетие и обрастает "обоснованным" синтаксическим сахаром. А тут как будто из других языков нахватали на старте, и существует это лишь благодаря хорошему компилятору и библиотекам с других языков.
По моему опыту на rust после С очень легко писать.
Угу, то первого серьезного втыкалова с владением и разного рода временами жизни так оно и есть. А потом приходит понимание, что слово Rust и слова "Легко писать" не совсем соответствуют действительности.
Опять, еще один не удосужился при написании кода запомнить что же за код он пишет. Ну иди на JS пиши, если человек не осилил на пару правил на расте выучить то и на С++ такому индивиду тем более делать нечего, а человеку лучше на пенсию пойти отдыхать, его же работу чатгпт отдать, все надежней будет. И человек счастлив и не обременен и компания не получит кучу багов.
> Опять, еще один не удосужился при написании кода запомнить что же за
> код он пишет. Ну иди на JS пиши, если человек
> не осилил на пару правил на расте выучить то и
> на С++ такому индивиду тем более делать нечего, а человеку лучше
> на пенсию пойти отдыхать, его же работу чатгпт отдать, все надежней
> будет. И человек счастлив и не обременен и компания не получит
> кучу багов.О, а вот и местные иксперды нарисовались... Прям чувствуется глубочайшее знание вопроса и огромный практический опыт...
По моему опыту, после С на чём угодно легко писать. Но зачем?
Экономия времени и денег?
Это чьих?
Наших!
Про деньги можно было бы заикаться, если бы на нём были вакансии, а так он даже в топ-30 емнип не входит
>Зато он реально нормально работает.Да, но его ниша примерно нигде. где-то заменит си и то хорошо
> ... библиотекам с других языков.Гон. Там все свое, от компилятора и кончая библиотеками
А у раста сразу несколько синтаксисов: 2015, 2018, 2021.
В чем принципиальная разница между синтаксисом 2018 и 2021?
В том что 2 сорта и кто-то в этом даже разбирается.
Вот тут есть список изменений https://doc.rust-lang.org/edition-guide/introduction.html
Не знаю, я начал с 2021. На сайте написано всё https://doc.rust-lang.org/stable/edition-guide/
Рекомендую глянуть доклад: Почему Golang такой странный / Филипп Кулин
Веселый доклад.Выходит люди всю жизнь занимались херней, последовательно перебегая из корпорации в корпорацию, и в результате получился такой вот челмедведосвин среди языков программирования, которого еще и удалось продать гуглу.
"Вам не завидно, Балаганов? Мне завидно"
> всю жизнь занимались хернейПо вашему получается что в то время все занимались хернёй.
Потому что тогда не было толком устоявшейся парадигмы типа "Си подобного языка".В то время только только перестали использовать перфокарты.
Вы доклад-то смотрели ? Посмотрите, он интересный.Примеры на языке alef весьма понравились, вот так и надо было, но потом кого-то похоже покусал паскалист, а гуглу еще и понадобилось облегчить переучивание питономаKак, в результате получилось какое-то франкенштейново чудовище.
> Синтаксис Go - это кошмарная солянка синтаксисов кучи языков.Сдается мне, что вы не понимаете разницы между синтаксисом и семантикой.
Большинство языков, - с синтаксисом С
Я не упоминал семантику, если ещё ещё затронуть это вообще ******.
на структуры там много чего завязано, надо ее обьявить, а дальше использовать, со стандартными типами переменных работать тяжело, конвертить строки в массив байтов и обратно укантрапупишься, да и вообще половина кода это приведение типов
А вторая половина - проверки err на nil.
> конвертить строки в массив байтовДали сишнику строки, а он их в массив сконвертировал, за пределы вышел и нулевой указатель разыменовал.
- фигурные скобки для блоков
- * и & для работы с указателями
- Структуры и само слово struct
- Условие цикла for из трёх частейКонечно, такое есть и в других языках, и это как раз и есть c-likе элементы, подсмотренные у Си.
В общем же это извиняющийся кивок про схожесть с Си уже давно пора выбросить; сейчас не 2009 год, чтобы описывая новый на тот момент язык Го, смягчать подачу робким "а вот на Си похоже-с, да…". Язык и экосистема уже взрослые и могут кое-где уже и дверь ногой открывать не стесняясь.
:=
необязательная ;заменили скобками begin end, writeln на println, шоб уж совсем на паскаль не походить
ну и всё настолько типизированно, шо даже для указателей указывают тип, шо еще паскалистее чем сам паскаль.
>Посмотрел на синтаксис Go, и что-то я не заметил каких-то схожестей с СиНу как же? Всё, где блоки кода скобочками "{ }", теперь считается основанным на привычных элементах языка Си.
возврат ошибок.
В учебнике авторы говорят, что база - С, но очень много элементов: от модулей и ООП - взято из языков Вирта.
> В учебнике авторы говорят, что база - С, но очень много элементов: от модулей и ООП - взято из языков Вирта.В Го завезли ООП? Вы уверены что книжка от авторов?
Ещё один, думающий, что ООП — это «как в джаве» или «как в крестах».
> Ещё один, думающий, что ООП — это «как в джаве» или «как в крестах».Ещё один, думающий, что знает что я думаю... одни блин телепаты :)
ООП, именно в том виде как у крестов и джавы, в Го - нет. Нет классов. Нет кострукторов.
Но есть возможность самому делать ООП через структуры, а это значит, что язык, сам по себе не предоставляет классических элементов ООП как часть языка
конструктор это просто функция
> конструктор это просто функцияНе просто функция, а функция которая вызывается только раз при инициализации класса, а классов в Го языке как language construct - нет (И я очень этому даже рад, чем меньше абстракций, тем ближе к сущности). Единственный "констуктор" в Го - это функция "init".
Но в тоже время возможности языка вполне себе позволяют реализовывать собсвенный "ООП" если надо через структуры (что вообщем-то точно так же и делается во "взрослых" ООП)
От ранних, в рассказе ООП было вначале столько же, сколько и последующих С
> Что именно там "Синтаксис Go основан на привычных элементах языка Си"?Это стандартный базворд, так же как джава и сишарп "имеют привычный похожий на си синтаксис".
Менеджерам нужно, иначе они не примут ЯП в прод никогда, ну и реклама дыркошлёпам, типо чувак тут то-же только лучше...
Во, во, из какого пальца высосали похожесть Go на С неизвестно.
А если какой-нибудь индус забросит проект , от которого зависят другие проекты . То мой хелоуворд не соберется ?
Go - это как недопитон, только со статической типизацией.
Go - это как Google !
Google go со своим Go! И подальше, если можно.
Go - это как
>>> Go on home British Soldiers Go on home
>>> Have you got no fucking homes of your own
>>> For 800 years we've fought you without fear
>>> And we will fight you for 800 more
>>> ...
> А если какой-нибудь индус забросит проект , от которого зависят другие проекты . То мой хелоуворд не соберется ?А что это ты вообще в программирование суёшься? Это их бизнес (ты даже хело ворд не одолел)
Соберется, пока проект не выпилили
А если выпилили или нашли cve 15/10 в мертвом проекте - будь бобр искать форк или сам форкать, да. Но это всегда так и было, на самом то деле
До сих пор базовые проблемы фиксят. Этот язык ещё на стадии альфы или уже релиз?
Это было сделано специально в угоду скорости. На практике оказалось что это создаёт больше проблем.
Вот да, достало, когда это изменение называют "фиксом", да ещё и "фиксом ошибки". Создатели языка прекрасно понимали достоинства и недостатки обоих вариантов, и сознательно выбрали один из них. Ну... оказалось, что большинство программистов в XXI веке уже ожидают как умолчание другой (в XX было ещё не так). Потом долго думали, стоит ли менять поведение с учётом обещаний совместимости в ветке 1.x. Ну... решили, что стоит. Решение не моё, оценивать не берусь. Но называть это "фиксом ошибки", тем самым провоцируя неверное понимание, что вот, дескать, в коде компилятора ошиблись, неправильно реализовали -- не стоит, по-моему.Для сравнения, как это было в Джулии. Там аналогичный сдвиг семантики произошёл в версии 0.сколько-то (забыл подробности). В версии 1.0 уже было по-современному, и так и остаётся. Но оказалось, что некоторым всё-таки нужна старая семантика (Джулия -- это в том числе и про скорость, а старая быстрее), и пришлось добавить возможность опционально вернуться на старое. Оно, конечно, не совсем ключевое слово outer, которое иногда ключевое, а иногда и нет -- сомнительное решение, но, опять же, не мне судить. К совместимости после выхода версии 1.0 обе команды относятся серьёзно, молодцы, респект и уважуха... Но, если всё-таки НАДО сломать -- ну, выкручиваются, как могут.
Байка на закуску: а уже после перехода на новую семантику, в одной из последующих бет её сломали уже случайно (то есть, не сознательным решением вернуться на старую, а именно что проморгали). В данном конкретном случае та пара глаз из миллиона, которая заметила и отрепортила, была моя. Ну да, это работает. :-)
Вряд ли что-то в этом недоязыке было сделано в угоду скорости, достаточно взглянуть на docker и kubernetes
> Вряд ли что-то в этом недоязыке было сделано в угоду скорости, достаточно
> взглянуть на docker и kubernetes11 Bravo
Дружище. Ты напиши сначала аналог kubernetes или docker на твоём любимом языке, а там посмотрим.
> Решена давняя проблема с циклами "for", приводившая при вызове сопрограмм (goroutine) к совместному использованию переменных цикла в разных итерациях.Открыли ящик Пандоры по изменению ошибок допущенных при проектирование языка. Это, конкретно, я поддерживаю, но интересно, что будет следующим.
Язык всё больше и больше мне кажется мертворождённым.
икспертиза опеннет
Так-то он прав, но у гулага бесконечные деньги (в частности, на рекламу) и живо оно будет до тех пор пока надо гулагу.
или специально для забавы вставляет, чтобы реакцией наслаждаться
Вы на нём пишете или как те из стаи "активистов" по жалобам которых отменяют концерты? :-D
Я пытался писать на нём. Но лучше любой другой язык, чем этот винегрет из пельменей с ананасами.
Не понятно только для кого это было проблемой.
Вполне логичное поведение в подобной среде
Ящик Пандоры они открыли, зафорсив стиль скобок K&R с левыми объяснениями "потому что гладиолус и транслятор быстроходный, и точки с запятой автоматом, чо пристали". У Вирта все языки с быстрыми трансляторами, но им побоку в строчку идет BEGIN или с новой строки.
Чтобы собрать хелоуворд , сколько гигабайт надо ?
Так-же как на джаве, может даже немного экономнее.
У меня однажды на сервере пропала директория с джава . С тех пор я не могу его использовать .
0.058
> Чтобы собрать хелоуворд , сколько гигабайт надо ?Для это не гигабайты нужны (можно даже на STM32 со 128кб), для это мозги нужны
Go означает go buy another HDD
> позволяет добиться производительности, сопоставимой с программами на языке СиВ рекламных роликах не принято сравнивать достоинства товара A и товара B другой фирмы .
> позволяет добиться производительности, сопоставимой с программами на языке Си**при вызове библиотек, написанных на Си
XD
почему код:
values := []string{"a", "b", "c"}
for _, v := range values {
go func() {
fmt.Println(v)
done <- true
}()
}
будет выводить abc а не cba? нет же гарантий порядка выполнения горутин. просто теперь не будет повторений.
> values := []string{"a", "b", "c"}Такое сложно читать человеку , он устает . Зачем пустые скобки ? Чтобы показать что это массив ? Человеку это зачем знать ? Зачем кавычки ? Непонятно , что a b c это не цифры , а текст ?
> go func() {Это изобретения велосипедов .
Человек должен понять программу , просто прочитав ее . Вы же читаете этот текст .
Просто очень сложно такое читать
values := []string{"a", "b", "c"} for _, v := range values {go func() {fmt.Println(v) done <- true}()}
> Зачем кавычки ? Непонятно , что a b c это не цифры , а текст ?Чтобы понять что это текст, а не другие переменные.
Но в целом синтаксис ИМХО омерзителен. Конечно и на других языках можно писать стольже отвратительно выглядящий код но там надо стараться, а тут это судя по всему норма.
Да, в GoLang этот синтаксис = норма.
>Непонятно , что a b c это не цифры , а текст ?а если текст совпадет с зарезевированным словом? изобретать костыли?
а какое-нибудь а b c 0xFF d это что?мне например наоборот понравилась игогошечка, т.к. не предполагает никаких поползновений и разночтений, но без пихоновских извращений в виде форматирования блоков пробельными сиволами
Пробелы вместо скобок в Питоне, это интересный замысел. Не вижу в этом никакого извращения. Не хами.
>Такое сложно читать человеку , он устаетНу так пишите на перле, там будет просто map { print $_, "\n" } qw/a b c/
>Человек должен понять программу , просто прочитав ее . Вы же читаете этот текст
Реально ваш язык, присмотритесь.
На перле будет
say for qw/a b c/;
say работает по дефолту хоть в какой-нибудь версии перла?
И у вас не запускается рутина, как в гошном варианте. map с блоком ближе к этой логике.
> Просто очень сложно такое читатьНу попробуй научиться программировать и хотя бы пару _разных_ языков выучить, перестанет быть сложно очень быстро.
Я знаю пять или шесть и для меня пихон (99% кодов) и голанг (от 99% программистов на голанге, начинавших с курсов пихона) по-прежнему нечитаемы.
Кому как. Я устаю гадать во всех этих недомолвках питанорубижабаскрипта. А тут -- всё понятно.
Порядок выполнения не гарантируется. Одна горутина может быть завершена быстрей другой, даже если была запущена позже.
Но порядок запуска определенный.
В твоем примере будет АБС выводится в любом случае, так как порядок запуска и порядок выполнения тут совпадет.
Порядок запуска тоже не определён. Горутины сначала в одну из очередей попадают, прежде чем запуститься, и какая когда запустится не знает никто, кроме планировщика.
Не знал. Тогда не прав
Всё правильно, порядок выполнения горутин не гарантируется. Однако, у тебя настолько примитивный код, что пока цикл дойдёт до запуска следующей горутины, предыдущая успевает отработать. Если бы там делалось что-то кроме вызова print на локалхосте, порядок вывода менялся бы между запусками.
это не у меня а в статье, которая вводит в заблуждение
Кто такой Горутин? Много раз эту фамилию уже видел, но так и не понял что это за мужик. Причём иногда о нем пишут как о женщине - Горутина.
Эту штуку под именем корутина Никлаус Вирт в языке Modula-2 придумал.
>почему код:
>[...]
>будет выводить abc а не cba? нет же гарантий порядка выполнения горутин. просто теперь не будет повторений.потому что местные IT-ЫгспЁрды посчитали неважной для __точного__ перевода фразу:
"the following code will print “a”, “b”, and “c” in some order"
оне жи в английском тоже ЫгспЁрды! :)
Суть изменения тут в том, что выведутся все 3 символа, а не три раза "с", как было до 1.22. Только в этом отличие. А порядок выведенных символов всё так же практически рандомный.
> для перебора значений с 0 до 9 теперь можно использовать цикл "for i := range 10 {...}".Удобный синтаксис для off by 1 ошибок.
А как должно быть?for i := 0 .. 9? Это гораздо более прямой путь к off by 1.
Такой ощущение, что синтаксис for стараются сделать максимально непохожим ни на что другое и получается настолько криво, насколько это вообще возможно.
Цикл for в Go это просто сборная солянка всех возможных конструкций циклов.
Он может быть и сишным (start; cond; end) и while'ом, и loop'ом (безусловным), и ренжом аля питоновский.
Похоже на итераторы луашные
Мне тоже сразу на ум пришло: в lua это 30 лет назад уже было
Язык го как тестовая площадка для экспериментов с конструкциями оператора for
На Go после появления дженериков вполне можно писать, т.к. это убрало самые вопиющие моменты копипасты. Когда обработку ошибок сделают хотя бы в стиле Swift, тогда вообще будет норм. После джавы с ее annotation-driven development код на Go дебажить одинаково комфортно что у себя в проекте, что в кишках гошных фреймворков - он что там, что там формата "палка-веревка".
Кому как. Жители бангладешских деревень, которые не умеют читать и считают только используя пальцы рук и ног, плохо дженерики понимают. Понимают плохо, но используют охотно. В результате ПО на языках, в которых есть свои варианты шаблонов/обобщений, типично превращаются в обезьяну с гранатой.
Поэтому, на мой взгляд, добавление обобщений в Го было крайне спорным решением.
> Кому как. Жители бангладешских деревень, которые не умеют читать и считают только используя пальцы рук и ногПочему же тогда они везде?! В Оракле, Гугле и конечно же в Майкрософте! И живут почему-то не в деревнях, а в Issaquah, Mountain View, Redwood... и получают четверть миллиона в год зеленью
Где Вы, о великий "белий каста" ? Где ваш гениальный код?!
Мир ждет вас!!!
Ты удивишься, но в деревнях тоже. В огромных количествах. Мой гениальный код где надо, но даже я дженериков побаиваюсь. Они -- нет. Поэтому, лучше, когда дженериков нет вообще. Натыкать проверок типа того, что кладёшь и что берёшь в/из коллекции, из снипетов куда проще и сюрпризов меньше.
> Мой гениальный код где надоЯ почему-то даже не сомневался :)))
на языках, в которых шаблоны называют дженериками, в принципе невозможно писать"Я не похож на все-ех, посмотрите на меня-а, я читал модные книжки оре-лли, ***тесь с нашей уникальной гениальной терминологией" - любой автор такого языка
Понятно, что ты тролль, но для тех, кто случайно прочитает твой комментарий, я напишу, что шаблоны - это compile-time фича, а дженерики - рантайм.
а какая мне разница?
Пруф? В nim дженерики - compile-time. Эксперты опеннета такие эксперты
Что за ним такой? Очередной овнокотлин, только теперь для шарпа?
> но для тех, кто случайно прочитает твой комментарий, я напишу, что шаблоны - это compile-time фича, а дженерики - рантайм.На самом деле ровно наоборот. Именно поэтому дженерики в Java сделаны с type erasure и в рантайме узнать конкретный дженерик невозможно. Фактически джавовские дженерики - это синтаксический сахар, заменяющий явное преобразование типов. Дженерики - это недоделанные шаблоны и это действительно плохо.
Ну потому что это не шаблоны, а именно обобщения. С цпп шаблон в кучу классов превращается, а той же Жабе или Го -- нет. Там это просто сахар для проверки типобезопасности коллекций и всё. Причём такой сахар с овнецом немного.
тогда C# сильно тебя удивит ))там это тоже типа Generic, но работает как обычный шаблон (по твоей терминологии)
и в нем и Generic и Template это около и рядом одного и того же
Чем меня это должно удивить? В Жабе и Шарпе обобщений не было. Жаба, чтобы сохранить обратную совместимость, обобщения реализовала только на уровне компиляции, а МС на обратную совместимость забили и сделали через привычные шаблоны. Как в Го не знаю. Присобачивать обобщения к языку, который обобщений до этого не имел, всегда процесс не безболезненный.
> Чем меня это должно удивить? В Жабе и Шарпе обобщений не было.
> Жаба, чтобы сохранить обратную совместимость, обобщения реализовала только на уровне компиляции,
> а МС на обратную совместимость забили и сделали через привычные шаблоны.
> Как в Го не знаю. Присобачивать обобщения к языку, который обобщений
> до этого не имел, всегда процесс не безболезненный.я не знаю что ты называешь обобщениями, но шарпе шаблоны называются генериками / Generic
про это и было мной написано
Офигеть, чудик, а автобус называется бас, а рыба -- фиш. Нефига себе, открытие. Generic это Обобщение. В данном случае Обобщение типа. Ну хочешь называть то, что ты не понимаешь, тем, что ты не понимаешь -- кто ж тебе запретит. Хотя, напишу жалобу в минобр -- может, запретят в конце концов.
Ну вот твой шарп. В нём шаблоны названы дженериками. Чтоб по-модному. А в моде тогда была Жаба. В Жабе -- дженерики. Уровня компиляции.
> Ну вот твой шарп. В нём шаблоны названы дженериками. Чтоб по-модному. А
> в моде тогда была Жаба. В Жабе -- дженерики. Уровня компиляции.генерики появилось в шарпе в 2005 году, когда смузиеов еще не было, как и другой модной хрени
просто такое название для одного и того синтаксического сахара, детали реализации уже вторичны
Ну фиг знает. Эти самые Дженерики в Жабе именно, что сахар уровня написания кода. Машина о них ничего не знает, в байткоде их нет. В Жабе какой-нибудь вызов new Shit<String> в коде не сделает тебе новый класс Shit<String>, а потом его экземпляр, а просто сделает очередной экземпляр Shit. В Шарпе же, насколько я понимаю, вызов Обобщения (т.е. когда ты его уже типизуешь) плодит настоящий новый класс на стадии компиляции, ну т.е. это такой классический Шаблон.
Ну как не было, меня уже к 2005 от смузи мутило, а хлебать их начала не раньше 2002 точно.
Язык где вместо решения фундаментальных проблем в виде race condition вам предлагают race detector ... фу.C#/.NET лучше, хоть и кушает для своей работы больше ОЗУ и ЦПУ в рантайме, но это дело поправимо, сейчас улучшают Ahead of Time компиляцию в нативный код, правда проблемы с рефлексией в этом деле еще не решили, но все будет.
Да-да, жава тоже уже скоро хорошей станет, с минуты на минуту.
Вообще я бы посомневался что есть уровень Си. Временами и жава код быстрее.
И вроде бы все круто, но похоже западные языки будут обосабливаться в своем маня-мирке. Они уже давно европу миром зовут, так что ждать омталось недолго.
А вот жабокод уже заворачивают и отечественным проектам денег не дают.
Кто их знает что там очередной гомосек решит как пондасрать.
А как обстоят дела с посконно-православными языками?
Для большинства приблуд даже .NET FW достаточно за глаза, остальное решается распараллеливанием. Если уж что и продвигать, то C# - последний вменяемый язык, да и тот после 8.0 уродуют.
В шарпе есть произвольные анонимные классы?
А что в Го нет каких-нибудь механизмов явной сериализации исполнения? Ну там синхры какие-нибудь или что-то в этом духе?
> А что в Го нет каких-нибудь механизмов явной сериализации исполнения? Ну там
> синхры какие-нибудь или что-то в этом духе?В Го есть смачные каналы, мютексы, атомарные переменные, Группы Ожиданй... он задумывался изначально на мультипоточность и конкурентное выполненение, - это где он блестит
> А что в Го нет каких-нибудь механизмов явной сериализации исполнения? Ну там
> синхры какие-нибудь или что-то в этом духе?конечно есть, но язык же позиционируется как пишешь go myFuncName() и все чики пуки из коробки, люди так и делают, а в итоге все не так просто.
Ты конечно же дашь линк на https://go.dev/чего-то-там где о так "позиционируется"? Ты же не жалкий сосунишка сосок?>люди так и делают, а в итоге все не так просто.
Не волнуйся всех этих ^^^^^ у нас уже AI-шкой меняют. Она уже на их уровне, в период 5-10 лет станет лучше их.
Так то в java Excelsior JET уже давно AOT с рефлексией запилили, без каких либо ограничений. Вот нынешний GraalVM без полноценной рефлексии какая-то несерьезная игрушка, печально что и C# все так же
Как вообще кому-то могла прийти мысль импортировать библиотеки прямо из интернета? Каждый import github.com/... - это дополнительная точка отказа.
Точка отказа у тебя в голове все зависимости должны быть в папке vendor.
Он просто не знает, как работает импорт в Гоу, что такое модули и тд. Бесполезно спорить с ИКСпертом на оупеннет, лет 15 тут еще водились адекватные, которые владели знаниями в обсуждаемых темах. Теперь смузихлебы, которые знают 5+ ЯП и 15+ фреймворков, но толком ни в одном не разобравшиеся, поучают всех остальных. АйТи, которое мы заслужили.
один ты умный в белом пальто стоишь красивый. спасибо, что ты есть
Да это даже не смузихлебы, это на 80% просто тролли сидят. У них и гит не нужен, и винда - самая лучшая ОС. В основном тупо копипастят одну и ту же фигню чтобы развести флейм.
Судя по тому что ты написал, троллем тут являешься именно ты. А гит действительно не нужен и винда стоит на 99% компов (те что не маки), в отличии от ляликса с его 0.01%.
Миллионы мух не могут ошибаться.Ваш Билли
Не чуди. Пункт 3 известен всем: https://www.toptal.com/go/4-go-language-criticisms
А еще репозиторий может закрыться.
При чем тут третьесторонний репозиторий к функционалу ипорта модулей? Для этого в Гоу есть средства, как решить эту проблему. И это касется любого ЯП, когда используются третьесторонний зависимости.
Я, конечно, тоже go не люблю, но ты смотрел ваще на что именно линк кидаешь? Там какое-то небинарное оно с розовыми волосами с очень плохим английским и которое работало только в вебе.
Потому что в нынешнем айти засилье гуманитариев, которые даже слов таких не знают, как "точки отказа". Из-за этого и браузеры стали жрать как топовые игры AAA. Инженеров нет. Вернее есть, но в военке и прочей робототехнике с AI теперь тусуются.
Пришёл однажды скрам мастер к нам в айти отдел на завод. Мы айтишники люди современные — всё понимали, но вот мужики из цеха невзлюбили его. Одевался странно, голосок писклявый, много слов иностранных. Стояли как-то в очереди за обедом в столовой — так он подслушал мужиков и начал прямо там обучать их скраму. Петрович весь покраснел, усами зашевелил — как сейчас помню. Мы от греха подальше старались сделать вид что он не с нами. Все обошлось, но было не по себе что Петрович глаз с него не сводил весь обед. На утро следующего дня пролетаю проходную в аккурат 7:57 чтобы не оштрафовали. Захожу в комнату, а скрам мастера нашего нет. Думаю вот же не повезло, придётся писать объяснительную за опоздание и штраф этот вычтут из получки. Его всё нет и нет, думали заболел серьёзно. Но в таких ситуациях принято ставить начальника в известность. Прошло около месяца и только тогда мы узнали что он получил травму головы когда с работы шёл. Настолько тяжёлую что начал бредить скрамом. Каждому врачу предлагал работать по скраму и получать сертификаты какие-то. А мы говорили ему не ходить в кроссовках зимой. Скользко ведь, гололёд. Не знаю его дальнейшей судьбы. Просто вспомнилось что-то.
Человек ЫЗкуЗствффа - шёл бы ты на сайты где про розовых поней или "отнаскрывают!" ... ну вот нахрена твоя дристня на техническом [когда то] сайте?
> Каждый import github.com/... - это дополнительная точка отказа.О-о-о! Есть еще богатыри, пишущие абсолютно все с нуля и не использующие никакие библиотеки...
Майкрософт с Гуглом скоро падут от такой мощи
Одно дело, когда это хранилище, из которого пакет не пропадет (например, pip, nuget). И другое - чей-то личный репозиторий, который автор завтра решит закрыть.
> Одно дело, когда это хранилище, из которого пакет не пропадет (например, pip,
> nuget). И другое - чей-то личный репозиторий, который автор завтра решит
> закрыть.Господа как обычно, догадки выдают за правду...
go мod vendor
и стороняя библиотека у тебя на диске, лежит в той же директории где и проект, который ты можешь компилить в оффлайне, под водой и на самолете (у которго нет вайфай). А на счет овнер исчез/закрыл, для это го держит дубликты всех опубликованных пакеджей, как раз на этот случай чтоб не изчезали и еще чтоб верифицировать достоверность, что пакет кто-то не увел с целью внедрить дерьмецо
Верно, но вставлю замечание.
В случае переезда разработчика на новый ПК, сервер сборки и тп. При закрытом гите, проект уже не соберется. Поэтому, лучше скачивать с гита архив, чтобы был резерв.
Проект соберется, для этого достаточно знать азы работы с зависомстями и произвести replace:
go mod edit -replace github.com/репозиторий/мой-потерянный-подуль=/home/user/project/мой-потерянный-подульПоэтому ИКСперты продолжайте критиковать скобочки в синтаксисе ЯП
> Поэтому, лучше скачивать с гита архив, чтобы был резерв.Да, обычно все что в вендор, еще паралельно можно гит-нуть, тогда сохранятся еще все версии сторонних пакетов. Очень удобно откатывать назад, для устареших ОС-ей
О боже гуманитарий, не позорься.
Никто не писал про всё писать с нуля. тут пишут, что в проекте импортить с гитхаба модули, это возможные будущие проблемы.
Умные ребята, которая не пьют смузи как ты, качают модули в папку вендор и уже оттуда импортят и по надобности обновляют.
Плюс в том, что нет минусов. Даже если гитхаб закроется, твой проект не умрет.
Ну хорошо, ты скачал пакет себе. Опубликовал свой код. Посторонний разработчик решил сделать форк или просто собрать на своей машине, а пакета в инете уже нет. Как с этим решать? Публиковать также код всех пакетов?
> Посторонний разработчик решил сделать форк или просто собрать на своей машине, а пакета в
> инете уже нет. Как с этим решать?В Го такого не получится, даже если овнер исчез, пакет останется закэшированным/сохраненным в Го прокси репозитарии
> Публиковать также код всех пакетов?
Вы про форк слышали?
Форк, конечно, спасает, но при использовании тех же pip и nuget разработчику не нужно форкать пакеты) Их соранность гарантируется самим хранилищем.
> Форк, конечно, спасает, но при использовании тех же pip и nuget разработчику
> не нужно форкать пакеты) Их соранность гарантируется самим хранилищем.Вы через слово читаете??? Аналог ваших питонов и дотнетов - это ГоПрокси
Ну не вполне же. Даже из самого названия (прокси) следует, что он кеширует пакеты просто на время, скорее для удобства доступа и безо всяких гарантий. На их сайте написано: "Why did a previously available module become unavailable in the mirror? - proxy.golang.org does not save all modules forever".
Хотя это уже лучше, чем ничего.
> кеширует пакеты просто на время, скорее для удобства доступа и безо всяких гарантий.Вы чуть, чуть - не дочитали.
> There are a number of reasons for this, but one reason is if proxy.golang.org is not able to **detect a suitable license**.
Просто следует закону. Не хочет хозяин шарить, - это его право, иначе - хранит
> О боже гуманитарий, не позорься.
> Никто не писал про всё писать с нуля. тут пишут, что в
> проекте импортить с гитхаба модули, это возможные будущие проблемы.О гений телепатический, в Го пакеты качаются не с гитхаба, а по умолчанию с прокси Го репозитория, чтоб пакеты "не изчезали" и не были инфицированны
> Умные ребята, которая не пьют смузи как ты,
Да смузи они полезны, а вот бухло тебя до хорошего точно не доведет
> качают модули в папку вендор и уже оттуда импортят и по надобности обновляют.
Блястнул уровнем не-знаий, "молодец", "Умные ребята..." :)
Про go mod vendor не слышал, вручную качаешь?> Плюс в том, что нет минусов. Даже если гитхаб закроется, твой проект не умрет.
Все верно, для этого и есть: go mod vendor
и еще есть репозитарий Го, который хранит все копии пакетов с гитхаба, как раз на случай "диверсий" :)
> Все верно, для этого и есть: go mod vendor
> и еще есть репозитарий Го, который хранит все копии пакетов с гитхаба, как раз на случай "диверсий" :)Хз, выглядит ненадежно. Слишком много непонятных зависимостей.
> Хз, выглядит ненадежно.Что именно - не надежно ? Все без проблем может работать как в оффлайне, так и со свежаком
> Слишком много непонятных зависимостей.
Для это документация есть, чтоб избавиться он непонятностей и зависимостей
>> качают модули в папку вендор и уже оттуда импортят и по надобности обновляют.
> Блястнул уровнем не-знаий, "молодец", "Умные ребята..." :)
> Про go mod vendor не слышал, вручную качаешь?го мод вендор качает в своей локальный "репозитарий"
Я же вручную качаю в свой "репозитарий", который лежит там где мне удобно.>> Плюс в том, что нет минусов. Даже если гитхаб закроется, твой проект не умрет.
> Все верно, для этого и есть: go mod vendorИ возращаемся к первокомментарию. Чел говорит что указывать гитхаб в импортах это лищняя точка отказа.
В чем он не прав?
Получается прав.
> и еще есть репозитарий Го, который хранит все копии пакетов с гитхаба,
> как раз на случай "диверсий" :)И?
> В чем он не прав?В том, что так же как и Вы - не в теме. Но усиленно продолжаете спорить...
То есть аргументов нет. Что и ожидалось от нуба
Абсолютно солидарен. Но если тебе 20, ты работаешь в гугле и с тебя просят "инновации", вот такие вот идеи и приходят в голову! :)) Инженерное позорище, согласен. Как и nuget в мире .NET
Про то что си подобный пишут, а про то что нельзя выйти за границы буфера не пишут.
это же не раст
мимо. cm: CVE-2021-31162
Потому что можно https://github.com/advisories/GHSA-ppp9-7jff-5vj2
> Потому что можно https://github.com/advisories/GHSA-ppp9-7jff-5vj2То ли дело в раст: std::fs::remove_dir_all
и бум, в гонщики: CVE-2022-21658
Или Vec::from_iter, - дважды освободил и в CVE-2021-31162
Справедливости ради, TOCTOU уязвимости - это гонка процессов, а не тредов. Ну в том смысле, что Rust может и защитит от ошибок кривого наваливания данных в shared коллекции из разных потоков, но вот что у него кривая реализация в std::fs - это логическая ошибка (некорректная работа с системными вызовами), от которых этот язык не защищает никак. Вся его задача - перенос "лучших практик" из C++ по работе с памятью в компайл-тайм, чтобы минимизировать человеческий фактор. В остальном просто нескучный синтаксис.
Google компания делает дела. когда-то про нее много писали что "корпорация зла". но нет, она делает добрые дела. полезные. вот язык обновила.так что, не надо ее ругать.
кто там главный в компании? Брин и еще второй. они делают полезное дело. обновляют язык.
Брин, перелогинься и не позорься! :)))) "делает дела"... ты в 3 классе что ли? Выражаешься как косноязычный троечник. Это уже не говоря о смысле твоих похвал недоязыку от недокомпании.
Жаль gomobile забросили
Было слишком мало скобочек, но это исправляют.
Отличная новость!
> Решена давняя проблема с циклами "for"Выглядит так как будто язык всё ещё переживает детские болезни.
Ага, а языку уже 15 лет при этом.
С обработкой ошибок по прежнему беда?
Их концептуально не хотят завозить.
Пользовался языком пару лет. Неплохой инструмент для написания маленьких сетевых программ. Но в какой то момент прозрел и нафиг послал этот язык со своими идиотскими правилами синтаксиса. Мол, ему не нравится что есть неиспользованная переменная. Ну сейчас в данный момент не используется, надо будет, потом удалим, сейчас голова забита другим. Это конечно хорошо, что типа для оптимизации. Но в активной фазе разработки как же эта фигня ставит палки в колеса. Я вообще молчу про фигурные скобки. Это вообще чья то субьективщина стала частью языка.
> Мол, ему не нравится что есть неиспользованная переменная._ = some
>сейчас в данный момент не используется, надо будет, потом удалим, сейчас голова забита другим. Это конечно хорошоПример хода мысли, приводящего к появлению и постоянному увеличению количества го-кода в проекте. Нет, это не ускоряет разработку. Вы делаете работу по три-четыре раза в результате.
Любой статический язык без ADT - игрушка для хеловордов.
Ну вот у меня ровно обратное мнение. ADT слишком сложно для уверенного понимания. А без понимания его применение приводит к опасным ошибкам. Лучше многословно, но предельно понятно на каждом шаге даже дэбилу.
ADT ? Может, AST ?
Ну я о проблемах с пониманием и адекватным применением именно ADT, т.е. абстрактных типов и шаблонов построения типов.
А им и надо, чтобы язык был такой черной магией, чтобы не программу писать, а что угодно подводящее к ее написанию, но никогда не приводящее. Подмена деятельности ее имитацией.
Ты про Абстрактный Тип Данных? Чо ниасилил сортировку?
Возможно имелось в виду Алгебраические типы данных?
ADT - это прошлый век, сейчас любой язык без TRJ - игрушка для хеллоувротов. А на подходе еще BKFHW - еще круче будет
Ничего привычного из С даже близко нет в Go. Откуда это глупость постоянно берется ?!
https://go.dev/doc/faq#ancestors"Go is mostly in the C family (basic syntax), with significant input from the Pascal/Modula/Oberon family (declarations, packages)"
Тупизация, структуры, указатели, блоки кода фигурными скобками, видимость внутри блока. Все это очень даже сишное.