Pull to refresh

Comments 55

Спасибо за книгу! Есть еще и gotour, где за 70 коротких шагов даются основы языка Go.

P.S. Для тех, кто будет запускать Go приложения на Google App Engine – _go_app запускает сразу все файлы .go.
Еще что – по ссылке .tex идет, а для тех, кто не может/не хочет компилировать из него книгу – можете скачать и PDF

http://www.miek.nl/files/go/
Александр, спасибо за уточнение. Но ссылка у меня имеется:
свежую версию которой можно всегда скачать у автора
а то, что по ссылке PDF сейчас добавлю…
Точно! Машинально ввел git clone… и уже потом стал искать PDF.

Буду внимательней читать :)
Good news, everyone! :) Может в этот хаб я начну писать не только комментарии.
Да, пожалуйста! Минимум один благодарный читатель у Вас уже есть :)
Три! И думаю станет еще больше.
А кто-нибудь из благодарных читателей имеет что нить в стадии продакшн на Go?
Вполне логично предположить, что изучающие Go вряд ли имеют что-либо в продакшене или хотя бы в деве. Однако, вы натолкнули меня на интересную идею — публиковать статьи по Go на примере совместно создаваемого хабрасообществом проекта.
У меня есть вот какая идея: сделать опенсорсный облачный сервер со встроенной rss-читалкой (типа google reader), файловым хранилищем (наподобие dropbox), фотогаллереей, историей сообщений из разных IM, контактами, возможно с интеграцией с соцсетями и прочими бытовыми ништяками. Для безопасности сделать, чтобы на сервере информация хранилась в зашифрованном виде.

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

Есть, конечно, ownClowd, но они пока не так далеко ушли и вполне можно конкурировать и/или даже сотрудничать. Тем более Go идеально подходит для таких целей, а работа легко параллелится между несколькими программистами.

Я уже давно хотел сам начать, но боюсь, что не осилю :)
Вы представляете себе бюджет такого проекта? :) Не столько издержки на разработку, сколько постоянные издержки на инфраструктуру?
Я, наверное, не совсем правильно выразился. Бюджет нулевой. Проект свободный (и как слово, и как пиво). Пользователь сам арендует железо и устанавливает туда наше ПО.

Аренда простенького VPS — вполне подъемная цена. Тем более вполне можно хостить это на своем домашнем сервере, на котором вдобавок качаются торренты и прочее… Не говоря уже про то, что если не налягать на файловое хранилище, то можно бесплатно пользоваться серверами Google App Engine или Heroku, не выходя за лимиты.

Например Heroku разрешает использовать один процесс, 512мб оперативной памяти и 5Гб базы данных бесплатно. Для одного пользователя более чем достаточно.
Я уже джва года хочу такой сервис.
Я думаю, многие гики хотят ;) И чем больше у нас гаджетов, тем больше мы зависим от облака.
Извините, пожалуйста, на самом деле я вас троллил. Видимо, слишком тонко =(
Go на самом деле может оказаться интересным, особенно с детальными статьями, как вы это умеете делать!
Имея уже что-то в продакшн благодарный читатель должен превратиться в писателя :)
Ура новому хабу! :)
На счет книжек:
Я себе прикупил и прочитал книжку "Programming in Go: Creating Applications for the 21st Century", книжка мне в целом понравилась, но она достаточно дорогая. А вот недавно случайно наткнулся на книжку The Way to Go: A Thorough Introduction to the Go Programming Language и не смог пройти мимо — цена PDF варианта — $4! Эту книжку я прочитать еще не успел, все еще читаю и она не сильно то и хуже чем книжка Mark'а (которая стоит $31.49 в PDF) :)
А вот подскажите, в какой из них больше сделан упор использования для веб-приложений?
И разобраны ли примеры создания своих пакаджей (если да)?

