LINUX.ORG.RU

Go 1.3

 


1

3

Версия 1.3 выпущена спустя шесть месяцев после версии 1.2 и не содержит изменений в языке. Основная работа была произведена над реализацией, что обеспечило точную сборку мусора, рефакторинг тулчейна, результатом которого стала более быстрая сборка, особенно больших проектов, и значительное улучшение производительности. Как всегда, Go 1.3 держит обещание совместимости, и с новой версией почти все приложения будут продолжать собираться и запускаться без изменений.

Главные улучшения:

  • Прекращена поддержка Windows 2000.
  • Появилась экспериментальная поддержка Dragonfly BSD.
  • Вернулась поддержка Native Client (NaCl).
  • Добавлена экспериментальная поддержка Plan 9.
  • Добавлена экспериментальная поддержка Solaris.
  • Изменилась реализация стеков горутин: прежняя, «сегментированная» модель заменена на непрерывную, что устраняет старую проблему «горячей точки», когда вычисление многократно выходит за границу сегмента. Подробности, включающие статистику производительности, можно посмотреть здесь.
  • Долгое время сборщик мусора был точным при изучении значений в куче. В версии 1.3 аналогичная точность добавлена для значений в стеке. Это значит, что значения Go, не являющиеся указателями (например, целые), больше не будут ошибочно приниматься за указатели и препятствовать повторному использованию незанятой памяти.

А также многое другое.

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

anonymous

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

В определенном наследник: The older UCS-2 ... was superseded by UTF-16. С вашей же вики.

А автомобиль — наследник лошади?

Это уже оговорки.

Других дат у меня нет. А у тебя?

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

зависит от. в моих use case'ах разница существенна — гиг памяти против 200м на тривиальной задаче (несколько десятков тысяч горутин и минимум синхронизируемой информации).

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

А автомобиль — наследник лошади?

Это уже полемика. Ваша персона не настолько мне неприятна, чтобы мотивировать меня на участие в олимпиаде.

Других дат у меня нет. А у тебя?

Вброс про _даты_. Ну я же не писал, что «utf-16 был раньше», а так: если считать его наследником ucs-2.

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

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

Например?

//Классический сишный for:
	
	for i := 1; i <= 10; i++ {
		fmt.Println(i)
	}

//Урезанный for (аналог while в Python'e):

	i := 1
	for i <= 10 {
		fmt.Println(i)
		i = i + 1
	}

//Бесконечный for (с пропущеным условием):
	
	for i := 0; ; i++ {
		fmt.Println(i)
	}

//Бесконечный for (урезанный в ноль):
       for {
		fmt.Println("loop")
	}

//Питоний for-range (но никакого тебе интуитивного "in"):
	for index, value := range mySlice {
		fmt.Println(index, value)
	}

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

А наличие третье конструкции разве лучше просто явного «true»?

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

Мне подход Питона ближе.

Он тебе скорее всего просто привычней.

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

Ну так лол, первый, третий и четвертый варианты это нормальные си-циклы, в for можно пропускать любые из трех частей. То что здесь «нового» это while записанный как for и итерация по коллекции. В итоге вся претензия сводится к тому что тебе привычно писать in а в go его нет.

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

нормальные си-циклы

То есть синтаксис _нормален_ для выходца из С, так и запишем. Да и в 3м варианте в С же нельзя опускать ;. Неявные детали хуже (по-крайней мере с точки зрения python-way), чем явные.

Вы как-то резко реагируете. Всегда думалось, что хипстеры должны быть более «терпимыми», чтоли.

// другой анонимус

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

Вообще for с пропущенным условием можно и в Си написать, так что -1 вариант.

И это всё? По-твоему лучше наплодить ключевых слов на каждый чих?

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

Ну так лол, первый, третий и четвертый варианты это нормальные си-циклы, в for можно пропускать любые из трех частей. То что здесь «нового» это while записанный как for и итерация по коллекции. В итоге вся претензия сводится к тому что тебе привычно писать in а в go его нет.

