LINUX.ORG.RU

Go 1.7

 


1

5

Выпущена версия 1.7 языка программирования Go.

Наиболее значительные изменения:

  • Новый бэкенд компилятора, использующий промежуточный код на базе SSA (Static Single Assignment).
  • В фронтенде компилятора задействован новый более компактный формат экспортируемых данных, что с более эффективной обработкой деклараций импортов позволило значительно ускорить время компиляции и уменьшить размер исполняемых файлов на 20–30%.
  • Программы должны выполняться немного быстрее благодаря улучшениям в сборщике мусора и оптимизациям в стандартной библиотеке.
  • Реализован порт для Linux на IBM z Systems (s390x).
  • В состав стандартной библиотеки включён пакет context.
  • Добавлена поддержка суб-тестов и суб-бенчмарков.
  • Удалена поддержка переменной окружения GO15VENDOREXPERIMENT.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Ответ на: Пишите на C++. от anonymous

Ребята, что вам всё неймётся? Пишите на XML и не мучайтесь. Не можете выучить XML, сходите на курсы по нему, чтобы научиться на нём конфигурировать. Новомодные маркапы с приветом из 70-х годов никому не нужны и никогда ни в одной серьёзной конторе использоваться не будут, и соответственно нормальных денег вы за такое «программирование» не получите. Бросайте заниматься ерундой, забывайте Markdown и начинайте маркапить на XML, который полнофункциональный, самодостаточный и никуда не уйдёт в обозримом будущем в отличие от так называемых языков-однодневок. Вот вам добрый совет.

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

Кстати, а что в восьмидесятые было передним краем индустрии?

лиспы и смолтоки

Смолток породил волну ООП (что сделалось главным направлением мейнстрима 80-х), Лисп — волну динамических языков (это уже мейнстрим 90-х).

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

Ну да, ну да, если не считать последовательного применения KISS-подхода с уклоном в минимализм в проектировании языков программирования.

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

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

Я все надеюсь, что авторы нима в него притащили вообще ВСЁ, чтобы потм отсечь лишнее.

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

Я спрашивал про индустрию. Промышленное использование. Что тогда на лиспе и смолтоке было в крупном продакшене?

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

Что тогда на лиспе и смолтоке было в крупном продавшее?

man Symbolics

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

Ты сказал, что Go - язык общего назначения. Я посчитал это заявление спорным и в поддержку привёл опыт чуваков, которые пилят asciinema. Бенчмарки тут вообще не причём.

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

Я все надеюсь, что авторы нима в него притащили вообще ВСЁ, чтобы потм отсечь лишнее.

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

Оставь надежду, всяк туда входящий.

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

Ты сказал, что Go - язык общего назначения. Я посчитал это заявление спорным и в поддержку привёл опыт чуваков, которые пилят asciinema. Бенчмарки тут вообще не причём.

Из статьи по ссылке (это про Го): I think it’s fair to say it’s C 2.0

Я тоже так думаю, кстати.

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

Подход, который показал свою несостоятельность

Ну, справедливости ради, «не использовался в продакшене»≠«не нужен», но это скажем детали и оффтоп. А онтоп в том, что сабж, то есть язык Go, спроективан во многом by Wirth way. И если его популярность будет расти, а минимализм останется, значит «несостоятельность» отменяется.

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

Почему, это же не перестало быть актуальным? Тем более не перестало быть блокером чтобы писать код на Go для многих людей

vertexua ★★★☆☆ ()
Ответ на: комментарий от be_nt_all

в Модуле-3 были дженерики, исключения и ООП.

Ну никакого отношения к дедушке Вирту эта разработка DEC не имела

Я знаю. Поэтому меня и удивило упомнинание Модулы-3 рядом с мифическими заветами дедушки.

Нет никаких заветов дедушки Вирта.

Ну да, ну да, если не считать последовательного применения KISS-подхода с уклоном в минимализм

Вирт изобрел KISS? Или он единственный, кто догадался применить его к языкам программирования? Вроде нет.

Go — самое оно и есть

Go не минимален, он примитивен.

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

Go не минимален, он примитивен.

Си тоже примитивен. Но Го все-таки «немного» поудобнее Си.

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

Go не минимален, он примитивен.

Си тоже примитивен.

Да. Но он разработан 45 лет назад и в свое время считался полноценным ЯВУ. Так же и Go - будь он разработан в 80-х, он был бы минималистичным. Но сейчас 2016 год.

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

Go не минимален, он примитивен.

