LINUX.ORG.RU

Первый стабильный релиз Go

 ,


0

3

Сегодня состоялся релиз Go 1 — первый стабильный релиз языка программирования Go. Разработчики заявляют, что программы работающие под Go 1 в большинстве случаев будут работать без изменения и в следующих версиях языка. Также теперь будут предоставляться официальные сборки компилятора для всех популярных платформ: Linux, Mac OS X, FreeBSD и Windows.

В релиз вошло немного изменений, так как разработчики сосредоточились над исправлением ошибок и улучшением переносимости, но тем не менее, некоторые существенные нововведения все же были реализованы:

  • Новый тип для юникодных символов.
  • Новый тип для ошибок.
  • Простой синтаксис для удаления элемента из отображения (map).
  • Добавлен синтаксис для циклов по отображениям.
  • Добавлен синтаксис множественного присваивания.
  • Запрещен close для принимающих каналов.
  • Улучшен синтаксис композитных литералов.
  • Теперь можно использовать goroutines перед окончанием инициализации программы.
  • В функциях с именованной возвращаемой переменной нельзя использовать пустой return в случае, если возвращаемая переменная затенена локальной.
  • Изменения правил проверки равенства: добавлена возможность сравнения равенства массивов и структур, убрана возможность проверки равенства функциональных переменных и отображений (кроме сравнения с nil).
  • Полностью переработан модуль стандартной библиотеки time. Теперь он больше не привязан к unix epoch time и позволяет легко оперировать привычными единицами измерения, например, годами или часами. Также теперь различаются временные промежутки (durations) и абсолютные значения времени.

Также обновлен Google App Engine SDK для Go.

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

★★★★★

Проверено: JB ()
Последнее исправление: JB (всего исправлений: 7)

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

fuf

дык и семантика мала у однокомандных машин и синтаксис - набор адрессов

в форте набор разделёных разделителями имён семантика больше

считатаю что форт-машина имеет большую колмогорову сложность чем однокомандная машина.

делать тут различение семантикаVSсинтаксис это некультурно

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

Это правильная статья. Ввод и вывод должен в обязательном порядке сопровождаться сериализацией. А текст должен быть ТОЛЬКО в юникоде.

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

а для чего он нужен то?

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

Анонимусы лора учат создателей UTF-8 Пайка и Томпсона делать

И правильно учат. Одно дело костыльная (pac/у)паковка в байтовую строку - другое полноценная поддержка.

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

ибо есть некоторая маркетологическая неточность.

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

Например, раздел/структура - применение:

Линейная алгебра - разные 3D вещи.

Реляционная алгебра - базы данных.

Нормированные векторные пространства - data mining.

Алгебра термов / начальная алгебра (из универсальной алгебры / теории категорий) - алгебраические типы данных.

Обобщённые алгебраические теории (из универсальной алгебры) - алгебраические интерпретации теории типов (алгебраические интерпретации категорных интерпретаций теории типов :)).

Если говорить про модули (из ML), то есть какие-то алгебраические их интерпретации?

Подразумеваю - подход практекуемый в математике(хаскеле) где декларируются аксиомы и дальнейшее основано на построение следствий

Как-то не релевантно go, ИМХО.

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

В качестве языка низкоуровневого программирования Go не подходит из-за навороченной исполняющей системы

Ну хотя бы «средний» уровень типа coreutils или gcc на нём можно написать, всё лучше будет.

«правильно сделанного Си» я не встречал

Я все ищу его ) По-моему, ранний паскаль был правильнее, чем ранний C, при тех же способностях. Но сейчас, кажется, он тоже стал слишком сложным.

Надо ещё Ada и D посмотреть.

Cyclon ... Ivy

Как я понимаю, они безнадёжно мертвы (

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

Ну хотя бы «средний» уровень типа coreutils или gcc на нём можно написать, всё лучше будет.

А ещё лучше на OCaml или Haskell, зачем останавливаться на полпути и искать применение для Go?

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

По-моему, ранний паскаль был правильнее, чем ранний C, при тех же способностях.

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

A-234 ★★★★★
()
Ответ на: комментарий от Sigrlami

> Что за gist штука?

Это аналог pastebin.

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

Так долго ждать не придётся: обещали в 4.7.1 обеспечить соответствие спецификации go 1.

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

Это единственная адекватная мысль в статье. Остальное - какой-то баттхёрт

Divius ★★
()
Ответ на: комментарий от A-234

Аналог вот этого кода на паскале приведи пожалуйста:

Давно не работал с паскалем, но вроде там то же самое, только ^Char вместо char*

Divius ★★
()
Ответ на: комментарий от A-234

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

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

кста в «среднем» Паскале который ISO стандартом не исключено возврат процедуры из процедуры что при некотором прочтении допускает замыкания.(ситуация подобна алголовскому параметру по именни приводившая создании «лямбд»)

если посмотреть что вокруг/вместе_с языков (С/Pascal/Lisp/Smalltalk/Forth) делали то всегда это было «IDE» на технически в тот момент возможном/мыслимом_создателями_приемлимым уровне

у С был ed и регулярки (наличие setjump/longjump когда всё 16бит то ещё расширение языка через гланды)

когда же всё окружение(«IDE») поднимают&опускают на уровень языка то и получают уродцев PL/I C# Java C++ имя им легион

Obj-C vs Go вот достойные продолжатели .

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

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

Go сравнительно C11 не имеит KRC ANSI89 99 11

в Go gofix предназначен для автоматического(по факту всёж бывает автоматизированого) эквивалентного конвертирования к актуальному определению языка что в целом способстует сохранинию актуальной версией краткости.

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

В паскале нет адресной арифметики. Есть костыли переводящие указатель к инту и инт к указателю, если я все правильно помню. Но это полноценной заменой не является, поскольку при таком преобразовании теряется информация о размере базового типа указателя.

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

тебе что необходимо int x; char * f=«Hello A-234»

уметь x++[f] ?

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

у паскаля посконого вполне типизированые указатели и succ pred двигающиеся на размер указуемого(для типов постояного футпринта)

в паскале(как в фортране) адрессная арифметика есть - берёш массив базового типа и твориш с ним чё хочеш поэтому в трубе был mem

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

понимание требует усилие со стороны внемлющего

деградация образования во многом есть следствие «дети не поймут »

конечно необходимо изьяснятся доходчиво особенно по отношению к исполнителям.

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

когда же всё окружение(«IDE») поднимают&опускают на уровень языка то и получают уродцев PL/I C# Java C++ имя им легион

О как. Назови мне IDE для PL/I? %)

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

