The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

16.08.2016 09:26

После шести месяцев разработки компания Google сформировала релиз языка программирования Go 1.7, который позиционируется как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.

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

Основные новшества, представленные в выпуске Go 1.7:

  • Новый бэкенд компилятора, использующий промежуточный код на базе SSA (Static Single Assignment). SSA предоставляет низкоуровневые операции, которые во многом отражают обычные машинные инструкции, за исключением того, что предоставляют возможность работы с неограниченным числом регистров. Применение SSA позволяет задействовать при сборке дополнительные классы оптимизаций и, соответственно, добиться увеличения производительности результирующего кода. Например, появляется возможность выявить ситуации в которых проверки выхода за границы не имеют смысла или можно исключить части выражений. В среднем прирост производительности оценивается в 5-35%. Для разработчиков бэкенд на базе SSA предоставляет ряд расширенных средств аналитики, позволяющих на низком уровне проанализировать ход компиляции и принятые решения по оптимизации. Новый бэкенд пока доступен только для архитектуры amd64;
  • Во фронтэнде компилятора задействован новый более компактный формат экспорта данных и обеспечен более эффективный импорт определений. Данные изменения позволили значительно ускорить компиляцию и на 20-30% сократить размер исполняемых файлов;
  • Внесены оптимизации в сборщик мусора, которые позволили немного увеличить производительность и значительно сократили паузы при сборке мусора в программах с большим числом неактивных потоков (goroutines);
  • Внесены оптимизации в различные модули стандартной библиотеки. Например, ускорение более чем на 10% отмечено в библиотеках crypto/sha1, crypto/sha256, encoding/binary, fmt, hash/adler32, hash/crc32, hash/crc64, image/color, math/big, strconv, strings, unicode и unicode/utf16;
  • Реализован порт для Linux на IBM z Systems (s390x);
  • В состав стандартной библиотеки включён пакет golang.org/x/net/context, популярный среди разработчиков сетевых приложений и микросервисов. Начиная с Go 1.7 данная библиотека доступна под именем context без префикса "/x/net/". Поддержка модуля context добавлена в штатные пакеты net/http и os/exec;
  • Директория vendor, предназначенная для поставки внешних зависимостей, привязанных к определённому поставщику, переведена в разряд неотключаемых возможностей.


  1. Главная ссылка к новости (https://blog.golang.org/go1.7...)
  2. OpenNews: Доступен язык программирования Go 1.6
  3. OpenNews: Доступен язык программирования Go 1.5
  4. OpenNews: В рамках проекта gonix, развивается реализация unix-утилит на языке Go
  5. OpenNews: В рамках проекта jvm.go развивается вариант JVM, написанный на языке Go
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44972-golang
Ключевые слова: golang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (111) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:47, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Например можно уже его использовать как язык общего назначения? Библиотечки всякие разные, например конекторы к базам понаросли?
     
     
  • 2.2, Аноним (-), 09:51, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Конечно, пишу на нем 2 года, помимо коннекторов к базе в нем key/value базы появились
     
     
  • 3.81, Аноним (-), 19:52, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Ответил сам себе и отмодерировал последующую дискуссию, вот тебе и opennet, вот тебе и аноним
     
  • 2.5, Аноним (5), 10:02, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Как будто не разработчики пишут библиотеки, а они сами "наростают", смахивает на теорию эволюции.
     
     
  • 3.12, тоже Аноним (ok), 11:00, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Так и есть, эволюция. Разработчики пишут, кто-то использует. Удачно написанное и многими используемое становится стандартом де-факто, который реально можно использовать в рабочих проектах.
    Возможна ситуация, когда используемая библиотека вымирает в процессе такой эволюции. Так что пишущие всерьез и обеспечивающие поддержку гонятся не столько за новшествами, сколько за уверенностью, что оно не будет заброшено и забыто через пару лет.
    Ибо переписывать уже запущенный проект в погоне за прогрессом - это очень нехорошо...
     

  • 1.3, Аноним (-), 09:58, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    лучше бы под солярис нормальный порт сделали
     
     
  • 2.4, A.Stahl (ok), 10:00, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +20 +/
    И под OS/2, да и под TR-DOS не помешало бы...
     
     
  • 3.6, 1 (??), 10:06, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    под os/390 хачу
     
     
  • 4.7, Аноним (-), 10:15, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Так есть же...
     
     
  • 5.30, Аноним (-), 13:53, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А у меня в спектрум флешка с линухом не вставляется, поэтому мне без разницы.
     
  • 5.34, Anonim (??), 14:13, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пользователи BeOS негодуют!
     
  • 5.50, Игорь (??), 16:01, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так то для Linux OS390, а вот для z/OS USS/MVS бы...
     
  • 2.62, _ (??), 17:44, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >лучше бы под солярис нормальный порт сделали

    Соляра - как бы проприетарный продукт, это - раз.
    Популярность которого - ниже плинтуса и стремительно сворачивается в вообще ничто - это два.
    Так кому оно надо - гуглу или оракелу?! Оракель не чешется ... вывод? :(

    БСД к примеру стараются, у них там 3 косяка неприятных, но проблема озвучена - народ роет ...
    А в соляре всё хорошо - всем пофиг :( А ведь было время ... а да чего там! Как солнце закатилось - всем всё понятно было :(

    PS: Вот голубым тоже надо, дык они тоже и тормошили и контрибутили - результат смотри в новости :)

     

  • 1.8, anonimous (?), 10:16, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Полноценных биндингов к Qt или GTK так и не появилось?

    inb4, все эти проекты с подписью experimental и is not recommended for any real use не предлагать.

     
     
  • 2.13, Comdiv (ok), 11:30, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Так это от официальных выпусков никак и не зависит.
    Если привязки этих библиотек до сих пор не появились, значит они не особо нужны нынешним разработчикам на Go
     
  • 2.17, qwe (??), 11:57, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Пишешь сам через cgo. Надежнее, да дольше, зато ничего лишнего не потянешь.
     
     
  • 3.26, anonimous (?), 13:37, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть какие-нибудь примеры десктопных приложений на go в дикой природе?
     
     
  • 4.106, GrammarNazis (?), 10:59, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    https://syncthing.net/
     
  • 2.23, Аноним (-), 13:19, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Полноценных биндингов к Qt или GTK так и не появилось?

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

     
     
  • 3.24, robux (ok), 13:26, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Так вебинтырьфейсы ж в моде теперь

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

    Поэтому вебня головного мозга во все поля!

     
     
  • 4.35, angra (ok), 14:21, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я тебе сейчас страшную вещь скажу, peer-to-peer можно написать даже на js в браузере.
     

  • 1.9, Аноним (-), 10:20, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Дженерики так и не завезли.
     
     
  • 2.10, Аноним (-), 10:37, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Там много чего не завезли и никогда не завезут.
     
  • 2.11, Аноним (-), 10:41, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    http://tmikov.blogspot.ru/2015/02/you-dont-like-googles-go-because-you.html

    :-)

     
  • 2.20, freehck (ok), 12:48, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Полиморфные типы лучше генериков. :P
     
  • 2.68, _ (??), 17:57, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >Дженерики так и не завезли.

    ... и "Слава Аллаху!!!!"
    Впрочем версия 1.7 ... что там в 2.* и далее будет - посмотрим.

     
  • 2.74, Пингвино (ok), 18:47, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Они там и не нужны
     
     
  • 3.91, dfsfsfsfsfsf (?), 22:21, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Рили? И как мне отличить Array<Int> от Array<String> без дженериков то? А как компайлер узнает что в эту функцию    нужно передать Array<Int> и выдаст мне ошибку компиляции при попытке передать в нее Array<String>?

    На данный момент в Go для такой наипростейшей задачи приходится городить костыли времен Java 4. Действительно дженерики в  Go  не нужны, только вместе с самим Go с на пару.

     
     
  • 4.109, Аноним (-), 11:59, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > как мне отличить Array<Int> от Array<String>

    элементарно. у первой тип []int, у второй []string.

     
     
  • 5.122, Пингвино (ok), 23:41, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Бросьте, это очередной нытик, который пытается писать на языке со статической типизацией как не петоне.
     

  • 1.15, Comdiv (ok), 11:49, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > с такими достоинствами скриптовых языков, как ... защищённость от ошибок

    Вот это - неправда, скриптовые языки плохо защищают от ошибок в целом. Может имелось ввиду от пределённого класса ошибок?

     
     
  • 2.16, Comdiv (ok), 11:52, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Смотрю, эта ошибка кочует из новости в новость о Go.
     
  • 2.28, путукфд (?), 13:45, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Может имелось ввиду от пределённого класса ошибок?

    Сборщик мусора же. Позволяет уменьшить утечки памяти.

     
     
  • 3.92, Comdiv (ok), 22:23, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Только скриптовые языки тут ни при чём. Сборка мусора есть где угодно, даже для C.
     
     
  • 4.113, путукфд (?), 16:13, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    REALY?
     
     
  • 5.117, _ (??), 19:42, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А что тебя удивляет то? Салага ты, всё что есть в этом мире - есть под Си! :)
    Например знаменитый http://www.hboehm.info/gc/

    PS: Для Си даже и объекты есть :) См. гном

     
     
  • 6.130, путукфд (?), 17:24, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Салага ты, всё что есть в этом мире - есть под Си! :)

    Де Бил.

     
     
  • 7.133, . (?), 05:48, 19/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да я понял кто ты, ну не расстраивайся - ты держись там! :)
     
  • 2.47, Пользователь Debian (?), 15:03, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> с такими достоинствами скриптовых языков, как ... защищённость от ошибок
    > Вот это - неправда, скриптовые языки плохо защищают от ошибок в целом.
    > Может имелось ввиду от пределённого класса ошибок?

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

    "Why should I have written ZeroMQ in C": http://250bpm.com/blog:4
    "Errors are values": https://blog.golang.org/errors-are-values

    Исключения там тоже есть, но они используются для исключительных ситуаций, а не для компенсации отсутствия стратегии обработки ошибок и отсутствия множественных возвращаемых значений (привет C++, C# и Java).

     
     
  • 3.53, Аноним (-), 16:59, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > отсутствия множественных возвращаемых значений

    Ты реально думаешь что в C++ нельзя вернуть структуру?

     
     
  • 4.55, Пользователь Debian (?), 17:09, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> отсутствия множественных возвращаемых значений
    > Ты реально думаешь что в C++ нельзя вернуть структуру?

    Ты реально думаешь, что из батона нельзя сделать троллейбус?

     
     
  • 5.61, rob pike (?), 17:40, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >  return {20, std::string("baz"), 1.2f};

    Это по-вашему троллейбус?

     
     
  • 6.66, Андрей (??), 17:53, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Так не в том проблема. Это возможно, но ведь никто не использует эту прекрасную возможность!
     
     
  • 7.77, rob pike (?), 19:27, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вы полагаете что у языка Go есть особая уличная магия, которой по странному стечению обстоятельств лишены все остальные языки, не позволяющая программисту на Фортране написать на нём программу на Фортране?
     
     
  • 8.85, Андрей (??), 20:28, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Я полагаю, что хорошими возможностями языка Go программисты пользуются, а С - ... текст свёрнут, показать
     
     
  • 9.86, rob pike (?), 20:38, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    И вам не кажется это, если бы оно было действительно так, немного странным К то... текст свёрнут, показать
     
  • 6.70, Пользователь Debian (?), 18:18, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это initializer list из C++?

    Покажите, пожалуйста, как выглядит деконструкция такого значения, которое вернули из функции, в точке его использования.
    Другими словами, если

      return {20, std::string("baz"), 1.2f};

    возвращается из фанкции foo(), то я бы хотел увидеть LHS в выражении

      whatever = foo()

    Я могу там написать

      int n;
      std::string s;
      float f;
      n, s, f = foo()

    ?

     
     
  • 7.72, Victor (??), 18:45, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >[оверквотинг удален]
    > Другими словами, если
    >   return {20, std::string("baz"), 1.2f};
    > возвращается из фанкции foo(), то я бы хотел увидеть LHS в выражении
    >   whatever = foo()
    > Я могу там написать
    >   int n;
    >   std::string s;
    >   float f;
    >   n, s, f = foo()
    > ?

    Можно так:

    std::tuple<int, std::string, float> foo();

    int n;
    std::string s;
    float foo;

    std::tie(n, s, f) = foo();

    Начиная с C++17 можно будет писать проще:
    auto [n, s, f] = foo();

     
     
  • 8.79, Пользователь Debian (?), 19:38, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо ... текст свёрнут, показать
     
  • 7.76, rob pike (?), 19:25, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    n, s и f придётся взять в скобочки, как в Perl (только неудобней, придется добавить auto).

    Можно и std::tie(retval, err) = foo(), особенно - err всё равно переиспользуется постоянно, да и retval обычно какой-нибудь size_t везде один и тот же.

     
  • 4.102, angra (ok), 09:26, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ты реально думаешь что в C++ нельзя вернуть структуру?

    Можно, но это не то же самое, что вернуть несколько значений. Более того, использование подобного для возврата ошибки не является общепринятой практикой в С++. Между "возможно" и "удобно" есть достаточно большая разница, чтобы существовало множество ЯП, а не один единственный.


     
  • 4.108, freehck (ok), 11:49, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> отсутствия множественных возвращаемых значений
    > Ты реально думаешь что в C++ нельзя вернуть структуру?

    Да не в этом дело. На самом деле оно вот в чём:

    > Let's say that need f is called by g. g needs several values from f.
    > Without multiple value return, f packs the values in a list (or vector),
    > which is passed to g. g then immediately unpacks the list.
    >
    > With multple values, the values are just pushed on the stack. Thus no
    > packing and unpacking is done.
    >
    > Whether this should be called an optimization hack or not, is up to you.

     
  • 4.115, Аноним (-), 17:30, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> отсутствия множественных возвращаемых значений
    > Ты реально думаешь что в C++ нельзя вернуть структуру?

    Какие-то гарантии, что это в штатном порядке сначала задействует регистры, а только потом костыли с копированием в память?

     
  • 3.58, rob pike (?), 17:35, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О разных механизмах обработки ошибок, их преимуществах и недостатках, можно дискутировать бесконечно.
    Для Go максимально "лобовой" (если не сказать "лоботомический") способ выбран верно, если учитывать его область применения - интерны и несложный код типа "бери из сокета, кидай в сокет".
    Главный минус обработки ошибок в виде проверки дополнительных возвращаемых значений в том что он крайне загромождает код и засоряет основную логику этой своей лапшой ифов, равномерно размазанной повсюду. В случае отсутствия каких-либо механизмов создания абстракций, заботливо не внесенных авторами в язык, написание более-менее сложной логики становится в любом случае делом невозможным, а простейшую засорять не страшно.
     
  • 3.60, Crazy Alex (ok), 17:39, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сюрприз - исключения - это и есть значения В тех же плюсах ты можешь throw хоть... большой текст свёрнут, показать
     
     
  • 4.71, Пользователь Debian (?), 18:30, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Это типичное заблуждение Ты имеешь только то, что передано в брошенном значен... большой текст свёрнут, показать
     
     
  • 5.75, Crazy Alex (ok), 19:22, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Дык и в Go можно возвращать bool и терять всё и вся Или вообще ошибку не возвра... большой текст свёрнут, показать
     
     
  • 6.103, angra (ok), 09:32, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > с поправкой на неудобную запись вида a.set(foo(add(b, c))).
    > defer - хорошо, но это если код запаникует. А на ошибки придётся
    > таки закрывать его явно?

    Ты явно не знаешь Go, так зачем же ты лезешь в это обсуждение?

     
     
  • 7.110, freehck (ok), 12:04, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты явно не знаешь Go, так зачем же ты лезешь в это обсуждение?

    Берём томик Толстого. Находим во всём повествовании одну крайне сомнительную строчку. "Толстой явно не знал жизни, зачем же он написал такой толмуд"?

     
     
  • 8.111, angra (ok), 13:37, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Я смотрю ты мастер передергивания 80-го уровня ... текст свёрнут, показать
     
  • 8.132, Аноним (-), 20:11, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    в гугле не ищется видимо, кроме слова толмуд допущены и другие ошибки ... текст свёрнут, показать
     
  • 4.90, Аноним (-), 21:55, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в си есть goto какраз для обработки ошибок
     
  • 4.100, Аноним (-), 03:13, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ОТкрой для себя longjump
     
     
  • 5.123, Crazy Alex (ok), 00:02, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Открой для себя чудеса отладки с longjump
     
  • 3.93, Comdiv (ok), 22:27, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > имелось в виду, что он заставляет программиста рассматривать
    > ошибки как значения, а не просто хреначить отовсюду исключения

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

     

  • 1.18, Кирилл72 (?), 12:28, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    C vendor так и не разобрался, кто-нибудь подскажет?
    Есть проект:
    $GOPATH/main.go

    Который импортирует "github.com/.../package" (который в свою очередь имеет свои зависимости).

    С гитхаба сливаю этот пакет в vendor - ошибка компиляции. Причем пробовал по-всякому размещать в vendor - с полными путями, относительными, укороченными: все равно не видит. Пробовал на 1.6

     
     
  • 2.19, Аноним (19), 12:44, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    конечно не будет работать
    надо обновится до Go 1.7
     
     
  • 3.36, Кирилл72 (?), 14:21, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Эта фича включена по умолчания с 1.6
     
     
  • 4.46, Пользователь Debian (?), 14:59, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Эта фича включена по умолчания с 1.6

    ...а работала с 1.5 при наличии GO15VENDOREXPERIMENT=1 в переменных окружении.

     
  • 2.27, Аноним (-), 13:37, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Есть проект:
    $GOPA
    .
     
     
  • 3.31, Аноним (-), 13:55, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    уж не занимается ли этот проект БУшными трубками?
     
  • 2.40, angra (ok), 14:40, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Есть проект:
    > $GOPATH/main.go

    Так делать не надо. Заработает только для простейших проектов и быстро приведет к проблемам.
    Любой проект должен быть в отдельной папке в $GOPATH/src/. Например $GOPATH/src/myproject/main.go или $GOPATH/src/github.com/username/projectname/main.go. А уже в ней или на уровень выше можно создавать vendor и класть в нее с полным путем. То есть будет что-то вроде
    $GOPATH/src/myproject/vendor/github.com/username/depproject/, а в $GOPATH/src/myproject/main.go в import включаем как "github.com/username/depproject"

     
     
  • 3.96, Кирилл72 (?), 23:39, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо.
     
  • 2.45, Пользователь Debian (?), 14:58, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    1 Должно быть GOPATH src ваш_проект main go 2 Положите пакет в GOPATH src ва... большой текст свёрнут, показать
     
     
  • 3.97, Кирилл72 (?), 23:40, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо.
     

  • 1.25, Ариска (?), 13:32, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хороший язык? Лучше жабки с питонами?
     
     
  • 2.39, angra (ok), 14:35, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да. Зависит от задач.
     
  • 2.44, rob pike (?), 14:52, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Хороший язык?

    Что такое "хороший язык"?

    > Лучше жабки с питонами?

    По каким критериям, на каких задачах, в каких условиях?

     
  • 2.56, Аноним (-), 17:15, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Для написания I/O bound серверов - хороший, до тех пор пока не упираетесь в GC-паузы.
     

  • 1.32, Аноним (-), 13:58, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Чем оно лучше APL?
     
     
  • 2.59, rob pike (?), 17:38, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как что-то может быть лучше APL?
     

  • 1.49, Гонаним (?), 15:53, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Обновился и что-то "beego run" теперь отрабатывает весьма долго :(
     
  • 1.80, Аноним (-), 19:47, 16/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А Go - это адекватная замена Python? Вот захотелось научиться программировать, то в какую сторону смотреть? Хотелось бы увидеть развернутый ответ.
     
     
  • 2.82, Аноним (-), 19:56, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если для школьных лаб, сгодится и Python. Уровень вхождения очень низкий, гитхаб завален проектами на нем.
     
     
  • 3.84, rob pike (?), 20:00, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Человек ведь о другом спрашивал.
    Между "научиться программировать" и "быстро лабать лабы" разница не просто огромная, но во многом даже принципиальная.
     
     
  • 4.87, _ (??), 20:49, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да не - всё он верно сказал.
    Даже вон в "великом и ужастном" MIT - переключились с scheme на Python ....
     
     
  • 5.95, rob pike (?), 22:35, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Еще через два десятилетия, когда все джаваскрипты будут состоять уже из одних функторов с монадами, MIT перейдет с Python на ML.
    Не нужно переоценивать MIT, и не нужно недооценивать их бюрократизм в поспевании за индустрией.
     
     
  • 6.118, _ (??), 19:48, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Обучение програмированию (а мы вель о нём?) к "поспеванию за индустрией" ... нк никак! Ну совсем никак! :-) Иди в дупу Роб, лучше го для фряхи почини! :-р
     
     
  • 7.121, rob pike (?), 20:06, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это смотря кого стремиться выпускать, "готовых к трудоустройству джава-кодеров на Spring" или, например, людей, способных делать что-то новое и решать сложные проблемы.
    Студенты MIT, во всяком случае часть их, которой интересно второе, кстати говоря, к переходу на Python отнеслись очень прохладно и ругали MIT именно на основании того что "мы же MIT а не бангалорский техникум".
     
     
  • 8.124, Crazy Alex (ok), 00:05, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще идея перехода была, насколько я понимаю, в том, что основная проблематика... текст свёрнут, показать
     
     
  • 9.127, rob pike (?), 01:40, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Только вот реалтаймовые системы строят всё больше на Scala, а совсем не на Pytho... текст свёрнут, показать
     
     
  • 10.129, 123 (??), 11:07, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Убежали от языков, где легко сделать ошибку по причине неучтенных побочных эффек... текст свёрнут, показать
     
  • 9.134, rob pike (?), 11:20, 20/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что говорят в индустрии https news ycombinator com item id 7766908 ... текст свёрнут, показать
     
  • 2.83, rob pike (?), 19:57, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нет, неадекватная.

    Куда-нибудь в сторону противоположную Алголу60. На языки ML-семейства, например.

     
     
  • 3.88, _ (??), 20:50, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А потом долго и нудно искать работу ...
     
     
  • 4.94, rob pike (?), 22:30, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Задачи "найти работу" и "научиться программировать" - это разные задачи, в общем случае ортогональные.
     
     
  • 5.119, _ (??), 19:50, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Даааа? А кто тут пел странное? -> http://www.opennet.dev/openforum/vsluhforumID3/108843.html#95:-)
     
  • 3.125, Crazy Alex (ok), 00:09, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    В той стороне - теоретики от CS. Программирование - не там. И да, как альтернатива Питону Go - вполне приличный вариант.
     
     
  • 4.126, rob pike (?), 01:29, 18/08/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Программирование - пока не там, но учиться и учить желательно тому где оно будет.
    Малоизвестная социальная сеть для котиков уже даже специальный синтаксис для OCaml сделала, чтобы джаваскрипт-поколение проще было переучивать. Даже Java уже с лямбдами.
    Поэтому переход MIT с Scheme на Python особенно забавен, в полном соответствии с принципом всегда учить вчерашнему дню.
     
  • 2.89, Led (ok), 21:03, 16/08/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > А Go - это адекватная замена Python?

    Довольно сложно найти адекватную замену чему-либо неадекватному.

     

  • 1.101, Лютый жабист_ (?), 05:19, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    "позволяет добиться производительности, сопоставимой с программами на языке Си"

    Ох уж эти сказочники... до анси си как ни страдай над кодом, как до луны.

    До c++ и то только жабка местами дотягивается. Но её-то мы любим не за то...

    А go, rust и остальное - увы, и до жабы не доросли по скорости. :(

     
     
  • 2.104, 123 (??), 09:47, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >rust и остальное - увы, и до жабы не доросли по скорости

    Шта?
    http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=rust&lang2=java

     
     
  • 3.105, Аноним (-), 10:50, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Лол, опять замеры времени старта jvm и вызовов функций на С? Серьёзно. Этот бенчмарк полное г..но, измеряющий непонятно что. Перформанс слишком сложная штука чтобы вот так в лоб сравнивать языки и платформы.
     
     
  • 4.112, angra (ok), 13:50, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В binary-trees 8 секунд из 12 это старт jvm? А в 23c nbody сколько ушло на старт jvm? А теперь на их фоне глянем на k-nucleotide, выполнившимся за 0.5с, сколько там ушло на этот мифический старт jvm?
     
  • 4.116, Аноним84701 (?), 17:35, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Лол, опять замеры времени старта jvm и вызовов функций на С?
    > Перформанс слишком сложная штука

    С десяток секунд запускающийся и «разогревающийся» grep или mv? Чур, чур меня от таких «улучшений».

     
  • 2.114, Аноним (-), 17:25, 17/08/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Ох уж эти сказочники... до анси си как ни страдай над кодом,
    > как до луны.

    Расскажи нам, из какого стандарта вот это
    [CODE]
    _m128 v0 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(0, 0, 0, 0));
    [/CODE]
    И как ты собрался писать быстрый код на голом анси. Кстати, анси — это стандарт такой, хотя многие упорно путают с std89.

     

  • 1.107, Аноним (-), 11:29, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    lol no generics
     
  • 1.120, rob pike (?), 20:00, 17/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > that compiler speedup is bullshit, since the premature switch to the Go bootstrapping compiler in 1.5 slowed everything down 4x
    > It's like a store that sells a T-shirt for $10 fifty weeks out of a year and then raises the price to $20 for a week before Black Friday or some other holiday and then puts it 'on sale' for the same price it usually is so they can say 50% off.
     
  • 1.128, Аноним (-), 06:28, 18/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    го становится все сильнее и сильнее
     
  • 1.131, Аноним (-), 19:38, 18/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да, размер скомпилированного файла не мешало бы уменьшить
     
  • 1.135, Аноним (-), 18:01, 22/08/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как в структурах теги сделать для нескольких парсеров XML, JSON, Protobuf?

    ... {
        Handle int    'xml:"handle",json:"handle"' - не работает
        Handle int    'xml:"handle";json:"handle"' - не работает
    }

    Кто-то писал и сталкивался?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру