3/5/2016 · Для гиков Технические темы

Go или не Go?

Цель этого поста попытаться ответить на ряд вопросов которые я получаю время от времени. Самый популярный это "стоит ли изучать?", второй по популярности "а как это сделать?" и 3й - "это ведь отстой, как ты мог сказать про него хорошего?"

Давайте по пунктам. На вопрос "стоит ли его изучать", я смело скажу - да, стоит. И этому есть пара весомых причин:

Теперь попробую развернуть, обосновать и ответить за все.

Писать небольшие и средние проекты на Go на удивление приятно, быстро и результативно. Я не знаю, как будет в случае действительно больших проектов, такого опыта у меня пока не много, но с мелкими и средними все в порядке. С момента моего практического соприкосновения с Go, я написал на нем целую кучу того, где я раньше использовал python, и где мне всегда казалось, что это слишком много для python, либо где использовал java и ощущал, что java это перебор для такого. Не бахвальства ради, но прояснения для, вот короткий список:

В процессе столь тесного общения с Go я заметил целый ряд особенностей:

Если к этому моменту я вас убедил и ваши рукава засучены, а пальцы зависли над клавиатурой в непреодолимом желании попробовать, то вот вам ответ на вопрос "как и что учить?". Во первых, я бы не советовал читать книги по Go. Да, есть пара достойных книг которые может и стоит почитать со временем, но гораздо практичней будет просмотреть 3 ресурса:

  1. Go by Example – очень лаконично, и почти о всем, что надо для быстрого старта.
  2. Learn X in Y minutes – прелестный способ, мой личный фаворит.
  3. How to Write Go Code - тоже коротко и сердито.

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

По поводу "это отстой, a не язык". Тут мне трудно спорить и не только потому, что я это и сам говорил. Язык, для ценителей, на самом деле не самый ... выразительный. И для беглого взгляда, программа на Go выглядит странно, а для многих неприятно. Однако, к тому, как оно выглядит привыкаешь быстро, ну и это "бее" можно выдать и о любом новом синтаксисе. Я помню, как меня доставал по началу питон со своими отступами и java с своими длинными конструкциями.

И про скудность языка тоже не поспоришь. Да, он такой. Да, там нет многого из того, что хотелось в том числе и мне. Однако, как и все практичное в нашей области, Go это компромисс. И этот компромисс действительно выглядит не особо привлекательно со стороны. Я вполне понимаю критиков языка и местами разделяю их позицию, за исключением их вывода - "это неподходящий язык, в топку его". Из моего практического опыта эти компромиссы не настолько суровы как кажется со стороны. На Go можно писать код, можно читать код и оба эти процесса на удивление приятны. Тут есть какой-то особый феномен который я затрудняюсь описать. По всем признакам Go должен был оказаться провалом и ошибкой природы, но на практике это реально рабочий инструмент вполне подходящий к целому классу задач.

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

P.S. перечитав все, что я тут нанес, с удивлением обнаружил, что получилось с креном во "все хорошее". Нет, у меня есть длинный список и "всего плохого", и может я об этом отдельно напишу. И еще я собирался рассказать, как жить в Go на практике, т.е. в чем и как писать, что и как использовать. Может и до этого дойдут руки...

Comments powered by Disqus