Ок. Давайте назовём это примитивизмом. Но если выяснится, что для многих задач такого примитивного языка, как будто сделанного «дедушкой Виртом» (к его разработкам подобное утверждение также применимо) окажется востребованным, язык, похоже, будет жить и набирать популярность. Похоже — к этому идёт.

Вирт изобрел KISS? Или он единственный, кто догадался применить его к языкам программирования? Вроде нет.

Настолько последовательно, чтобы не боятся, что результат его работы назовут примитивным — это мало кто умеет (при этом какую-никакую популярность примитивные языки Вирта завоёвывали, пример Go тем более перед глазами). И да, напомню историю, Никлаус Вирт начал свой крестовый поход за простоту языков программирования году так в 1967 (гуглить Algol-W/Niklaus Wirth versus Algol-68). Большинства из нас ещё в проекте не было (меня тоже, мой отец в 1967 в рядах советской армии осваивал в городе Берлине один из танков, которому суждено было через год въехать в Прагу).

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

Да, сейчас 2016 год, но кода на с/c++ - мегатонны. Устраивает ли такая ситуация? Нет, пора это менять. Смогут ли ява/питон/яваскрипт/c# заменить си? Однозначно нет. Сможет ли Го заменить си? С большой долей вероятности - да, сможет. Ты в какую-то свою академическую норку забился и бурчишь там. На чем твоя операционка и браузер написаны? На хаскеле/д/от чего ты там еще фанатеешь? Нет. Они на с/с++.

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

Так же и Go - будь он разработан в 80-х, он был бы минималистичным. Но сейчас 2016 год.

В 80-х (по крайней мере в 1985, а не 1981 году), без «полноценного ООП», он бы считался урезанным (ценность обобщённого программирования тогда уже/ещё для широких программистких масс не была очевидна). Но сейчас, всё верно, 2016 год. Времена изменились.

be_nt_all ()
Последнее исправление: be_nt_all (всего исправлений: 2)
Ответ на: комментарий от tailgunner

Go не минимален, он примитивен.

шпион/разведчик

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

если выяснится, что для многих задач такого примитивного языка, как будто сделанного «дедушкой Виртом» (к его разработкам подобное утверждение также применимо) окажется востребованным, язык, похоже, будет жить и набирать популярность.

Будет. А если Гугл будет толкать Go достаточно долго, то он накопит достаточную массу, чтобы стать вечным, как Кобол.

при этом какую-никакую популярность примитивные языки Вирта завоёвывали, пример Go тем более перед глазами

А, Go уже язык Вирта. Интересно, а Вирт об этом знает? Или любой примитивный язык с ":=" в роли присваивания - это уже автоматически язык Вирта?

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

Сможет ли Го заменить си? С большой долей вероятности - да, сможет.

В текущем виде - не сможет. Никак.

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

Сможет ли Го заменить си? С большой долей вероятности - да, сможет.

С нулевой вероятностью. Я думаю, что он даже Python с PHP не заменит.

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

Что по твоему мнению этому мешает в текущем виде?

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

Сравнивать си с питоном и пыхом - это уже за пределами добра и зла.

anonymous ()

То, что язык go сделан пальцем и представляет собой, с точки зрения проектирования, эпический провал, должно стать очевидно после прочтения вот этого поста от самого Пайка: https://blog.golang.org/errors-are-values Пост был предназначен для того, чтоб объяснить всем злопыхателям, что исключения не нужны и без них лучше, а если вам их не хватает, то только потому, что ваши мозги сгнили от использования старых языков. Но о чём пишет Пайк? Мол, вам не нравится постоянное

if err != nil {
    return err
}
после каждой функции, способной завершиться с ошибкой? Не проблема, нужно просто...(барабанная дробь)... глотать ошибки. Можно спроектировать API так, чтоб вместо возврата рекомендуемого кортежа (результат,ошибка) возвращался просто результат, а ошибку можно было бы получить вызовом специального метода. Т.е. сначала гоферы долго ссали в уши на предмет «вам не удастся просто так проигнорировать ошибку», но как доходит до дела предлагают забить на этот идиоматический подход и сделать так, чтоб ошибка легко игнорировалась.

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

Понятно, что это не единственная проблема go, есть и interface {} и утинная типизация и приснопамятное отсутствие дженериков, наверняка некоторые из этих проблем серьёзнее, этот пример просто нагляднее, так как пост написал сам изобретатель подхода.

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

Будет. А если Гугл будет толкать Go достаточно долго, то он накопит достаточную массу, чтобы стать вечным, как Кобол.

