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 ()

Ответ на: комментарий от Debasher

Что?

Как насчет того чтобы провести логическую цепочку:
A: на языке C можно программировать
B: в языке C нет generics
A+B => Для того, чтобы программировать, дженерики не нужны.

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

Куча различных факторов же. Техническая возможность != рациональное решение. Годно и не годно бывает только у тех, кто мыслит не логикой, а чувствами, нраица-ненраица.

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

Кстати, есть ли какая утилита, которая позволит запустить массовое переименование при переносе пакета? Из go tools, а не какого-нибудь стороннего perl'а)

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

Нужны дженерики - идёшь в другой язык.

мы тут играем в программирование или программируем?

Это всё к тому, что не могу понять, чем отсутствие дженериков превращает программирование в игру?

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

Go можно использовать для решения прикладных задач, несмотря на нытьё «матёрых» «программистов». Переводя на ЛОРовский язык, Go взлетел.

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

Это всё к тому, что не могу понять, чем отсутствие дженериков превращает программирование в игру?

Не превращает, конечно же. В игру превращает подход 'а давайте ка мы возьмём вот такую модную технологию потому что в ней такие клёвые горутинки'. А потом выпиливай за вами всякое говно если проект вдруг станет серьёзным.

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

Go можно использовать для решения прикладных задач,

Технически - конечно можно. Вообще много что можно.

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

Как видишь, не только технически, но и практически и отсутствие дженериков этому не помеха. Я свои задачи (с модным тэгом «mission critical») им решаю. Что тебе мешает не знаю, да и знать не хочу: мне дела до твоих задач нет.

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

Позвольте утащить в личные квотезы вашу мудрость :).

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

Что тебе мешает не знаю, да и знать не хочу:

Ну тогда я тебе и не расскажу.

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

Как насчет того чтобы провести логическую цепочку: A: Под тёплые ламповые ЭВМ не было языков программирования высокого уровня В: Под тёплые ламповые ЭВМ были программы А+В => Для того, чтобы программировать, ЯПВУ не нужны

И вообще, 4.2: в C11 есть generics.

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

Что есть говно? Это если уже в существующий проект другой язык (Go) притащили? Или тебе просто не нравится Go по некоторым причинам, поэтому его приходится переписывать на что-то другое?

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

В игру превращает подход 'а давайте ка мы возьмём вот такую модную технологию потому что в ней такие клёвые горутинки'.

Они и не взяли. В смысле: «В игру превращает подход 'а давайте ка мы возьмём вот такую модную технологию потому что в ней такие клёвые генерики'»

А потом выпиливай за вами всякое говно если проект вдруг станет серьёзным.
Debasher

Не надо песен - к серьёзным проектам тебя за версту не подпускают :-)

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

Что есть говно?

То, что создаёт проблемы.

Это если уже в существующий проект другой язык (Go) притащили? Или тебе просто не нравится Go по некоторым причинам, поэтому его приходится переписывать на что-то другое?

Опять же, вопрос подхода. Если в проект тащат Go потому что поцоны сказали что дженерики не нужны и вообще го ГОДНЫЙ, тут будет очевидный обосрамус. Сам по себе Go не при чём.

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

Не надо песен - к серьёзным проектам тебя за версту не подпускают :-)

И сейчас я буду что-то доказывать анонимусу, ага.

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

Ну и ладушки. Чай с печеньем будешь?

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

Type-generic expressions c _Generic?

Я посмотрел-посмотрел на синтаксис на вики. Потом решил, что может когда-нибудь и воспользуюсь, но точно не сейчас.

Deleted ()