PS: И как они свёрстаны, удобно ли читать? Делов том, что я читаю только с бумаги.
Как сверстаны на бумаге — я точно не скажу, но PDF аккуратнее у «The Way to Go». На web-приложения в книжке Programming in Go упора вообще никакого нет. Даже отдельной главы нет :) Некоторые примеры, которым нужно UI, используют web-сервер для этого, и все. Про свои пакеты основы даются.
«The Way to Go» я еще до этих частей (свои пакеты, веб-приложения) не дочитал, так что сказать ничего не могу.
Мне самому больше всего интересно было бы почитать, как лучше организовать структуру крупного Web-проекта, какие блоки выносить в отдельные пакеты, какие оставлять в одном пакете, но разносить по разным файлам и т.п. Но похоже что для этого нужно найти исходный код крупного Web-проекта на Go и изучать его, в вышеприведенных книжках ответа на этот вопрос я не нашел.
Тогда, пожалуй, ограничусь пока книгой голландца, тем более, что pirro стартовал в соседней ветке цикл статей по созданию полноценного веб-приложения.

Надеюсь «доброжелатели» в комментариях не отобьют охоту продолжать этот цикл и он не ограничится только вводной статьей.

Спасибо за ревью книжек.
А расскажите для каких задач лучше всего подходит Go? и заточен ли он вообще для чего-то?

Авторы языка, среди которых Роб Пайк и Кен Томпсон, позиционируют его как язык общего назначения. Хотя я пока что вижу как его используют только в веб (vitess используется в YouTube) и как заявляет Роб Пайк внутри Google он тоже используется. Ну и плюс Google App Engine Go 1 SDK есть.
На данный момент, у меня сложилось впечатление, что он целиком и польностью заточен под создание сетевых сервисов самого раличного плана. Во первых замечательный модуль «net» с которым можно за 5 минут сделать нужный socket, rpc или web сервер. Во вторых удобные concurrent примитивы — goroutines и channels. Плюс ко всему этому весь ваш код автоматически асинхронный без ужасных callback-ов — планировщик goroutines планирует исходя из системных вызовов.
Хм. Проще сказать для чего он не подходит. Для написания драйверов он подходит не очень хорошо (хотя в описании языка его называют вполне пригодным для системного программирования). Для каких-то особо критичных по быстродействию задача — тоже. Но для всего, для чего подходит Python или Java — Go подойдёт лучше.

В своих проектах мы используем Go уже больше года в продакшене, а до этого ещё год гоняли в бетах и девах. Если говорить конкретно о нашем случае, то мы применяем Go для создания HiLoad («без пяти минут realtime») веб-приложений, способных отвечать динамическими результатами практически со скоростью отдачи статики Nginx-ом*

Почему был выбран Go — разговор отдельный. Если коротко, то требовалось достичь оптимальной эффективности по двум критериям — скорость и простота разработки/отладки/поддержки и непосредственное быстродействие. Вне всяких сомнений C++/C и даже FreePascal решения оказываются быстрее, но они же значительно проигрывают в простоте реализации. И меня с первого взгляда покорила уже много раз упомянутая реализация concurrent, равно как и поддержка Unicode на таком уровне, что переменные или функции можно называть по русски (хоть это и не самая мудрая мысль, но для дев-версий бывает удобно писать Разобрать(ДанныеКлиента)

* — при использовании GCCGO, вместо нативного Go.
А как вы относитесь к проблеме с библиотеками, скажем, для того же доступа к БД? Меня сильно, в своё время, оттолкнуло то, что для каждой задачи 150 библиотек и не ясно какая хорошая, какая плохая, какая загнётся завтра, а какая через 5 лет. Копаться во всех этом ворохе, тестировать — терять время.
Не замечал в Go такой проблемы :) Две-три библиотеки на DB, отличающиеся стилем кода.
Хорошо, приведу пример:

mysqlgo — MySQL bindings for Go by Eden Li.
libmysqlgo — Another wrapper for the MySQL C API, by Bourke Floyd.
go-mysql — MySQL wrapper for Go by Masaaki Yonebayashi.
GoMySQL — A quite complete threadsafe MySQL client library written in Go. By Phil Bayfield.
mysql-connector-go is a package to connect to MySQL from Go by Gerben Peters.
MySQL Client Library A MySQL client lib in Go. By thoj.
MyMySQL — Another MySQL client library written in pure Go. By Michał Derkacz.