Сравнение некорректное. Кобол никогда не имел ничего общего с мейнстримом. В плане синтаксиса — это недолитературное программирование, в плане семантики — первый язык в котором появились структуры данных и, в какой то мере, дальний предок dBase.

А, Go уже язык Вирта. Интересно, а Вирт об этом знает?

Попрошу не передёргивать.

Или любой примитивный язык с ":=" в роли присваивания - это уже автоматически язык Вирта?

Вот причём тут оператор присваивания? Тем более, что в golang — это присваивание с выводом типа. Язык Go объединяет с языками Вирта вовсе не это, а о[б]суждаемый вами минимализм/примитивизм. Других известных языков, с таким подходом к проектированию, объединяющем достаточно традиционные синтаксис и семантику (со статической типизацией), простоту изучения за счёт минимализма, и принципиальное отсутствие средств построения eDSL, будь то переопределяемые операторы (в Lua, к примеру, есть), средсва обобщённого програмиирования и т.д. и т.п. кроме Go и языков Вирта попросту нет.

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

Сможет ли Го заменить си?

В текущем виде - не сможет. Никак.

Что по твоему мнению этому мешает в текущем виде?

GC и жирный рантайм.

Это да, в понастоящему системном (крупнотиражном) программировании Go не замена C. Но на эту нишу как раз Rust претендует.

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

Сборка мусора является проблемой только для приложений реального времени, но там без ассемблера (или его чуть более высокоуровневого эквивалента типа си) никак, каждая инструкция должна быть выверена, каждое прерывание. Не думаю, что что-то способно вытеснить низкоуровневые языки в этой нише. В остальных областях сборка мусора с паузами в пределах 10мс не является проблемой. Жирный рантайм - актуально для систем с ограниченными ресурсами, где надо следить за каждым байтом памяти, там тоже низкоуровневые языки не потеснить. В остальных областях Го пригоден как замена Си даже сейчас.

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

Это да, в понастоящему системном (крупнотиражном) программировании Go не замена C.

Только упоротые фанатики типа местного Эдички до сих пор юзают Си за пределами системщины и риалтайма. Мало кого из них в принципе можно будет пересадить на что-то другое.

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

Что тогда на лиспе и смолтоке было в крупном продакшене?

Про лисп песня отдельная, её мы петь не будем, но про Смолток спою. С ним вообще плевать на крупный продакшен, потому как это именно тот язык, используя который нашли продакшен-применение ООП. Оконный интерфейс. Причём команда Стивена Джобса, которая, считается, «слизала» его у Xerox более чисто, в общем-то взяла его и вместе с изрядной частью смолтока. В виде обектно-ориентированной части Objective C. «Настоящий» смолток для тогдашнего недорого железа был слишком тяжёл.

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

Только упоротые фанатики … до сих пор юзают Си за пределами системщины и риалтайма.

Разработчики GIMP к ним относятся? (Про Gnome молчу, уж очень хочется ответить утвердительно)

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

В остальных областях Го пригоден как замена Си даже сейчас.

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

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

язык, похоже, будет жить и набирать популярность.

Так уже появились первые беженцы с него. Прикол для такого молодого и модного языка, гуглопропаганда уже не справляется. Вангую стабилизацию в узкой нише в лучшем случае. А в худшем гугл его закопает и выкатит GoGo с переизобретеными ООП и дженериками. Опять будет откровение у хипстоты и новая волна переписывания с одного ненужно на другое.

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

Я в курсе про Смолток. В молодости я написал Смолток-систему для виндов с jit-компиляцией под x86 и поддержкой нативных ниток. Такие вот пет-проекты были, а не всякая гуйня с вебней.

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

Согласен, теоретически Си можно заменить хоть тем же растом. Но есть ли у раста потенциал сдвинуть такой пласт? Очень сомневаюсь. В отличии от.

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

Разработчики GIMP к ним относятся?

Я говорил про нынешние времена, а Гимпу больше 20 лет.

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

Что за беженцы? утилитка для съема экрана консоли что-ли

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

Кобол никогда не имел ничего общего с мейнстримом

Кобол и был мейнстримом. 40-50 лет назад, но тем не менее.

какую-никакую популярность примитивные языки Вирта завоёвывали, пример Go тем более перед глазами

А, Go уже язык Вирта. Интересно, а Вирт об этом знает?

Попрошу не передёргивать.

Тогда я не понял, что ты хотел сказать. Go язык Вирта, или язык в традиции Вирта, или что?

Других известных языков

