Я получил образование по специальности «Электротехника» и единственными языками программирования, которые мы изучали были C/C++, ассемблер и Matlab. После того как я посетил Startup Weekend, я понял, что информатика и разработка программного обеспечения мне небезразличны и решил погрузиться в эти области с головой. Также я осознал, что мне требуется изучить еще несколько языков программирования, помимо тех, которые я изучал в университете.
За прошедшие полтора года я начал изучать Java (для Android), а также Python, JavaScript, HTML и CSS (для web-разработки) и выявил для себя, что лучший способ изучать язык программирования, разбирая книгу или туториалы, — читать все по три раза! Да, именно по 3 раза!!! Чтение нового материала подобным образом, хорошо помогло мне понять новые языки программирования и концепции.
Первое чтение
Мое первое чтение книги по программированию — это просто чтение для легкого восприятия сути содержимого. Во время первого чтения я стараюсь следовать за мыслью автора и просто просматриваю примеры написанного кода. Также я изучаю (не досконально) синтаксис и пытаюсь понять ход работы программы. Я не пишу ни одной строчки кода во время первого чтения. Я думаю, что из-за приобретенного ранее опыта написания программ, я с легкостью читаю любую книгу по программированию. Я не ожидаю от себя мгновенного написания кода на языке, который я изучаю или правильного применения на практике концепций, изученных после первого прочтения. Скорее, я стараюсь поймать правильное ощущение происходящего в тексте книги. (Кстати, подобным способом я обычно прочитываю главу или раздел, а не всю книгу целиком, от корки до корки.)
Второе чтение
Во время второго прочтения материала, я приступаю к написанию кода. Чаще всего, я переписываю каждый пример из какого-либо раздела. Основной причиной, по которой я сперва прочитываю раздел, а затем возвращаюсь в начало и приступаю к написанию кода, является приобретение понимания того, о чем написан раздел и что может/должен делать код. В этот момент, я ясно понимаю, что происходит. Я не просто вслепую, переписываю код, в ожидании получить последующие разъяснения относительно того, что он делает в следующих параграфах, чтобы затем вернуться и начать чтение заново. Печатая код, я стремлюсь понять синтаксис языка.
Третье чтение
Во время третьего чтения я стараюсь решить все приведенные в разделе задачи, не копируя код из книги. Обычно, я просто открываю раздел задач читаемой главы и стараюсь решить их. На этой стадии синтаксис языка, представленный в прочитанной главе или разделе хорошо откладывается у меня в памяти и я могу решить предложенные автором задания.
И еще кое-что...
Этот метод сработал для меня при изучении Java, Python и JavaScript. Иным хорошим способом изучить языки программирования или какие-то концепции является реализация персонального проекта. Так что, например, если Вы хотите лучше понять принципы построения графического интерфейса пользователя или реализации компьютерной графики на Java, попробуйте написать свои «Шахматы», это повлечет за собой Ваше обращение к книгам по графике, анимациям, GUI, событийно-ориентированному программированию и т.д.
Основная проблема, с которой придется столкнуться в ходе реализации проекта подобным образом, без чтения соответствующей литературы по языку программирования, заключается в том, что у Вас не получиться применить лучшие практики программирования на данном языке, но вместо этого Вы попытаетесь сделать работу до конца. Вы не будете применять руководящие принципы при разработке приложения на новом языке программирования и более того, возможно будете писать программу в том стиле, в котором Вы бы писали ее на знакомом Вам языке. Например, Вы можете писать код на Java, используя стиль написания на C, потому что Вы не изучили, как следует писать программу на Java, а просто пользуетесь синтаксисом этого языка для того чтобы сделать проект.
Я рекомендую новичкам изучать новый язык программирования с помощью книг, нежели туториалов. Вы получаете от прочтения книги большую отдачу. Но, при чтении книги, ни в коем случае не пренебрегайте упражнениями (если они есть), старайтесь создавать собственные проекты. Также, обязательно пропечатывайте код, который Вы изучаете, не думайте, что просто чтение и переваривание в голове, написанного в книге кода, являются достаточными факторами для успешного изучения языка программирования.
Примечание от переводчика:
Что касается меня самого, то основной целью перевода данной статьи и ее публикации на хабре, является получение информации о том, как, Вы, уважаемые коллеги, занимаетесь изучением языков программирования и информационных технологий посредством чтения технической литературы. Какие стратегии чтения используете Вы? Открыли ли Вы для себя что-то новое в контексте самообучения за последнее время?
Касательно приведенной автором методики — я слышу о ней не впервые, но отношусь к ней скептически, только потому что боюсь потерять много времени на столь доскональном прочтении материала. Если у кого-то есть опыт применения подобной техники прошу поделиться, как выявленными для себя достоинствами, так и недостатками.
P.S.
Чтобы устранить все возможные предположения, автор, по просьбе читателей в комментариях привел список книг, которые он прочел с помощью данной техники за последние полтора года:
Для Web-разработки:
-Head First JavaScript by O'Reilly
-Think Python by Allen Downey
-the Django book
-The Art & Science of CSS
Другие
-Beginning Android Games — Mario Zechner
-Thinking in Java — by Bruce Eckel
Мое внимание в этом списке, естественно больше всего привлекает фолиант Эккеля (именно английский вариант) — для меня это книга номер один по Java, и если автор описанным им способом прочитал ее, то мне даже страшно представить сколько времени и сил у него ушло на это, но зато при подобном прочтении и решении всех заданий уж точно можно не сомневаться в знании языка.
Ссылка на оригинал: http://www.simplyahmazing.com/2013/01/how-i-read-programming-books.html
Автор: AlexBonel