Прошу заметить, претензий у меня особых к Go нет, это лишь дело вкуса. Мне приятнее когда язык богат на «человечные» языковые конструкции и прямолинеен. Там где у Go только сухой for в куче изощрённых вариаций, у Питона плюсом ещё и while и in и отсутствуют всякие «магические» расширения-усечения функционала.

А вообще, эти примеры были к тому, что язык не так «прост» как его представляют и там куча нюансов, хоть и ключевых слов, казалось бы раз-два, да и обчёлся.

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

Неявные детали хуже (по-крайней мере с точки зрения python-way), чем явные.

Что тут неявного? Синтаксис for описан в документации и вполне строг.

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

Мне приятнее когда язык богат на «человечные» языковые конструкции

Пиши на COBOL'е, потом расскажешь.

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

И это всё? По-твоему лучше наплодить ключевых слов на каждый чих?

Нет, не всё. Весь язык такой. Это просто самый явный пример. В Go cлишком мало слов и слишком много бытовой магии. Но в принципе очень логичный, т.е. магия не ломает мозг, а служит филигранным инструментом профессионала. Без знания заклинаний можно и обойтись, а встретив чужие - несложно догадаться. Таким его и задумывали - сухой, машинный, лаконичный, но вполне практичный, фичастый и по-своему удобный. А Питон более для человеков, гуманитариев то есть ))

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

gccgo и будет вам динамическая линковка, если вас объем файла так волнует

gccgo разве не экспериментальный? Да и код плохо оптимизированный он вроде выдаёт?

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

Он ниже пример написал. (Правда до сих пор ломаю голову, нафига "-s" в кавычки взял, и зачем показал, что не знает опции du.)

опечатался. надеюсь, что когда вы упадете, вас обвинят в неумение ходить :)

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

Да это ладно, смущает, почему в выхлопе осталось: на виду же, парсить нужно многим, а исправить достаточно одному.

надеюсь, что когда вы упадете, вас обвинят в неумение ходить :)

Спасибо, достойный ответ).

// Эх, не получится из вас Данко.

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

Пиши на COBOL'е, потом расскажешь.

Не знаю насчёт COBOL, но лексический подход, скажем, Питона, SQL и JQuery меня почти всем устраивает. Жаль, к Питону нет нормального компилятора, да и с параллельностью не всё так просто. А Go я, тем не менее, вполне себе использую и дальше планирую, но совсем не за его «внешность», а из чисто практических соображений.

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

Неявный не в смысле нестрогости, а vs for(;;). Здесь for а-ля micro-edsl, не говорю, что плохо, просто поддержал аргумент о _непривычности_.

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

Да и в 3м варианте в С же нельзя опускать ;.

Он и не опущен.

Неявные детали хуже (по-крайней мере с точки зрения python-way), чем явные.

Какие, например?

То есть синтаксис _нормален_ для выходца из С

А какие еще бывают выходцы? из пхп и 1с?

Всегда думалось, что хипстеры

Разупорись уже.

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

но лексический подход, скажем, Питона, SQL и JQuery

Какое еще лексический подход? Лексический подход есть только в лиспе, остальное лишь фантазии создателей языка по поводу ключевых слов.

loz ★★★★★
()
Ответ на: комментарий от quantum-troll

Он наверняка назовёт `for`. На самом деле, это единственная лексема с подобным свойством.

Вы пришли к шапошному разбору ;)

А если серьёзно, то говорю же, весь язык такой: первоначальная инициализация внутри if и switch - ни что иное как «расширительная» магия; ключевое слово func() - с использованием едва заметных отличий и контекста даёт нам простую ф-цию, метод, лямбду, замыкание; директива import с её «волшебными» преобразующими подчеркиваниями, точками и алиасами; и т.д. и т.п.

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

Go сухой и колючий язык, а Питон живой и питательный

Согласен с тобой, субъективное ощущение такое же

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

Какое еще лексический подход? Лексический подход есть только в лиспе, остальное лишь фантазии создателей языка по поводу ключевых слов.

Только одни фантазии отчего-то притягательны, а от других бежать хочется (безотносительно Go или Питона). Эстетика.

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

Питону не конпелятор нужен, а типизация

