Представлен релиз языка программирования Go 1.21, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD...Подробнее: https://www.opennet.me/opennews/art.shtml?num=59570
> В утилите go обеспечена прямая и обратная совместимость с другими версиями языка Go, что позволяет использовать старый инструментарий для сборки нового кода и наоборот.Зачем это нужно? Почему бы каждый раз не переписывать код под новую версию?
> Зачем это нужно? Почему бы каждый раз не переписывать код под новую версию?Потому что хомячок - не удав.
>>> Новая семантика подразумевает создание для каждой итерации цикла отдельного экземпляра переменной, объявленной в цикле "for" при помощи оператора ":="Нормальные ЯП в шоке от кривости Go как следствие его фундаментальных проблем проектирования.
Роб Пайк всё отлично спроектировал. Получше чем тебя.
Вы писали что-нибудь кроме hello world на go? Я да. Язык полный треш. В нем на этапе проектирования решили не добавлять нормальные контейнеры данных вместо кастрированных слайсов, нормальную работу с объектами в памяти вместо этого рантайм сам решает где должна быть аллоцирована память в стеке и когда ее переносить в кучу. Для работы с системными библиотеками на си люди упариваются с пакетом unsafe/assume-no-moving-gc. По работе со слайсами половина stackoverflow забита не правильными ответами которые тупо падают на последнем элементе слайса, это тупая копипаста с пиар-статей "какой го простой". Рантайм паники если хочешь использовать библиотеки на рефлексии это у них норма. Не удивительно что Google сам против использования его в Фикусии ОС. Читайте статьи какого-нибудь Uber об их опыте использования Go таких проблем нет даже в C++, вместо этого авторы добавили data race detector в язык из-за тех же самых "фундаментальных проблем". Вы смотрели на рантайм го? М? Он весь на костылях из ассемблерных вставок и "unsafe" указателях, открыл рандомный go файл из src/runtime - весь обмазан вызовами panic(). Даже Nim выглядит куда более грамотно спроектированный и более безопасный язык тупо за счет своей компиляции в Си, жаль что туллинг и развитие у Nim слабое.
Эпический ... (С)To moderators: ... прогромизд. А не то что вы подумали :)
Частица «даже» в отношении Nim не уместна. Nim – весьма мощный эффективный удобный ЯП. Язык, который в ближайшие 4 года похоронит Python.
Уходим на java
Не пиши больше на Go, хорошо?
Нет, я буду дальше писать и ругаться
> Нормальные ЯПХотелось бы увидеть список нормальных ЯП
Zig, Malbolge, Objective C, Cobol, Emacs Lisp
Как насчет Visual Basic?
Любитель сишки открыл википедию. Давай свой код на малболге, поржом.
>Любитель сишкиFraktal eto ti?
Кстати, да, где этот казахстанский наркоман?
> Zig, Malbolge, Objective C, Cobol, Emacs Lispлол, что Objective C, что Emacs Lisp - отличные примеры того как делать НЕ надо
Лучше, тебе НЕ надо жырно вбрасывать тему про по нужность тех или иных языков.
В проде они где, кроме Cobola?-)
Они слишком хороши для того, чтобы на них писать :)
> Objective CСталкивался, на нём был самый трудным для понимания код в моей жизни. Даже на PHP самое сложное спагетти было относительно не сложно разбирать.
ADA!
Адын Эс унд Рефал.
Черепашка еще норм, не проблем со слайсами и локальными переменными.
Сможешь по пунктам расписать в чем кривость семантики го. Ладно, хотя бы 3 пункта?
Так ведь реально попахивает костылем: чтобы избежать проблем с замыканиями, нужно делать копии переменных циклов?
Ты бы хоть почитал для чего это было сделано(намеренно), а потом писал
А теперь намеренно это исправляют, всё по плану!
> Ты бы хоть почитал для чего это было сделано(намеренно), а потом писалДа это было сделано для решения тех самых "фундоментальных проблем" языка, с захватами данных по ссылке в одной из фундоментальной "рекламной" фиче Go `go func() {` https://www.uber.com/blog/data-race-patterns-in-go/
Это что-то из оперы когда американцы не понимают что такое метрическая система, смотрят на весь мир как на идиотов, но упорно делают по своему в _критических системах_.
Ну почитал: https://github.com/golang/go/wiki/LoopvarExperiment1) This test aims to check that all the test cases are even (they are not!), but it passes without GOEXPERIMENT=loopvar. The problem is that t.Parallel stops the closure and lets the loop continue, and then it runs all the closures in parallel when TestAllEvenBuggy returns. By the time the if statement in the closure executes, the loop is done, and v has its final iteration value, 6. All four subtests now continue executing in parallel, and they all check that 6 is even, instead of checking each of the test cases.
2) This kind of unintended sharing bug hits all Go programmers, whether they are just starting to learn Go or have been using it for a decade. Discussion of this problem is one of the earliest entries in the Go FAQ.
И даже их https://github.com/golang/go/wiki/CommonMistakes
Это все какие-то детские болячки тех, кто не понимает, как работают замыкания. Хотя этой статьей они сами по сути признают, что это не очень-то очевидно и "hits all Go programmers". И теперь они меняют семантику за счет дополнительных аллокаций, чтобы фиксить "латентные баги":
"However, in some cases, an extra allocation will be added. Sometimes, the extra allocation is inherent to fixing a latent bug."
Хотя и это не всегда:
"The vast majority of loops are unaffected. A loop only compiles differently if the loop variable has its address taken (&i) or is captured by a closure."
Т.е. компилятор теперь будет разбираться, где надо плодить копии, а где не надо. И все это может поломать старую совместимость (хотя у них там будут предпреждения, что нужно сходить и проверить).
Это ли не выглядит косяком в изначальном дизайне, который фиксится с помощью костылей?
Весь Go это тихий ужас для программистов на классических языках. От C,С++, C#, Java, того же Паскаля
> Нормальные ЯП в шоке от кривости Go как следствие его фундаментальных проблем проектирования.Сказал эксперт, который ни одного ЯП за свою жизнь не создал.
Совсем не аргумент. Возьми хоть ту же военную приемку. Вояки дали инженерам ТЗ, свои хотелки и пожелалки. Инженеры слепили какого-то горбыля. Отдали на тестирование военным. Военные проверили и говорят - г.вно. Инженеры такие: " - Вы за всю свою жизнь не создали ни одного автомата! Что вы вообще понимаете? Ай-я-яй, как вам не стыдно нас критиковать!" ("Сперва добейся", ага). То же самое можно о профессиональных водителях сказать - ведь они, заразы, в массе своей ни одного автомобиля не спроектировали с нуля, а мнение имеют - то ведро с гайками, а вон то - цаца. Что эти плебеи о себе возомнили?! Возвращаясь к тому же оружию (стрелковому) - иногда как _очень_ веский довод в рекламе нового образца заявляют, что он проектировался в тесном сотрудничестве с каким-нибудь очередным чемпионом мира по практической стрельбе (по твоему надо было: " - А нафик он такой нужен, он же до этого ни одного пистолета не сделал за свою жизнь! Что он там понимает, чтобы его мнение выслушивать")
Чтобы понять, что еда говно не нужно быть шеф-поваром
Абсолютно верно. Тоже офигиваю.
Отличная новость!
К сожалению практически перед релизом из maps выкинули Keys и Values из-за их неоптимальной имплементации. С другой стороны этих улучшений quality of life в го определенно не хватало, особенно после введения дженериков
Слежку за пользователями уже запилили?
Из коробки все есть.
Но стук усилился хоть ?
>Но стук усилился хотьПро расширение этих "свойств" умолчали исключительно из скромности.
Надо попробовать переписать на него свои питоно-скрипты. Отпишусь в следующей новости о результатах.
Тут никто никогда ни о чём не отписывается в следующей новости.
Следующей новости не существует - есть только текущая
На Nim не ты собирался переписывать свои питоноскрипты?
Свои питонячьи скрипты лучше переписать на Джульку или вообще на Фортран (современный достаточно неплох, кстати). Ну или, на крайняк на С++ или Rust, пока Mojo не вышел. Каждому делу - свой инструмент.
Завершить предложение переписать питоновские скрипты на C++ или Rust фразой "Каждому делу - свой инструмент" - это типа ирония такая?
Переписывай сразу на Rust. Чтобы потом два раза не переписывать.
Можешь не сообщать. Мы все уже знаем результат.
Не написали что язык безопасно работает с памятью.
Врут наверно
Безопасный только раст(Шучу не кидайтесь)
В чистом Си есть все инструменты чтобы писать безопасный код.
Также там есть инструменты, чтобы писать небезопасный код, который выглядит как безопасный.
лол, ничего безопасного: кругом указатели, включая nil, компилятор ничего не запрещает (по опыту говорю)
А ты по своему упыту не знал, что каркас языка спроетировал Роб Пайк и Кен Томпсон. Этож отцы юниксоиды.
А, вон оно што, Михалыч! Тады, да, безопастно.
> А ты по своему упыту не знал, что каркас языка спроетировал Роб Пайк и Кен Томпсон. Этож отцы юниксоиды.Знал. И не Томпсон, а Гризмер, но это вы на самом деле ничего не знаете (открыть вики - это далеко не знать, а я 7 лет уже на Go пишу, и знаю кто стандартную библиотеку писал).
Ну это самое главное ты молодец. Можешь смело валить джунов на собесах.
> кругом указателиА кто их везде в код суёт? Разработчики из Google?
>> кругом указатели
> А кто их везде в код суёт? Разработчики из Google?Все, включая гуглеров, да. Сам язык спроектирован под активное использование указателей. Справедливости ради: без включения unsafe указатели совсем не-сишные, они довольно беззубые (как по функционалу, так и по возможным граблям - например никакой арифметики указателей). Да и компилятор/линтеры/изкоробочный lsp неплохо улучшают ситуацию.
Указатели в гошке-это по сути аналог кошерных плюсовых ссылок,а не указателей, только имеющих свойство быть пустыми, что есть гуд. Этого свойства плюсовым ссылкам нехватает.
Это же не Rust. Так что - нефига.
Что лаконичного в синтаксисе? Сплошной бойлерплейт же, одна обработка ошибок чего стоит..
И кодогенерация на любой чих опять же
Типа ты в начале коммента задал вопрос. А уже во втором предложении сам на него ответил и тебе ещё что-то не понятно. Рили?
В моем понимании лаконично - значит очень кратко, ёмко но при этом читаемо описывать и ЧИТАТЬ какие-то высокие абстрактные конструкции. В этом плане любой бойлерплейт (ручной или сгенерированный - неважно) абсолютно противоречит такому пониманию. Потому и вопрос - где тут лаконичность? Для примера перл - максимально лаконичный(настолько что местами не читаем), питон уже гораздо лучше в этом плане. Максимально нелаконичным я бы назвал ассемблер. И гошка мне тут видится гораздо более близкой к последнему из-за длинных портянок. (При этом я не утверждаю что это плохо)
Ты абсолютно прав. И это именно что плохо. Потому что в асме или сишечке, зато что мы пишем бойлерплейт, мы получаем близость к железу и возможность писать очень быстрые программы. А что мы получаем в гошке? Медленные и жирные бинари с GC.
Типа бойлер плейт надо заменять магической функцией или наследованием 8-го уровня? Не надо так.
Да, пусть компилятор сам выводит и жует несущественный код(который при желании можно проверить) "Вкалывают роботы - счастлив человек". Да и бойлерплейт чаще всего тривиальный же - та же обработка ошибок могла бы решаться как в расте вопросиком для проброса наверх например.
PS: композиция предпочтительнее наследования.
Не было вопроса как надо или не надо. Утверждение что go - лаконичный из новости является не правдой.
Интересно, поведение v.1.13 , где была кооперативная многозадачность, вернули?
Или тут только синтаксис?
Она ни куда и не уходила. Там гибрид.
Я бариста, но уже установил Ubuntu, читаю opennet и хочу стать программистом. Говорят за программы на Go хорошо платят. Что скажете? Или есть какой-то более высокооплачиваемый язык? Не хотелось бы тратить время впустую
Cobol учи. На нëм куча всякого понаписано уже в отраслях, где платят хорошо, а подход "ща мы тут перепишем всë на очередном нескучном язычке" не катит,в том числе потому, что _пока_ стоит сильно дороже, чем нанять какого-нибудь дедушку лет под 70 со знанием cobol.Торопись, кол-во мест сильно ограничено ;)
Больше платят за более сложные языки долго закатываться. По цена/простота Go самый лучший язык. Если тебе срочно то пых или питон (найти вакансию проще платят меньше). С багажом другого языка перекатится проще. Имхо главное навык постоянно что-то прогать. Пофиг ваще на чём.
Фортран отличный язык. Кроет как бык овцу и С и Го по скорости. Всегда найдется работа в каком ни-будь НИИ.
Мне не нужна работа в каком-нибудь НИИ. Цель зарабатывать деньги. Не хочу через год упереться в стеклянный потолок 200-300 тысяч.
Ну если для тебя 300 низкий потолок, то надо идти на курсы. Длинные не нужно брать, лучше месяца на 2. Там научат всем современным технологиям и 300 будет далеко не предел.
Долларов, если курсы мои! Всего за 10% от этой суммы я готов их начитать - а за 15% уложусь в шесть недель! Гарантия трудоустройства при доплате ещё 5%
Только сейчас! Предложение ограничено!
Так тебе тогда в Манагеры и качать софт скиллы. Манагер он и бонус получает и долю иногда, и он не программирует. А прогер может получить только по башке, когда прод упал.
К сожалению сразу не получится. Сначала надо поработать программистом хотяб год. Потом можно будет стать начальником.
Нет. Надо идти в фаундеры. Манагер он крутится как белка в колесе надо и с заказчиком и с прогерами взаимодействовать. А фаундер только стрижет купоны и манагеров пинает.
Не-не-не, "по башке" - это тяпляпс, который "ниудержал", ж*порукость кодеров - константа бытия и все понимают, что "с долбанутых спросу нет"(Ц)
Манагер найдет за что дать прогеру по башке иногда просто чтобы потешить своё ЧСВ иногда за дело. Это его манагера единственное место приложение способностей дать кому-нибудь по башке.
> Манагер найдет за что дать прогеру по башке иногда просто чтобы потешить
> своё ЧСВ иногда за дело. Это его манагера единственное место приложение
> способностей дать кому-нибудь по башке.Так то ж психотерапия! Не водку ж по вечерам хлебать...
И в каком-же НИИ требуется фортран?-)))
Это конфиденциальная информация! А вообще hh в помощь.
CERN
Навскидку - Институт Океанологии, Прогноз погоды (не знаю как они там называются), физические расчеты, в том числе, ядерные (Дубна), гидро-газодинамика (ЦАГИ) и т.д.
Этот вопрос не стоит задавать на опеннете. Тут отделить сарказм от правды сможет только очень искушённый обитатель здешнего сообщества :D
Типа ты не раскрыл сарказма задающего вопрос? Что ты тут тогда делаешь?
> Типа ты не раскрыл сарказма задающего вопрос? Что ты тут тогда делаешь?Это вопрос вполне может и не быть сарказмом. Часто тонкий сарказм неотличим от искренности.
Бери сразу Rust, пока конкуренция низкая.
Вари дальше кофеек, радуйся тому что имеешь и не бери дурного в голову.
Конкуренции опасаешься?
> функции min и max;
> clear для удаления/обнуления;
> экспериментальная (?!) поддержка новой семантики в циклах;
> cmp - функции для сравнений упорядоченных значений;И этот язык используют в проде О_о
Воистину, миром бизнеса правит только скорость, но не качество и надёжность. Си ничему не научил.
Даже не скорость. Где тут скорость -- как обезьяна набивать шаблонные конструкции? Всё проще: правит гугл. Какой язык он захотел продавить, на таком и пишут.Кстати, после всяких копилотов тезис про обезьяну и шаблонные конструкции теряет актуальность...
Тут dart'у стало грустно...
Дарт это flutter. Посмотри статистику сколько приложений на flutter сейчас в google play (очень много)
> Дарт это flutter. Посмотри статистику сколько приложений на flutter сейчас в google
> play (очень много)Гм? И сколько? В процентах? Позиционировалось-то оно в качестве "замены js" - а вышло... "Не коня в шампанском искупаем - так хоть хомячка пивом обольём"
Да, такая вот скорость со сборщиком мусора и нулевыми указателями..
Никакой раст по уровню шизы в секте не стоит рядом с го.
Об чём речь? Я знаю только что они книги сжигали в одной из презентаций. После перестал следить за успехами этих парней. Что-то поинтересней выкинули?
Это такая сектанская вера растофанатиков, что у го тоже есть секта и что там тоже шиза. Не обращай внимания.
А можно как-то для инициализации стурктур сделать что-то что бы не было зоопарка: new, make и т.д. Так же раздражает append можно это тоже переработать?
Разработчики Го в мэййлисте тусуются, напиши туда с примерами что не так и как по-твоему надо. Если годное предложение, примут. На опеннете жаловаться бесполезно, Пайк его не читает, инфа сотка.
Любой ЯП, навязывающий правила форматирования исходников, идёт лесом. Ибо этот факт яркий маркер каши в голове у разработчиков.
Наоборот, каша у тех, кто придят в проект или наоборот начиная новый проект, приносит свои неповторимые стандарты форматирования и именования. А для любителей венгерской нотации в 21-м веке в аду уже работает отдельная сковородка с антипригарным покрытием.
Ты задом своим читаешь? Речь идёт о навязывании со стороны языка, а не об отсутствии общих соглашений вообще.
Как по мне так это единственное из адекватного что есть в гошке. Проще один раз установить более-менее вменяемый стандарт и всем ему следовать, вместо пустой траты времени на споры. Язык про продуктивность по задумке. Хотя повсеместные ручные отступы полей пробелами нивелирует и это.
Всем не понимающим почему Go такой настоятельно советую послушать в ютубе доклад трёхлетней давности: Почему Golang такой странный / Филипп Кулин (Дремучий лес), на канале: Golang Channel.
Автор странный вот и Го странный и чтобы это понять не нужно смотреть никакие ролики ибо ничего кроме отмазки своей "странности" там быть не может.
Язык дизайнили чтобы удобно было писать и поддерживать конпелятор. Об удобстве конечных разработчиков почти не думали - главное чтобы сишники поскорее влились и могли копипастить сервисы
Ты наверное в Яндексе работаешь, там любят пвтаться объяснять почему плохо это хорошо.
О, ему в этом далеко до Google, Microsoft, Apple. Эти фору дадут, да не одну.
"Синтаксис Go основан на привычных элементах языка Си" - не знаю, что там наркоманы увидели Си подобного. Тогда и у Паскаля с Си много общего.)))
Наркоман то к раз ты, раз не знаешь кто такой Кен Томпсон.