Найти в Дзене

Как на самом деле научиться Go

Оглавление

От Marpa3D, на основании статьи Jhon Arundel

Как на самом деле научиться Go
Как на самом деле научиться Go

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

Практикуйтесь каждый день

37 лет я тренировался по 14 часов в день, а теперь меня называют гением.—Пабло де Сарасате

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

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

«Практикуйтесь каждый день»: легко сказать, конечно, но трудно добиться в действительности, по крайней мере, для тех из нас, кто занят жизнью (а это все мы). Советую нам «делать маленькие шаги», пытаясь установить новую привычку. Эта великолепная идея.

Например, не начинайте заниматься по часу в день; это просто не устойчиво. Ни у кого из нас нет свободного часа в день, мы просто ждем какой-нибудь деятельности, такой как обучение Go, чтобы заполнить его. Вместо этого начните с 15 минут в день . Может показаться, что этого времени недостаточно, чтобы узнать что-то полезное, но суть не в этом. Суть в том, чтобы выработать привычку к ежедневной практике.

Выберите время дня, когда у вас больше всего умственной энергии и сосредоточенности (обычно в начале дня, а не позже). Назначьте себе повторяющуюся встречу в своем календаре на 15-минутную сессию Go; по возможности в одно и то же время каждый день. Так легче установить привычку.

Когда придет назначенное время, переведите себя в режим «Go»: сядьте за компьютер, откройте редактор кода и загрузите свой текущий проект. Вам может вообще не хотеться ничего делать. Это нормально. Ваша цель — просто провести 15 минут в ситуации, когда вы можете изучать или практиковать Go.

Если все, что вы делаете, это смотрите на свою программу в течение 15 минут, а затем выключите компьютер, все в порядке. Вы сделали это. Вы выиграли. Просто продолжайте делать это каждый день. Ваша единственная цель — убедить свой мозг в том, что эти регулярные сеансы важны и что он должен что-то делать.

Если вы сможете продолжать ежедневные сеансы в течение двух недель, вы почти наверняка обнаружите, что для начала каждого сеанса требуется гораздо меньше усилий и требуется меньше силы воли. В конце концов, это станет нормальным и естественным, и вам не нужно прилагать усилия, и вы обнаружите, что на самом деле не хотите останавливаться после предписанных 15 минут (это нормально. Вам не нужно!)

Ежедневная практика. Совет от Marpa3D
Ежедневная практика. Совет от Marpa3D

Написать код

Снимите обертку, откройте рот, вставьте маффин, ешьте.—7-11 инструкций по приготовлению маффинов

Существует множество способов изучения языка программирования, такого как Go: вы можете читать книги , смотреть видео , читать учебные пособия и сообщения в блогах; все это ценно. Но, безусловно, самый эффективный способ научиться писать на Go — это писать на Go . Не проводите викторины или собеседования на время, не отвечайте на вопросы с несколькими вариантами ответов, вместо этого напишите программу .

Буквально не имеет значения, о чем программа. На самом деле вам даже не стоит беспокоиться о том, чтобы выбрать полезные проекты; просто напишите какой-нибудь Go, который делает что угодно. Смысл в том, чтобы тренировать мышцы Go. Вы все равно должны делать это, даже если вы пишете Go каждый день на работе; вам нужен проект без ставок, без ожиданий, без дедлайнов, и где вы можете делать все, что хотите, что, как правило, не относится к рабочим проектам.

Вот несколько идей:

  • Простой калькулятор
  • Маленький книжный магазин
  • Эмулятор процессора
  • Приключенческая игра
  • Проверка ссылок на сайт
  • Треккер привычек
  • Клиент погоды
  • Космическая игра

Ваш проект не обязательно должен быть уникальным, новаторским, сложным, полезным или даже интересным (ну ладно, если он интересный). Просто сделайте что-нибудь . Распечатайте простые числа, или посчитайте количество файлов в каталоге, или сыграйте в крестики-нолики, или в игру Конвея «Жизнь» , или нарисуйте множество Мандельброта . Вы поняли идею. Выберите проект и начните.

Читать код

Компетентный программист полностью осознает строго ограниченный размер собственного черепа; поэтому он подходит к задаче программирования с полным смирением.—Эдсгер В. Дейкстра, «Скромный программист»

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

Исследуйте проекты GitHub для Go; случайным образом выберите то, что выглядит интересно, и начните читать. Читайте документацию, читайте код. В идеале клонируйте репозиторий и просматривайте его с помощью собственного редактора со специфическими для Go средствами навигации и аннотирования кода.

Читайте большие программы, такие как Kubernetes, Terraform или сам Go. Читайте небольшие программы для начинающих. Прочитайте код в стандартной библиотеке. Читайте решения задач по программированию. Ознакомьтесь с исходным кодом инструментов командной строки, веб-браузеров или операционных систем. Узнайте, как собираются проекты, как организуется код и как функции и типы именуются и группируются вместе.

Создайте группу с друзьями или коллегами, где каждый из вас прочитает кусок кода Go и обсудит его. Что в нем было интересного? Что было для вас новым? Что ты не понял? Что, по вашему мнению, могло быть неправильным или что можно было бы улучшить? Какие идеи вы могли бы позаимствовать для собственных программ? Что познакомило вас с совершенно новой темой, о которой вы никогда раньше не слышали?

Студенты иногда спрашивают: «Но как мне читать код? Начать ли с первой строки первого файла и работать ли последовательно? Читать бегло или читать построчно? Должен ли я следить за каждым вызовом функции или сначала разбираться в высокоуровневых вещах, а затем углубляться?»

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

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

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

Продолжение следует!.. Читайте нас дальше. Будет интересно!)

Подробнее о нас на marpa.su