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

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

  1. Почему ты выбрал Go (плюсы/минусы)?
  2. Что ты уже написал на Go?
  3. Как лучше изучать Go, что посоветуешь начинающим?

Вот что они ответили.

Виктор, программист Почты Mail.Ru

Началось с того, что я делал несколько задач в проекте, написанном на Go. Мне понравилось, втянулся. Go хорошо подошёл для новых задач по соотношению производительности и лёгкости в написании/поддержке кода. Плюсы: читаемость кода, предсказуемость, производительность приложений на Go. Минусы: неидеальная интеграция с C-шным кодом.

На сегодняшний день я написал хранилище blob’ов для Почты Mail.Ru: в нём хранятся почти (но не совсем) тела писем. Также помогал переписывать Почту на Go.

Для начала в Go вполне достаточно изучить tour.golang.org. В стандартной библиотеке есть почти всё, чтобы написать не слишком сложный веб-сервис. Из стороннего сразу понадобятся разве что коннекторы к базам данных. Go достаточно простой, там нет сложной теории и хитрых логических концепций, мало «тонких» мест в спецификации. Мне кажется, что лучше всего изучать язык в процессе написания кода.

Советы:

  • Гуглить что-нибудь про Go лучше по слову «golang».
  • Лучше сразу использовать утилиты для vendoring’а.
  • Если есть сомнения по поводу работы компилятора/runtime, можно посмотреть его исходный код на Go. Он вполне читаемый и идёт в комплекте с компилятором.

Михаил, ведущий программист myTarget

«Мне скучно знать то, что раньше знал». Однажды интернет убедил меня, что хорошо знать новые языки программирования. Не просто другие, помимо привычных C++ и Python, а именно новые: за ними будущее. Я смотрел в сторону Rust, Go и Scala. Но при этом очень хотелось, чтобы изучаемый язык мог пригодиться именно мне. Года три назад я увлёкся Erlang’ом (и ФП в целом), но понял, что зарабатывать на нём — да ещё столько же, сколько на C++, — я не смогу (сразу, а не через пять лет). По этой же причине отпала Scala (жаль, мне она показалась весьма интересной), этот язык подразумевает серьёзный бэкграунд на Java. Rust просто не понравился сразу. Go, кстати, тоже не понравился: после C++ мне многого в нём не хватает, в первую очередь гибкости.

Но у Go есть богатая стандартная библиотека, горутины, он развивается, на нём пишут серьёзные вещи (Docker, Dropbox). И — обратная сторона того, что мне не понравилось, — Go требует несколько другого мышления. Не ООП, как в C++ или Python. Эта перспектива освоить «несколько другое мышление» меня и привлекает.

С прагматично-финансовой составляющей у Go тоже неплохо. Область его применения — мой любимый backend. То есть моим основным языком остаётся C++, но понемногу некоторые задачи решаются на Go — на том же самом рабочем месте, без потери в зарплате. На Go я пока написал только утилитку для распознавания и пополнения тэгами своей музыкальной коллекции. Это было, когда я только знакомился с языком. Тогда же понял, что Go не предназначен для таких задач.

А продакшен-код я не пишу, я его рецензирую. Осваиваю Go вместе с авторами кода. Я сам начинающий, так что могу только поделиться своими планами по изучению:

  • для начала прочитать что-нибудь, ознакомиться с синтаксисом и найти документацию (сделано);
  • попробовать написать что-то, решить для себя — надо ли тебе это (сделано);
  • если всё-таки надо — то писать код, читать чужой, писать, обсуждать, писать, читать код, читать статьи, писать, писать, ну, можно отдохнуть, книжку про Go прочитать, писать, обсуждать, писать и так далее. В общем, главное — практика.

Илья, программист Почты Mail.Ru

Я успел попрограммировать много на чём (C++, PHP, Java, Objective C). До того как прийти в Mail.Ru Group, писал на Perl. Писать на нём можно, но грустновато местами, так как очень много «исторически сложившегося» ужасного кода. В какой-то момент я услышал про Go и Rust, примерно в одно и то же время, и решил попробовать. Мне больше понравился Go. Со временем я даже придумал, как его использовать в работе. Плюсы — простота, компилируемый язык, строгая типизация, статическая компиляция.

На Go я писал для двух проектов Mail.Ru Group: для Cars Mail.Ru написал асинхронного «паука» для скачивания картинок из внешних источников с возможностью досрочной остановки скачивания; для Почты Mail.Ru — парсер/разборщика/отправителя логов. Остальное — домашние проектики, скорее экспериментального характера.