Известных кому? Разработчики ЯП знают гораздо больше ЯП, чем «известны» рядовому прогеру. Тот же Occam по духу гораздо больше похож на Си, чем Go.

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

Но есть ли у раста потенциал сдвинуть такой пласт?

У Си три области - системное программирование, риалтайм и статус Lungua Franca от программирования. В первых двух областях у Раста есть техническая возможность его подвинуть, у Го - нет. Для третьей области не подходят ни Раст, ни Го - первый из-за высокого порога вхождения, второй - из-за того, что заточен под узкую нишу и в некоторых областях в принципе неприменим.

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

Так уже появились первые беженцы с него.

Вы так говорите, будто в других новых языках программирования таковых не было.

в худшем гугл его закопает и выкатит GoGo с переизобретеными ООП

Never. В Go ООП реализовано в ровно такой степени, какая нужна индустрии. После того как все переболели книжкой Буча, и поняли, что серебрянной пули опят не завезли.

и дженериками.

Ну за это я совсем уж ручаться не могу, хотя тоже вряд-ли. Хотя их отсутствие действительно делает Go нишевым языком, но так ли уж узка эта ниша?

be_nt_all ()
Ответ на: комментарий от khrundel
if err != nil {
    return err
}

Однострочный шорткат хоть бы сделали что ли. В исходниках докера этой мути больше чем собственно полезного кода. Тут говорили, что го легко читается. Ну да, когда научишься мысленно скипать целые блоки. И еще желательно монитор вертикально ставить, чтобы у функции был шанс влезть в экран.

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

Можно спроектировать API так, чтоб вместо возврата рекомендуемого кортежа (результат,ошибка) возвращался просто результат, а ошибку можно было бы получить вызовом специального метода.

Где то я такое уже видел, ггг. Современный ЯВУ говорите? Старички юниксоделы эпичны конечно.

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

Кобол и был мейнстримом. 40-50 лет назад, но тем не менее.

Ну, мне всегда казалось, что меёнстримом был Фортран, а Кобол «нишевым решениеем». Потом появился PL/I, который соеденил их (почти механически), и долго мейнстримом был он. Несмотря на все проклятия в его адрес.

Тогда я не понял, что ты хотел сказать. Go язык Вирта, или язык в традиции Вирта, или что?

Цитирую себя:

Давайте назовём это примитивизмом. Но если выяснится, что для многих задач такого примитивного языка, как будто сделанного «дедушкой Виртом»

Разве не очевидно, что тут речь идёт о «следовании заветам»? Я не достаточно ясно пишу?

Тот же Occam по духу гораздо больше похож на Си, чем Go.

Вот Occam никогда не предлогался как универсальный язык программирования (я впрочем, знаком с ним только по переведённой книжке Джоунса). К чему вы его вспомнили, так и не понял, на этот раз я вашу фразу нераспарсил.

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

принципиальное отсутствие средств построения eDSL

Это достоинство такое, да? Хм...

кроме Go и языков Вирта попросту нет.

Надеюсь го займет достойное место в музее мертвых языков Вирта.

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

Где то я такое уже видел, ггг. Современный ЯВУ говорите? Старички юниксоделы эпичны конечно.

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

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

Кобол и был мейнстримом. 40-50 лет назад, но тем не менее.

Ну, мне всегда казалось, что меёнстримом был Фортран, а Кобол «нишевым решениеем». Потом появился PL/I, который соеденил их (почти механически)

Не-не. Как раз PL/I был нишевым, а мейнстримом в «деловые приложения» писались на Коболе. И если Go станет новым Коболом веб-серверсайда, мне лично хотелось бы, чтобы он перестал быть настолько убогим, как сейчас. Понятно, что на ADT надеяться не приходится, но хоть дженерики.

Разве не очевидно, что тут речь идёт о «следовании заветам»? Я не достаточно ясно пишу?

Окей, твое мнение ясно. По-моему, Go сложноват для потомка Оберона, но это тоже мнение анонимного сетевого эксперта.

Вот Occam никогда не предлогался как универсальный язык программирования (я впрочем, знаком с ним только по переведённой книжке Джоунса)

Си тоже. Сначала. Просто получилось так, что будущего у Occam не было.

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

Это достоинство такое, да? Хм...

Для написания поддерживаемого кода в больших коллективах, боюсь, да.

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

Понятно, что на ADT надеяться не приходится, но хоть дженерики.

А можно пример, где без шаблонов прям ни в какую жить невозможно. Ну или хотя-бы пример, где они сильно облегчают жизнь. Мне правда интересно.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.