При изучении иностранных языков одна из распространенных практик - создание флэш-карточек. Такие карточки обычно содержат на лицевой стороне слово или конструкцию и ответ на то что это на обратной стороне. Люди создают иногда тысячи таких карточек, чтобы запомнить самые популярные слова и уметь поддерживать самый простой бытовой разговор.
Казалось бы, для изучения программирования это прекрасно подходит, потому что в ЯП “слов” куда меньше чем в естественных языках и эта техника подходит прекрасно.
Но при изучении языков программирования дела обстоят иначе.
Единственный автор из знакомых мне, кто продвигает эту идею, это Zed Shaw (Learn Python the Hard Way). Для большинства программистов выучивание наизусть кажется чем-то устаревшим или они убеждены, что программирование учится только практикой при непосредственном написании кода, а “зубрить” что-то это дело далёкого прошлого.
По моим ощущениям сегодня есть 2 подхода к изучению нового ЯП:
- “Олдскульный” - чтение книг (мануалов, справочников, учебников, стандарта) и постепенное освоение материала глава за главой.
- “Современный” - это всякие интерактивные тренажеры, упражнения с тестами, обучение-проектами, то что обычно продвигают на курсиках.
Но я хочу сказать, по независимо от используемого подхода (или комбинации подходов) флэш-карточки это один из самых больших
бустов при обучении.
Умение сказать “что это”, даже без полного понимания всех нюансов (“как это работает”) даёт возможность “читать” любой код.
Читая код с полным пониманием, что значит каждый символ на удивление позволяет понимать программы, даже если мы пока не осознаём точно как именно все работает.
Во-вторых, возможность воспроизвести конструкцию синтаксиса без того, чтобы заглядывать в доки это экономит не только время, но и снижает ментальное напряжение
(по себе знаю, даже заглянув уже 500 раз в справочник, всё равно можно забыть через 10 минут как выглядит тернарный оператор в Python
).
Носитель языка в данном случае прямо перед нами - это собственно компьютер, и “разговор” с ним получается гораздо менее напряжным когда у нас в голове легко всплывают все нужные слова-значения.
Для старта нам достаточно выделить группы:
- Ключевые слова
- Основные типы
- Базовые конструкции (if-else, loop и т.д.)
- (Опционально) tooling: вещи вроде
python -m venv .venv
,go run main.go
и т.п.
Не обязательно 100% покрытие всех вещей за один раз (хотя для какого-нибудь Go
или Lua
реально выписать весь синтаксис за раз :)
можно выбрать основные, и затем пополнять их постепенно.
Физические карточки (плотную бумагу для карточек удобно заказать на каком-нибудь Ozon) очень хорошо работают, есть и электронные варианты:
- Anki
- Oboete
- Все что угодно по запросу
flash cards app
Серьёзно, тратя 10-15 минут в день на повторение карточек, можно осваивать учебный материал намного быстрее. Если метод хорошо зарекомендовал себя у студентов и изучающих иностранные языки, то почему бы программисту не попробовать его использовать.