Тем, кто хочет освоить Go, нужно начинать писать код и гуглить. Может, понравится, а может, и нет. Есть масса видеоуроков, статей навалом. В Go есть свои фишечки, которые многим людям могут не прийтись по душе. :) Язык довольно простой, с небольшим количеством магии. Хотя по сравнению с Perl её почти нет. Изданы хорошие книжки (Алан А. А. Донован, Брайан У. Керниган. «Язык программирования Go»; Марк Саммерфильд. «Программирование на Go. Разработка приложений XXI века»), они помогут использовать более правильные подходы к разработке на Go и хорошо разобраться в инструментах.

Максим, стажер в Почте Mail.Ru

Когда я пришёл на собеседование, то претендовал на должность C-разработчика backend’а Почты Mail.Ru. А собеседовал меня Виктор. Диалог был примерно таким.

— Хочешь ли ты писать на С? — спросил Витя.
— Не очень, — честно ответил я.
— А почему?
— В нём много букафф.
— Согласен, идём тогда ко мне, будем писать на Go — и никакого С, — предложил Витя, хитро прищурив глаз.
— Чё-то страшно, на Go пишут хипстеры, а нам серьёзные штуки делать надо, — ответил я, уже почти согласный на всё.
— Да всё будет норм, зуб даю! — сказал Витя…

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

Если Go — ваш первый опыт в программировании, радуйтесь. Здесь гораздо меньше синтаксических конструкций по сравнению с Python, Ruby, Java, что должно немного упростить обучение. Go не самый элегантный язык, но при этом он очень выразителен. Огромное количество вспомогательных инструментов (gofmt, goimports, govet...) поможет забыть о многих раздражающих проблемах.

Для начала рекомендую прочитать пост effective go. Отдохнуть, перечитать effective go, через некоторое время ещё раз заглянуть в effective go. Effective go много не бывает, его стоит перечитывать время от времени. Всем важно понять (а некоторым — простить) модель памяти языка и запомнить: «Do not communicate by sharing memory; instead, share memory by communicating».

Александр, младший программист в Почте Mail.Ru

В январе я пришёл стажёром на должность С-разработчика. В первый день коллега спросил: не хочешь писать на Go? Я согласился. Так всё и завертелось. Переписал с Perl на Go почтовые треды, также на подходе Сишный messages/status. Сейчас переписываю почтовый API с Perl/C. На opensource-проекты пока что не хватает желания. :(

Новичкам сначала стоит пройти tour.golang.org :). Потом можно попробовать написать собственный API-сервис, чтобы охватить как можно больше возможностей стандартной библиотеки, используя http.HandleFunc. А дальше написать свой собственный http.HandleFunc :)

Роман, программист в группе разработки видеосервисов

Когда я пришёл в Mail.Ru Group, наш основной backend переписывался с NodeJS на Go. Так что это Go выбрал меня, но я доволен. У Go есть три основных преимущества перед NodeJS:

  • статическая типизация;
  • простое, но продуманное окружение;
  • и хорошая модель асинхронных/конкурентных вычислений.

Go очень сильно ориентирован на простоту, и этим он мне нравится. Однако за простоту приходится платить. Например, отсутствием generic’ов. Также не все проблемы решены и с вендорингом. Однако следует помнить, что Go не задумывался как язык с наиболее широкой областью применения, поэтому его минимализм во многом оправдан.

Мой опыт разработки на Go пока ограничивается микросервисами и консольными утилитами. Чтобы начать знакомиться с Go, рекомендую открыть спецификацию и читать по 20 минут перед сном, пока не вызубрите (шучу). Конечно, чтобы освоить язык, на нём надо писать. А для усвоения идиом хорошо бы полистать код стандартных библиотек Go. Ещё рекомендую effective go.

Дмитрий, программист в студии Allods Team