Когда, например, требуется по-бысторму набросать что-нибудь разовое, рабочее, то ну её нафиг эту типизацию. А вот для проектов посерьёзнее - почему бы и нет.

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

А если серьёзно, то говорю же, весь язык такой: первоначальная инициализация внутри if и switch - ни что иное как «расширительная» магия; ключевое слово func() - с использованием едва заметных отличий и контекста даёт нам простую ф-цию, метод, лямбду, замыкание; директива import с её «волшебными» преобразующими подчеркиваниями, точками и алиасами; и т.д. и т.п.

Жесть, синтаксис языка теперь у нас волшебством зовется.

P.S. Подчеркивания не принадлежат import, ничего не преобразуют и используются много где в языке. Причем всегда с одним смыслом — игнорирование.

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

Сравни количество разных ненужных сущностей в этих языках.

А нельзя ли навскидку привести несколько таких ненужных сущностей? Не обязательно весь список :-).

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

Питону не конпелятор нужен, а типизация

Конпелятор вообще никому нафиг не нужен, а компилятор у Python и так есть. Статическая типизация нужна, да.

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

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

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

а компилятор у Python и так есть

Cython?

Я имел в виду компилятор Python в байткод Python VM. Но Cython тоже есть, и Nuitka, и PyPy.

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

Э, спорная точка зрения. На деле в каждом случае выбирать придется из пары возможностей. В основном, из-за того, что в Python есть различие между операторами и выражениями. Использование операторов допустимо только в циклах и функциях (генераторах и методах `__next__` (`next` в Python 3) пользовательских объектов-итераторов), поэтому очевидно, что если для реализации алгоритма обхода потребуется использование операторов языка, то выбора особого нет.
Естественным применением спископостроителей и ФВП является последовательный маппинг множества элементов объекта в другое множество. Делать на них сложную итерацию — идиотизм, если нет готовой функции-предиката, потому что на одних выражениях далеко не уедешь, а если и попробуешь, код неимоверно усложнится, как и его читаемость. Если же таковая функция имеется, то о каком выборе идет речь?

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

А какие еще бывают выходцы? из пхп и 1с?

Хотел на предыдущие ответить, но вижу, смысла нет).

Всегда думалось, что хипстеры

Разупорись уже.

Ой, извини, тебе, видимо, привычнее «хипстОры».. Эти, с дивана, тоже фрустрируются, когда бендеровцы пишешь, оказывается, есть такой город в ПМР.

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

Конечно, есть доля истины в том, что «сахар» list comprehensions и генераторных выражений в чем-то дублирует те же map/filter. И это избыточная функциональность. Но дублируются только самые распространенные юзкейсы и притом с профитом в виде чуть лучшей скорости выполнения и лучшей читаемости. Тут конфликт постулатов языка, пришлось идти на компромисс.

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

Надо будет посмотреть, что он вообще может. Ну и подождать пяток лет. Python 1.6 тоже, я думаю, был простым и ясным :-}

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

Всегда думалось, что хипстеры

Ирония в том, что Гугель пиарит Go как модный хипста-стайл, но при этом Go - это язык, прежде всего, разработанный сугубыми технарями и для сугубых же технарей. А хипстеры - в первую очередь суть гуманитарии и эстеты, и оттого, Go им не катит. Вот такая вот дихотомия ;)

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

Ой, извини, тебе, видимо, привычнее «хипстОры».

Мне привычнее когда судят по каким-то фактам а не «всегда думалось».

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

чо вы с этим докером заладили? я понял, что докер написан на Го, А ЕЩЁ?

зы: создается впечатление, что Го создали в качестве «фо фан» для себя, слепили на нем этот ваш докер (тоже «фо фан»), а больше он ни на что и не годен оказался.

Kompilainenn ★★★★★
()

какая мощная некромантия. Отказались от поддержки «ненужно» а потом ее нще и три раза добавили.

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

for i <= 10

Классический сишный for: for(; i <= 10;) { ... }

for i := 0; ; i++

То же самое: for(int i = 0; ; i++) { ... }

for {

То же самое for(;;) { ... }
И того, единственной новой сущностью со времён C является range.

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