Изучая программирование подобным способом, вы сможете понять, как выглядит структура хороших приложений. Представьте себя археологом, изучающим письменность древних цивилизаций. Благодаря этому методу вы окажетесь на несколько шагов впереди других начинающих программистов. Потому что в отличие от них, вы будете знать, как выглядит тот язык, на котором вы учитесь писать.
Перед путешествием всегда полезно изучить местность. В программировании дела обстоят точно так же.
Просмотрите пару качественных материалов по теме
Продолжая тему изучения местности, в качестве следующего шага я рекомендую вам пробежаться по тексту пары книг глазами, – именно пробежаться, а не читать их от корки до корки.
Суть данного этапа заключается в том, чтобы понять, какие в изучаемой области имеются основные темы и понятия. Затраченные вами усилия обязательно окупятся, когда вы почувствуете, что поняли, какие вещи вы будете изучать и как они соотносятся друг с другом.
Программка Hello World
На этом шаге вы тоже не будете читать книги или осваивать какую-то учебную программу. Вскоре вы этим займетесь – но только если захотите. (На самом деле выучить язык программирования можно и без книг, если следовать действиям, описанным в этой главе. Например, я буквально за пару недель сумел изучить языки Go и Dart, пользуясь лишь онлайн-документацией и следуя процессу, аналогичному тому, что мы здесь обсуждаем.)
Итак, сейчас ваша задача – создать самую простую программу, какую только можно написать на изучаемом вами языке. Помните, в главе «Как развить технические навыки?» я говорил об уровне, достаточном для старта обучения? Это и есть ваша текущая цель.
Чтобы почувствовать уверенность в своих силах и получить практические знания, вы должны начать программировать.
Поэтому мы начнем с программы Hello World. Большинство книг по программированию начинается именно с нее. Все, что она делает, – выводит на экран надпись Hello World. На данном этапе от вас практически не требуется разбираться в языке. Вам просто нужно ознакомиться с базовой цепочкой инструментов, необходимых для создания и запуска программы на выбранном языке программирования.
В учебнике, посвященном вашему языку программирования, наверняка есть текст этой программы. Если это не так, сделайте в Google запрос «Hello World + твой язык программирования». В Google есть все. В процессе создания программы Hello World вы поймете, как выглядит базовая структура программ на этом языке программирования.
Изучите базовые конструкции и попрактикуйтесь на реальных задачах
Ура! Вы добрались до этапа, когда можете открыть книжку или приступить к прохождению учебного курса! Сейчас вам будет определенно легче воспринимать материал, чем если бы вы сразу погрузились в него.
Ознакомьтесь с основными конструкциями языка, а затем попробуйте создать с их помощью несколько программ. Подумайте, какие реальные задачи мог бы решать ваш код, чтобы вы могли как можно лучше закрепить навык. Далее приведен список основных базовых конструкций любого языка программирования.
• Возможность вывода на экран.
• Базовые математические действия.
• Хранение информации в виде переменной.
• Организация кода с помощью функций, методов или модулей.
• Вызов функции или метода.
• Булева алгебра.
• Операторы if/else.
• Циклы.
Хорошая новость: если все перечисленное вам уже знакомо, считайте, что вы уже умеете базово программировать на любом языке. Да, в каждом случае синтаксис будет отличаться, но суть останется прежней. Данный этап займет больше времени, чем предыдущий. Изучите каждую из упомянутых конструкций, а затем поработайте с ней на практике.
В случае, если вы учите язык самостоятельно, постарайтесь понять, какие конструкции имеются в языке и в каком порядке их следует изучать. Если вы работаете по книге (а лучше нескольким), в ней должен быть прочерчен путь обучения, а также должны приводиться примеры и задачки различной сложности. Старайтесь всегда понимать, для чего вы учите ту или иную тему и где можно использовать полученные знания.
Завершив этот этап, вернитесь к программе, исходный код которой вы изучали в самом начале, и оцените, насколько понятнее она теперь для вас выглядит.
Усвойте разницу между функциями языка и библиотеками
Есть одна вещь, которая часто сбивает с толку начинающих программистов (особенно учитывая уровень развития нынешних языков программирования) – знание того, что является частью языка, а что – частью стандартных библиотек, которые поставляются вместе с языком. Во многих случаях эта разница будет практически незаметна, поскольку вы очень часто станете использовать библиотечные функции.
Однако, как я уже сказал, знать, где находится грань между библиотекой и самим языком, необходимо.
Вы можете считать меня формалистом, однако именно эта придирка поможет вам расставить по полочкам всю ту мешанину, которая наверняка осталась у вас в голове после всех предыдущих этапов. Разобравшись в этой теме, вы будете знать, что на самом деле большинство языков программирования куда проще и меньше, чем библиотеки. Подчеркну, что изучение библиотек более сложное дело, чем изучение языка программирования.
Дело в том, что программирование сегодня – это скорее умение использовать библиотеки и фреймворки, нежели доскональное знание языка. Именно поэтому я так много внимания уделяю важности понимания границы между языком и его библиотеками.
Это понимание позволит вам стать более продвинутым разработчиком. Зная, как найти библиотеку, которая поможет в решении той или иной задачи, вы будете создавать более качественный код, нежели любой «эксперт в языке».
Изучите имеющийся код и разберитесь в каждой строке
Если вы добрались до этого этапа, то вы уже должны быть знакомы со всеми основными концепциями изучаемого языка программирования, и должны иметь опыт применения большинства из них при решении реальных задач. Также вы должны понимать разницу между языком и его библиотеками.
На этом шаге вы все еще можете ощущать неуверенность в своих силах и не чувствовать, что разбираетесь в языке. Вероятно, вы уже понимаете, как работает каждая конструкция, но не имеете ни малейшего представления, как из этого всего слепить рабочую программу. Этот процесс можно сравнить с изучением иностранного языка с нуля.
На этом шаге многих начинающих программистов одолевает отчаяние, и они начинают думать, что им никогда не стать настоящими разработчиками. Одним из лучших способов продвинуться вперед и понять, где в ваших знаниях есть пробелы, это заняться изучением уже существующих программ, строка за строкой, добиваясь полного понимания их работы. (Да, вам не всегда будет очевидно, почему это работает именно так, но понимать, как это работает, важнее.)
Вопрос Джону!
Ты точно уверен, что мне не обязательно знать, почему код работает именно так? В чем прикол понимать «как», не понимая «почему»?
Посмотрите на это так: если вы не понимаете, как что-то работает, то вряд ли поймете, почему оно работает. Нельзя понять смысл предложения, не понимая смысла отдельных его слов. А если вы не понимаете смысл предложений, то не поймете и смысл текста. Именно поэтому мы начинаем с нижнего уровня.
Я хочу быть уверен, что вы понимаете каждую строку, каждое выражение в любом коде. В противном случае вы не сможете понять, как все это складывается в одну большую, правильно функционирующую программу.
А теперь давайте сфокусируемся на изучении языка, и все остальное приложится, обещаю.
В качестве следующего шага вы можете обратиться к коду программы из предыдущих пунктов и просто начать перебирать файлы проекта. Откройте любой из них и начните изучать построчно. Если вы можете с уверенностью сказать, что делает каждая строчка, идем дальше! Если же вы понимаете не все – а такого, скорее всего, будет очень много, – берите в руки учебник и попытайтесь уменьшить количество белых пятен.