Я выбрал Go в основном потому, что мне не известны другие языки, в которых асинхронный IO можно было бы писать так же просто, как синхронный (разве что async-await в C#, но на *nix-системах он не очень популярен). Кроме того, язык прост в изучении, в стандартной библиотеке есть почти всё что нужно (и есть развитая экосистема сторонних библиотек); инструментарий лёгкий, без излишеств, хорошая документация. Из недостатков: мне не хватает generic’ов.

На текущий момент я написал на Go несколько утилит для внутреннего использования. Для старта будет достаточно изучения информации с официального сайта. Там есть краткий обзор и более полная спецификация плюс выступления с конференций.

На этом всё. А как вы изучали Go? Делитесь историями в комментариях.
Поделиться с друзьями
-->

Комментарии (34)


  1. polifill
    10.11.2016 12:50
    +1

    Выбирал, имея уже 15 лет опыта в программировании.

    Выбирал для следующих своих проектов чего посовершеннее.

    Java — много лишнего писать
    Scala — куда лучше, все равно Ява машина требует по минимуму много оперативки.
    Python, Ruby — медленные. Да и статическая типизация — это ж вещь.

    Выбирал как

    «а что у нас есть со статической типизацией, сборкой мусора и компиляцией».


    1. AnimaLocus
      10.11.2016 19:09

      Похожая ситуация, остальные приколы понимаешь со временем. :)
      Еще только C# вместе с .NET забыли, но я их отбросил из-за экосистемы MS.


  1. rodial
    10.11.2016 13:08
    +1

    В Go привлекла богатая стандартная библиотека, статическая компиляция, быстрота, ну и gofmt.

    Написал несколько приложений реализующих простое API. Последнее это сервис для управления системой из нескольких розеток на ESP8266.

    Начинал учить по http://golang-book.ru/.

    А вообще в нише простеньких web-сервисов golang просто великолепен.


    1. polifill
      10.11.2016 13:14
      +1

      Имею опыт разработки огромных веб-сервисов по микросервисной технологии большой командой.

      Абсолютно идентично.
      Также подходит.


      1. Scratch
        10.11.2016 13:43

        как справляетесь когда модели меняются?


        1. polifill
          10.11.2016 14:36

          В микросервисах модели частично снаружи.
          swagger используется.


  1. Siddthartha
    10.11.2016 13:58
    +3

    мне вот очень интересен go, но не могу перебороть отвращение, когда смотрю ближе. )
    скажем, упомянутую статью про 50 оттенков открыл с большим интересом, но первый же пункт вызвал полное непонимание, " Открывающую фигурную скобку нельзя размещать в отдельной строке" — издеваетесь? а второй пункт сразу же как бы отвечает — «да издеваемся и гордимся этим»)

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


    1. lookid
      10.11.2016 14:11
      +1

      Когда вам нужно будет за полгода написать 30 000 строк кода и не сгореть, то Go очень подходит. Особенно после C/C++.


    1. polifill
      10.11.2016 14:48
      +10

      Тут все абсолютно логично.

      Легко ПИСАТЬ код. Сложно ЧИТАТЬ чужой код.

      Пока вы работаете один — можете хоть отрицательные отступы использовать. Всем наплевать на ваш код. Интересует только то, что ваш код делает.

      Когда вы начинаете работать в КОМАНДЕ над ОДНОЙ кодовой базой, то использование единого стиля оформления решает сразу 2 проблемы:

      1. Вы быстрее вникаете в код ваших коллег.

      Чужой стиль вас не раздражает КАЖДЫЙ раз. Потому что он выглядет так же как и ваш код.
      А это — очень важно: посмотрите на себя, вас уже ЗАОЧНО начала раздражать скобка, что же будет когда вам придется ежедневно читать тонны чужого кода.

      Таким образом, вы сосредоточены на основной цели — на смысле программы, а не на том, как она выглядит.

      2. При использовании git и т.п. (а куда без них сейчас) вы видите в коммитах только то, что НА САМОМ ДЕЛЕ изменено. Вы не видете в коммитах, что кто то прогнал код через автоформатер и ПРОСТО изменил отступы на свой вкус — и коммит на 1000 строк получился из-за этого.

      Таким образом, вы сосредоточены на основной цели — на смысле программы, а не на том, как она выглядит.

      В других языках эти вещи все равно в крупных конторах делаются через внешние инструменты — линтеры, code style guide. В golang часть этого добра просто встроена в инструменты «из коробки» и подтягивает даже мелкие конторы под уровень наведения порядка в коде как в больших конторах.

      Можно было долго рассуждать какие отступы лучше, где лучше ставить скобку. Каждый бы решал по своему и в результате мы бы получили лишние затраты времени на написание code style guide по 100 разных версий в 100 разных конторах, да зоопарк оформления кода…

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

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

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


      1. Labunsky
        10.11.2016 15:22

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


        1. polifill
          10.11.2016 15:34

          gofmt запускать вовсе не обязательно. это настоятельно рекомендуется — и только.


          1. Labunsky
            10.11.2016 20:46

            Я имел ввиду немного другое. Например, компилятор ругается на неиспользуемую библиотеку (ему-то что?). Если подобные фичи тоже отключаются — тогда все в порядке, но я во время экспериментов такой возможности не нашел


            1. polifill
              11.11.2016 08:55
              -1

              Как только появляется возможность это отключать — в релиз билдят с отключенной проверкой.

              Вы никогда не видели в релизе программ, скопилированных с debug-информацией? Мне регулярно встречаются. Такова природа человека — человек ленив.

              Импорты — такая уж и не проблема. Нормальные редакторы/IDE для Go сами добавляют/удаляют импорты.


    1. polifill
      10.11.2016 15:08
      +2

      > но лично я, после си-подобной свободы синтаксиса

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

      Парадокс: слишком большая свобода С — это его недостаток, вовсе не достоинство. Из-за нее чаще получается неожиданное поведение компилятора.


    1. VGrabko
      10.11.2016 17:00
      -2

      вы платите скобочками за скорость компиляции ))


    1. stokker
      10.11.2016 19:26

      Так Go потому и востребован (одно из), что в нем заставляют писать код единообразно. Вам может в чем-то не нравиться какой-то ЯП, но деньги платят заказчики / владельцы конторы. Хотите у них работать — подстраивайтесь, но хотите — ищите другие ниши, где есть «Ваши» ЯП. Конфликт интересов надо правильно решать.


  1. bosom
    10.11.2016 15:10
    +1

    До Go основным языком был perl, для перехода с perl выбирал между 15 языками, долго выбирал..., так как натыкался на огромные слабости во всех языках, они все не доросли до perl.
    Обратил внимание на Go, он сразу понравился и стандартной библиотекой и github был аналогом CPAN и много чего, сделал ставку на него! Спустя 7 лет он остаётся лучшим, пишу на нем и буду продолжать писать!


  1. Barafu
    10.11.2016 18:39
    +4

    Когда заинтересовался этим Go, у меня был всего один вопрос: как на нём делать пользовательский интерфейс. Я обратился с вопросом к народу, и народ мне ответил, что я дурак, что время десктопов ушло, а все интерфейсы должны быть через Хром.
    Так что я себе решил: ну её, эту хипстерскую приблуду.


    1. xxvy
      11.11.2016 04:01

      А я как-то стеснялся спросить про десктопы. И всё время думал — как это народ умудряется скакать с языка на язык? Один проект на одном, другой на другом…
      Особенно с Go путаницу вносило постоянное его сравнение с C++.
      Думал, мож я не знаю чего? А то я, как дурак, сижу тут себе в C++ Builder в махровом энтерпрайзе, и чувствую себя олдфагом.


      1. Barafu
        11.11.2016 20:09

        Ну чтобы никуда не прыгать, есть Питон и Ява. Могут всё, работают везде. Нет, С++ круто, но по моему его главная проблема — слишком много устаревших практик в готовом коде и в головах самих программистов. Когда в 2016 году в совершенно не критичном коде видишь сдвиг указателя вправо на значение, взятое из указателя на указатель, или ручное написание Makefile с тучей условий, это хочется не рефакторить, а форматнуть вместе с диском и самим автором.


    1. polifill
      11.11.2016 09:07

      https://github.com/avelino/awesome-go#gui

      Ваша логика такова: язык похож синтаксисом на С — поэтому на нем можно делать десктопные приложения, подобные тем, что делают на С++?

      Делать так же как это делают с другими языками — библиотеки для создания GUI для Go есть
      http://eax.me/go-gkt-gui/
      https://habrahabr.ru/post/253519/
      Есть альтернативный путь — например LiteIDE написан с использование Go и QT и еще одного языка ;)

      Но, возможно, Вы путаете язык и и нативный дизайнер интерфейсов для него.

      Полноценный развитый нативный дизайнер интерфейсов для Go писать уже вряд ли кто будет, как и для любого другого нового языка. Тут ваши советчики правы — например, С# имеет лучшую заточенность на работу с GUI десктопа.


  1. Diaskhan
    10.11.2016 22:17
    +1

    ну тогда вопрос какой фреймворк быстрый использовать для веб разработки BPM платформы, все таки когда завезут IDE ??


    1. polifill
      11.11.2016 09:13
      -2

      Для веба у Go нет острой необходимости в фреймворках. Не переносите стереотипы с других языков.
      Для многих случаев вполне достаточно стандартной библиотеки а также не полных фреймворков, а отдельных модулей библиотек, например, из Gorilla Toolkit.
      BPM, вероятно, имеет смысл делать на микросервисах — тогда поглядите на Go-Micro.


  1. evnuh
    10.11.2016 22:39
    +3

    Для программистов, кто хочет научиться писать на Go — это можно сделать за два вечера, пройдя тур на оф. сайте. Дальше читать Effective Go. Да и собственно, кроме Effective Go (а это даже не маленькая книжка, а небольшой буклетик, размером тянет на статью) вам ничего не надо.

    Для программистов, которые не хотят учиться программировать на Go, тоже есть плюшки:
    1. В Go до сих пор нет нормальной полностью работающей экосистемы. Во-первых, нет IDE. Всё, что заскриптовано (плагины для всяких редакторов) — опирается на стандартную парадигму Go, то есть один GOPATH, в нём /src /pkg и /bin.
    2. Когда дело доходит до вендоринга (как без него вообще жить?) — половина этих плагинов уже отваливается, т.к. структура папок не by default.
    3. Когда дело доходит до нормального вендоринга (не просто положить зависимость в папку проекта, а положить зависимость конкретной версии из конкретной ветки) — то отваливается ещё половина плагинов. Тут же отваливаются половина стандартных тулзов самой go — например, go type, go vet и т.д. Эти тулзы, почему-то, читают бинарники, а не исходники, и читают их их GOPATH/pkg. Поэтому, если у тебя два проекта с одной зависимостью, но разных версий, то это всё начинает ругаться матом и т.п. Более того, go types вообще перестал работать в Go 1.7 из-за смены формата архивных файлов, выдаваемых компилятором.

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


    1. polifill
      11.11.2016 09:21
      -1

      1. IDE в Go есть уже очень давно:

      а) LiteIDE (кстати, написано с использованием самого Go)

      б) Jetbrains IntelliJ (а также Android Studio и любые другие на базе IDE Jetbrains, например, PyCharm) — это универсальная IDE, адаптация под любой язык, в том числе и под Go — делается плагином. https://plugins.jetbrains.com/plugin/5047
      Этот плагин активно развивается.

      в) Есть развитые плагины для основных программистких редакторов, которые превращают эти редакторы практически в IDE — vim-go для vim, есть для Sublime, Emacs, Atom и пр.

      2. Если вы используете какую то нестандартную систему вендоринга — извольте подстроить под нее свою IDE. Хотя бы пути укажите вручную.

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

      Конечно, инфраструктура не такая развитая как для Java или C#, но вполне сравнима с костылями, которые приходится делать для С++.


    1. polifill
      11.11.2016 09:41

      Дропбокс уже перешел на Go,
      Докер и сопутствующие утилиты написаны на Go,
      Хашимото (DevOps — Consul, Nomad и пр) поднял миллионы с использование Go,
      Kubernetes — самая перспективная на сегодня система управления микросервисными контейнерами написана на Go
      На Go переписаны нагруженные куски кода в Twitter и Youtube.
      CloudFlare в значительной части быстро работает благодаря тому, что код там на Go.
      eBay, Bitbucket и пр.

      А вы все еще стесняетесь использовать Go?

      К чему это я? Я утверждаю, что все эти ребята решили для себя ваши надуманные проблемы.

      А вы так и продолжайте ждать пока для Go сделают всё, пока сделают универсальную кнопку, нажав на которую вы сможете решить любую проблему в ИТ — или может лучше самому написать такую кнопку, под свою конкретную задачу?


      1. evnuh
        11.11.2016 16:47

        1. IDE. Что они есть, это не значит, что они хорошо работают. А они все работают плохо, по большей части из-за вендоринга. Просто скажите мне, каким вендорингом вы пользовались, учавствуя в больших проектах?
        2. То, что много кто пишет на Go я не сомневаюсь, это не значит, что они не испытывают боль такую же, как я, когда пишу на Go.
        Вы утверждаете, что они решили для себя мои «надуманные» проблемы. Ключевое слово здесь — «решили». Да, я их тоже решил, спокойно сижу и програмирую на Go, но чтобы этого добиться, мне приходилось «решать» какие-то простейшие проблемы.

        Вот вам задача, которую я поставил перед собой — хочу работать попроектно (вендоринг), что в каждом проекте был repeatable build (нестандартный вендоринг), чтобы я мог спокойно форкнуть какую-нибудь популярную либ, изменить её и использовать мой форк вместо оригинальной во всех проектах, при этом не меняя импорты в куче файлов во всех проектах (опять нестандартный вендоринг). Плюс хочу, чтобы мой код был чистым и автоматом проверялся на code style (плагины-линтеры, плагины-форматтеры, govet, gotype и т.д.). При этом хочу, чтобы моя IDE не была на Java и работала быстро. Ещё хочу не только билдить локально, но и деплоить на тестовый сервер по нажатию кнопки в IDE.

        Вопрос — я много хочу? Вроде бы стандартный набор разработчика, но почему каждая из этих фич заставляет меня писать костыли??? Вы правильно заметили, костыли сродни плюсовым. Но позиционирование у Go абсолютно противоположное плюсам — easy to learn, easy to use, easy to solve your problems.

        Жду описания вашего воркфлоу и как вы его уместили в стандартную экосистему golang.


        1. umputun
          12.11.2016 07:03

          У меня к вендорингу есть свои претензии, но похоже, что вы называете этим слово что-то такое, что не относится к обычному, появившимся еще в версии 1.5. С этим вендорингом все IDE и продвинутые редакторы работают как должно. Вопрос «каким вендорингом вы пользовались» заставил меня даже посмотреть на дату сообщения — сейчас есть единый и неповторимый vendor, который понимают все тулзы и все IDE и который не требует переписывания импортов.

          Эту часть «хочу работать попроектно (вендоринг), что в каждом проекте был repeatable build (нестандартный вендоринг)» я не понял вообще. Как попроектно относится к вендорингу? Если речь идет о том, что вы хотите все свои зависимости завендорить — ну так они ничем не отличаются от внешних зависимостей и положив их в vendor вы добьетесь repeatable build без всяких плясок и усилий. И «форкнуть какую-нибудь популярную либ, изменить её и использовать мой форк» тоже не проблема. Форкаем, меняем, кладем в vendor.

          «хочу, чтобы моя IDE не была на Java и работала быстро» — и чтоб синенького цвета? Если надо именно IDE то выбора особого нет, только на java. Если надо продвинутый редактор с пониманием Go – то таких есть штук пять.

          «ещё хочу не только билдить локально, но и деплоить на тестовый сервер по нажатию кнопки в IDE» — а это для Go делается каким-то особым и сложным способом? Я не знаю, какой уровень волшебства вы ожидаете, но у меня вообще ничего не надо нажимать и все это делается по коммиту. Ну и в IDE как и в редакторах это делается десятком разным плагинов, на любой вкус.

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


  1. markhor
    11.11.2016 12:18

    А почему именно сегодня день рождения?

    git log --reverse
    

    Если отбросить странные коммиты Brian Kernighan от 1972, 1974 и 1988 года (o_O; это тот самый? пасхалка?), то получаем

    commit 18c5b488a3b2e218c0e0cf2a7d4820d9da93a554
    Author: Robert Griesemer <gri@golang.org>
    Date: Sun Mar 2 20:47:34 2008 -0800

    Go spec starting point.

    SVN=111041

    Т.е. 2 марта день рождения.


    1. markhor
      11.11.2016 12:30

      Ага, нашел.


      1. markhor
        11.11.2016 12:31

        Оттуда:

        Robert Griesemer, Rob Pike and Ken Thompson started sketching the goals for a new language on the white board on September 21, 2007.

        Тогда 21 сентября. Сейчас ноябрь.


        1. polifill
          11.11.2016 12:49

          Мало ли.
          Например, к ноябрью они уже поняли, что это не просто упражнения для ума… — уже точно будет язык. Может имя придумали…


          1. pkruglov
            11.11.2016 17:53

            Новость о релизе была именно 10 ноября. Эту дату и приняли. Собственно, пруф в этом году https://blog.golang.org/7years, а самой первой новости видимо уже не сохранилось.


  1. VBauer
    15.11.2016 09:56

    Как банально это не звучит, но я купил книгу The Go Programming Language и начал читать, а главное делать задания, которые там даются. Кому интересно, здесь некоторые из них, которые я уже выполнил.