И это только то, что более-менее на слуху. Кто все эти люди и стоит ли им доверять кусочек своего проекта? :)
И это только то, что более-менее на слуху. Кто все эти люди и стоит ли им доверять кусочек своего проекта? :)

Это можно сказать про любой open-source проект, будь то Python, Ruby или Lua :)
UFO just landed and posted this here
UFO just landed and posted this here
Лично мне удобно писать любой код (включая Go) в Smultron, что касается IDE, то существует кроссплатформенная, опен-сорс LiteIDE
UFO just landed and posted this here
UFO just landed and posted this here
Хотел к Eclipse прикрутить плагин, но его вроде как уже и не существует.

Как не существует? Вот на днях вышла версия 0.7.1: code.google.com/p/goclipse/
Я в TextMate 1 пишу (TextMate 2 пока что не поддерживает). Где-то в интернете видел список – там и Geany, Sublime и другие.

А вообще есть набор плагинов для vim с автодополнением и не только.
Думаю, говоря «где-то в интернете» вы имели ввиду вот этот список. Это наиболее полный (из известных мне) список расширений для IDE и подсветка синтаксиса для большинства редакторов.
А на PhpStorm кто-нибудь пытался ставить расширение от Идеи? Поставилось без проблем, но кажется мне совсем не работает.
UFO just landed and posted this here
Наконец будет куда положить свои сетевые тулзы на Go, которые уже год разрабатываю.
Надеюсь пригодятся и как пример программирования и для применения по назначению.
Спасибо всем за ссылки на книги, теперь знаю что можно давать желающим изучить основы языка.
Go rockz!
Не откладывайте в долгий ящик! Ждём интересных постов.
UFO just landed and posted this here
Для dev — родной Go, для продкшена — GCCGO.
UFO just landed and posted this here
Действует принцип «лучше день потерять, потом за пять минут долетать» :) Покуда идёт разработка и отладка, эффективнее использовать родной Go, компилирующий моментально. Хотя если разрабтывается малый/средний проект, то и GCCGO работает достаточно быстро. Но вот для финальной продакшн-версии используется однозначно GCCGO. Уж не вникал какими именно бубноплясками это достигается, но производительность (эффективность бинарного кода) действительно значительно выше.
Доброго времени суток! Спасибо за информацию и полезные ссылки. У меня вопрос по поводу ссылки на pdf-книгу: по указанной ссылке имеется огромное множество документов, которые отсортированы по дате, начиная с самой старой и заканчивая самой новой. Вижу, что имеется два варианта книги: [ДАТА]-go.pdf и [ДАТА]-go-kindle.pdf. Однако вариантов книги множество. По количеству страниц самые старые версии равны самым новым. Причём я вижу, что каждый день выкладывается новый вариант книги…

Она что, действительно ежедневно правится, или это какой-то скрипт её ежедневно считывает с некоторого репозитория и выкладывает в инет, не проверяя та же это книга или обновлённая?

Спасибо
И её вопрос: я просмотрел оглавление книг — оно одинаково, но по объёму страниц книги отличаются друг от друга в 2 раза. Я так понимаю, что «самая толстая» — самая полная. Для чего тогда имеется второй вариант, уменьшенный в 2 раза?

Спасибо.
Книга собирается из исходников каждый день. Наличие изменений не проверяется.
[ДАТА]-go.pdf и [ДАТА]-go-kindle.pdf различаются только размером станицы (21 x 29,7 см и 9 x 11.5 см соответственно). Если будете читать с компьютера или печатать — то берите [ДАТА]-go.pdf, если с ридера (Nook, Kindle, Sony и т.п.) — берите [ДАТА]-go-kindle.pdf.
Благодарю за разъяснения.
Sign up to leave a comment.

Articles