Насчет «изьяснятся доходчиво» - у вас одиннадцать грамматических и пунктуационных ошибок в трех предложениях, да и стилистически язык далек от литературного. И вы еще будете бухтеть про деградацию образования?

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

понимание требует усилие со стороны внемлющего

Дело в том, что у вас проблемы с согласованием, а не в витиеватости речи.

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

я о том же.

это протяжёный по времени самообусловленный(на ряду с внешними причинами есть петля обратной(опосредованой) связи по которой и происходит эволюция) процесс

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

А ещё лучше на OCaml или Haskell, зачем останавливаться на полпути

Потому что они уже на C, переход на Go или подобные будет легче, а кода и ошибок станет меньше.

Да, я знаю, что перехода не будет. Я мечтаю )

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

в результате попытка занять нишу многонитиевых(процессных) разнородных(не массово паралельных) тоесть системный язык того времени когда система многоголова и/или системы образуют коллективы.

Внезапно, такой язык уже есть, это --- D2. А может быть. и ещё найдутся конкуренты.

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

когда же всё окружение(«IDE») поднимают&опускают на уровень языка то и получают уродцев PL/I C# Java C++ имя им легион
Obj-C vs Go вот достойные продолжатели .

а разве Xcode - не апогей единства IDE и ЯП( Objective-C )? там даже редактор кода напрямую использует компилятор для подсветки ошибок, автокомплита и пр.; ну и к слову говоря - тот же С++ прекрасно используется без IDE, Objective-C же за рамками своей IDE практически мертв

vaino
()
Ответ на: комментарий от A-234

В паскале нет адресной арифметики

Если и так (я не помню) - она всё равно нужна очень редко, при управлении памятью на низком уровне. В большинстве случаев в C её применяют только от недостатка нормальных средств.

unsigned ★★★★
()

Почему такая неюниформенность синтаксиса? Сишкавыродки не могут в языковой дизайн?

package main (без кавычек)

но

import «fmt» (<- в кавычках)

pp := (<- с двоеточием) new(Point); (<- точка с запятой)

iv = (<- без двоеточия) pp (<- уже без точки с запятой)

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

не исключено возврат процедуры из процедуры что при некотором прочтении допускает замыкания

Это как, процедурный тип? Так это не замыкания.

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

не практиковал

Тогда и не говори о том, чего не знаешь.

наверно JCL

Job Control Language - это командный язык OS/3[67]0, а не IDE.

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

конечно Xcode весч.

таким апогеем был TurboPascal 1.0

C++ это слишком затянувшаяся шутка; Obj-C был и есть изначально «чище»; C++ ходячий компромисс приведший к контексно-зависимой гратамике - fail


для [objC] для комфортной работы REPL желателен по этому он без IDE не так удобен.


Джобсу(или кого он там послушал) нужно огромное спасибо сказать за воскрешение objC (или неужели так экономика повлияла?!)

С++ это маркетинговые понты породившее Java и C# при вендорлокине

я недостаточно умён что бы писать на С++

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

у Вирта&Йенсена в стандарте допустимо(не запрещено ) функция F возвращает var T:procedure(a: int):int переменая Т содержит после возврата из функции ссылку на внутренее состояние F

это допустимо Стандартом конца 70x ибо не указано прямо что активационые записи функций размещаются согласно FILO / LIFO и обязаны уничтожатся по выходу

т.е стандарт допускает что локальная память для функций выделяется динамически рантаймом не на стеке а в общей памяти

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

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

как в D/D2 решили(и вообще Александреску учитывает что язык постояно испытывает давление добавления фич) проблему с энтропией языка при его массовом распространении?

в Go есть gofix ( ныне go fix)

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

блин PL/I + JCL и С+ ed и Forth ясно сопоставление?

Мне ясно, что ты ровно нифига не знаешь о PL/I и приплел его для того, чтобы показаться умнее.

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