РСС

Ношу шлем, тяжело дышу…

Меня зовут Антон Шувалов. Я работаю в Lazada. Кроме программирования я пишу музыку и иногда занимаюсь дизайном интерфейсов. Я есть в Twitter, Facebook, и на GitHub. Вы можете написать мне email.

Если вы задумали порадовать меня небольшим подарком (не может быть!) — вот список моих мещанских мечт.

«An introduction to programming in Go», Caleb Doxsey

«An introduction to programming in Go», Caleb Doxsey

Недавно я отправился в славное путешествие в Пермь. Как раз перед самой поездкой я наткнулся на бесплатную книгу о Go «An introduction to programming in Go» от Caleb Doxsey.

Книга небольшая — я прочитал ее в дороге часа за 4-5. Большая часть совсем для начинающих: системы счисления, редакторы, базовые типы. С другой стороны, в там есть много интересного о типах, которых нет в моем любимом JS: pointers, maps, slices, о структурах, интерфейсах, тестах, синтаксисе, пакетах, которые идут с языком.

Когда я открывал книгу, я хотел научиться писать на Go утилиты, и инструменты, которые я сейчас пишу на NodeJS. В этом книга полностью себя оправдала. Я закрыл последнюю страницу, и решил написать на Go CLI для поиска документации в браузере прямо из терминала с возможностью хранить в ~/.search список сайтов для поиска. Я писал эту штуку последние пару дней на NodeJS, и вот что получилось на Golang. Правда, и там, и там код требует рефакторинга, так что не судите слишком строго! :D

The Pretty Wagon to Go

После NodeJS, Go выглядит чертовски круто ( ⚆ _ ⚆ ) Теперь я понял и могу согласиться с тем, о чем писал TJ Holowaychuk в своем посте «Farewell Node.JS».

Строгая типизация, проверка типов, синтаксиса и забытых переменных во время написания кода — это потрясающе! В JS я чувствую себя уверенно только с линтером, написав достаточно unit-тестов. В Go я начинаю думать, что успешный билд — это уже тест. Строгая типизация тоже выглядит потрясающе. Правда я еще не чувствую себя уверенно с некоторыми типами, вроде pointers, slices или maps. Возможно, структуры лучше подходят для тех вещий, где я пытаюсь использовать эти типы.

Документация в Golang

Мне очень понравилась идея документации — просто пишешь комментарии над методами. godoc сделает остальное сам:

// Finds the average of a series of numbers
func Average(xs []float64) float64 {}
godoc golang-book/chapter11/math Average

Gorutines

Многопоточность в Go очень приятна. Есть gorutines в которых запускаются подпрограммы, есть channels, которые обеспечивают транспорт между gorutines. По-моему, это выглядит гораздо проще, чем EventEmmiter‘ы в NodeJS и WebWorker‘ы.

func pinger(c chan<- string)
func printer(c <-chan string)

Еще раз о книге

Книга клёвая — и определенно стоит 4 часов чтения. У меня вот получилось что-то написать на Go практически сразу, после того, как я закончил ее читать, так что это отличный способ начать. Вообще в книге, очень много совсем элементарных вещей в программировании, так что, наверное, ее могут читать даже те самые «юноши бледные со взором горячим». Но если вы уже работаете с Go, то, как мне кажется, ничего нового вы там не найдете. Книгу можно скачать в PDF бесплатно, или читать прямо на сайте, так что… А почему бы и нет? :D

Прочитал. Попробовал. Понравилось.

фото: Martin Fisch

Подписывайтесь на РСС.

«Как рушатся комплексные системы», Ричард И. Кук
О фундаментальных проблемах больших запутанных систем
7 паттернов для рефакторинга JavaScript-приложений
Перевод отличной серии статей о проектировании и рефакторинге проектов
Музыка для работы
Мои плейлисты: теплый glitch, нежные девичьи голоса, интересная электроника и chillwave
Ссылколог
Коллекционирую полезные ссылки