фанатам дженериков в Го. Откройте его стандартную библиотеку (https://golang.org/pkg/) и покажите пакет, в котором без них не обойтись. Не считая в общем-то нафиг никому не нужный container

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

То есть тебе не нравится, когда кто-нибудь притащит в проект новую технологию, наговнокодит и бросит?

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

То есть тебе не нравится, когда кто-нибудь притащит в проект новую технологию, наговнокодит и бросит?

Разумеется.

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

А, ну тогда понятно. Больше вопросов нет.

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

Для того, чтобы программировать, ЯПВУ не нужны

Ну, все правильно, на ассемблере тоже можно программировать, не вижу тут противоречий.

И вообще, 4.2: в C11 есть generics.

Такое и в go есть, называется interface{}

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

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

Такое и в go есть, называется interface{}

Вообще такое обычно называется перегрузкой, а interface{} больш похож на void* — во всяком случае, type safety ровно того же уровня. Однако если С — системный язык, и в областях его применения никто и не требует type safety (хотя создатели Rust могут с этим поспорить, но когда создавался С, перед ним стояли совершенно другие задачи, да и лучше тогда просто не умели), то выпускать в 2012 году язык высокого уровня с претензиями на надёжность и системой типов уровня «привет из 70-х» — это очень странно, и его вполне закономерно хейтят.

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

То есть тебе не нравится, когда кто-нибудь притащит в проект новую технологию, наговнокодит и бросит?

Разумеется.

А, ну тогда понятно. Больше вопросов нет.

То есть как это нет?!?! То есть ему в шаровары нас**ал какой то типчик, а виноват в результате Ёзыг «Го»?! Вы не с 404-ой ребяты? Ну хоть какая то причинно-следственная связь должна быть?! Хоть тень ея?!

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

Для тех кто хочет быстрый компилятор и одновременно с этим бинарники без мусора.

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

Рантайм с зелеными тредами и сборщиком мусора по большому счёту тоже можно посчитать мусором. Вопрос, как смотреть на бинарь.

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

Нет, на https://golang.org/doc/faq#generics как было написано

Generics may well be added at some point. We don't feel an urgency for them, although we understand some programmers do.

Generics are convenient but they come at a cost in complexity in the type system and run-time. We haven't yet found a design that gives value proportionate to the complexity, although we continue to think about it. Meanwhile, Go's built-in maps and slices, plus the ability to use the empty interface to construct containers (with explicit unboxing) mean in many cases it is possible to write code that does what generics would enable, if less smoothly.

так и не менялось.

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

Точно, тогда надо уточнить до «динамически генирируемого мусора».

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

Нет значит ненужна! Рряяяяя.

)))))

Перегрузка видимо тоже не нужна.

ritsufag ★★★★★ ()

Кстати, go, в отличие от gcc-go не работает на древних процах типа Athlon XP. Illegal hardware instruction (core dumped).

anonymous ()

Добавлена поддержка суб-тестов и суб-бенчмарков.

Годнота *потягивая смузи*.

Deleted ()

Так в нём ещё и перегрузки нету? Зачем такое ООП?

Шаблонов нету, перегрузки нету. Что в нём вообще есть?

А я ещё хотел спросить можно ли в Go делать такие штуки как std.concurrency.receive на D?

receive принимает указатели на функции (сколько угодно функций) и по типу аргументов этих функций принимает сообщения от другого потока. Т.е. в D на этапе компиляции можно выяснить даже аргументы и возвращаемый тип функции, указатель на которую тебе прислали:

alias a1 = Parameters!(t1);
alias r1 = ReturnType!(t1);
Но походу дела go до мощи std.traits как до луны пешком.

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

зачем

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

Deleted ()

Тред не читал. Тухлые вбросы про отсутствие женериков уже были?

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

Зачем такое ООП?

Там нет ооп вообще.

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

Там нет ооп вообще.

Кхм.. Я просто когда прочёл на Википедии «из языка сознательно исключены: переопределение методов», думал об ООП как о чём-то самом собой разумеющемся. А там и правда оказывается только наследование интерфейсов.

Ну тогда Go - это С со сборщиком мусора. Не понятно почему во всех темах про D идёт срач как выключить GC, а в тредах с Go такого нету.

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

Были, но на порядок менее тухлые, чем код, усеянный кастами и рефлексией

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

выпускать в 2012 году язык высокого уровня с претензиями на надёжность и системой типов уровня «привет из 70-х» — это очень странно

Нет таких претензий. Сто раз уже разжевали: язык задизайнен для быдлокодинга онли. Все что не умещается в одну извилину макакихипстора безжалостно отброшено. Никакой надежности или типолюбства никто не обещал.

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

Ну тогда Go - это С со сборщиком мусора.

Здрасте! А сразу не заметно что ли? Еще подкину аналогию: похапэ 4 (но с канпелятором!!!11). Так что успех гарантирован. Потомков только жалко, которым все это го потом разгребать.

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

Может потому, что с многопотоком GC в радость? Затрахаться можно за всем этим следить.

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

А вы думаете Go больше подходит для многопотока, чем D?

unDEFER ★★★★ ()

Новый бэкенд компилятора, использующий промежуточный код на базе SSA (Static Single Assignment).

O_o у них до сих пор не было SSA? Они из какого тысячелетия?

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

Кстати, на примере D и Go хорошо видно, что в 21 веке в IT инженеры с треском слили маркетологам по всем фронтам. Торжество одноклеточных. Вот и в этот тред набежали как обычно: Нинужна!Смузи! Чо тут думать, кодить нада! ГУГЛ плохо не придумает!!! Интересно было бы посмотреть на аналогичное поделие без бирки от гугля. Крутили бы пальцем у виска на его авторов.

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