[Перевод] Как я читаю книги по программированию

Я получил образование по специальности «Электротехника» и единственными языками программирования, которые мы изучали были 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

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 30

    +3
    В свое время подобным же способом всегда готовился к сессиям — прочтение в троекратном количестве с похожим способом осмысления.
      +1
      Реально? Три раза читали материал к экзамену?
        0
        В рамках подготовки к билетам — да. В течение семестра, конечно, занимался и практикой и непринужденным перелистыванием теоретического материала. Как-то так.
      +8
      С первыми двумя чтениями согласен. А вот с третьим не совсем. Если учитывать, что во многих хороших книгах для изучения основ программирования примеры достаточно «сухие», то после первых двух чтений попытка снова написать примеры из книги приведет в большинстве случаев как минимум к унынию, и эта задача превратится в пытку. Считаю, что после первых 2-х чтений намного интереснее и полезнее пытаться реализовать какие-нибудь интересные для себя проекты, при этом стараясь применить все самые важные принципы из книги. По крайне мере я так делаю.
        +2
        Чисто с нейрологической точки зрения, чем больше, тем лучше. Связи между нейронами так устроены, что они постоянно разрушаются, а новые создаются. Чем меньше связь используется, тем быстрее она разрушается (и, наоборот). Дети, между прочим, рождаются с целой избыточной сеткой связей (чтобы хватило буквально на любой вариант развития событий), которые за первые годы уже постепенно разрушаются.

        Именно поэтому еще: повторение — мать учения :-).
          0
          В подтверждение и доказательство, смею только привести две части статьи (особенно, вторую), наверняка известной многим, где человек, нейрохимик и айтишник в одном флаконе довольно ясно даёт ответы на все вопросы. Казалось бы, прописные истины, однако прочитать и осознать крайне рекомендую.
        +13
        Как по мне, так лучше прочитать три разных книги, чем три одинаковых
          +3
          Да, и во время чтения я пишу конспекты. А затем не перечитываю книгу, а пересматриваю свои записи, когда нужно.
            0
            Вот писать конспекты на самом деле работает. Так как сев разбираться с языком впервые проще с тетрадочкой и ручкой и некоторые моменты помечать, даже тот же синтаксис или сложные моменты. А потом когда уже садишься программировать, то если какие-то возникают проблемы то тянешься ни к своей книге, а к конспекту.
            А вот насчёт третьего пункта, то лучше решать свои задачи, тем более фантазия позволяет
              +2
              Я сразу вспомнил, как в университете хорошо запоминал материал, когда писал шпоргалки к экзамену )))
                0
                А как долго после сдачи экзамена у Вас ещё оставались и работали полученные знания?

                Лично я и ещё несколько человек могут подтвердить, что эти знания обычно пропадают почти мгновенно, как при очистке папки ./tmp, особенно, когда не находят применения в жизни и деятельности.
                  0
                  Абсолютно согласен, слово «применение» в Вашем вопросе имеет наиболее важный акцент.

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

                  Естественно, на сегодняшний день большинство из них не несут для меня практической пользы, но могут понести ее для моего младшего брата, когда тот поступит в ВУЗ. Хотя, на его месте я бы писал свои ))
                    0
                    Шпоры в наследство — сильно, уважаю.
                    В принципе, подход со шпорами вполне хорош, ведь в них самая квинтэссенция материала, самое важное, самое необходимое. Если бы в жизни была возможность использовать их — жизнь стала бы конкретнее, определеннее и, разумеется, удобнее.

                    По сути, календарь на стене — это шпаргалка. Надеюсь, Вы понимаете, что я хочу этим сказать.
                      0
                      По сути, календарь на стене — это шпаргалка.


                      Слишком по-философски для меня )))
          • UFO just landed and posted this here
              +1
              Есть ещё один интересный способ чтения/изучения: я сразу начинаю писать. Ещё не открывая книги я уже открыл редактор и попробовал пнуть соответсвующий компилятор. И сразу берусь за «боевую» задачу (а с моей-то фантазией у меня всегда есть в запасе десяток другой вещей, которые надо бы реализовать, да лень не позволяет).
              Как только я сталкиваюсь с проблемой, я открываю соответсвующий раздел книги и читаю до тех пор, пока не смогу выполнить нужную мне задачу. Ни строки больше я в книге не читаю, а возвращаюсь к своему проекту.
              После завершения проекта (это не всегда доводка до «товарного вида» — обычно я ограничиваюсь доводкой до рабоспособности) я владею языком/технологией на том уровне чтобы во время досуга почитать эту книгу не разбивая себе лоб об фразочки типа «легко видеть». Чтение становится лёгким и приятным. И, я бы даже сказал, полезным — при таком прочтении можно обратить внимание на тонкие нюансы и т.п.
              • UFO just landed and posted this here
                  +1
                  >Есть ещё один интересный способ чтения/изучения: я сразу начинаю писать

                  +1. Для меня работает очень хорошо. Настольная книга — stackoverflow и тех. документация по языку. Главное изначальную парадигму понять. Вот это можно и по книжкам.
                  0
                  Пользуюсь подобной (хотя чаще третьим пунктом у меня идет попытка реализовать собственный проект). Достоинств, как мне кажется, много: лучшее понимание материала, новая информация структурируется и переосмысливается. А единственный недостаток — время, довольно часто компенсируется тем, что если при первом прочтении пытаться разобраться сразу во всем, скорость чтения падает, и в итоге времени затрачивается примерно как при двух прочтениях.
                    +1
                    Полезная статья. Мой метод чтения чем-то похож на описанный здесь, только во втором круге я не читаю книгу а скорее просматриваю главу за главой. Очень помогае закреплению материала.
                      0
                      Да, читаю как минимум два раза, причем первый больше похож на чтение художественной книжки :)
                      Добавлю, что переодически обращаюсь к определенным главам, когда хочу прояснить какой-то момент, но не помню конкретных вещей.
                        –2
                        Мне кажется что я теряю что то большое от того что меня никак не тянет ни на веб ни на мобильные приложения. Блин и почему, почему куда не плюнь везде одно и тоже. Блин и почему меня это ну вообще ни как не привлекает :(
                          +1
                          Зачем повторно (и уж тем более в третий раз) читать ту же самую книгу, если практически всегда есть альтернативные издания того же уровня по той же технологии но других авторов?! Когда та же тема объясняется другими словами, приводятся новые примеры, новые замечания и авторские отступления, понимание материала происходит быстрее и интереснее.
                            0
                            Сколько по времени у вас заняло прочтение, допустим, Эккеля?
                              0
                              Кстати, про Эккеля — есть вопрос. В сети ходят варианты его книг на русском и английском. Оба — 4-е издание, но русское 2009 года на 638 страниц, а английское вроде как 2006-го, но на 1057 страниц. Вот тем кто не знает — сиди и думай, где инфа более актуальна? Русский вариант вроде как новее, но страниц меньше.

                              Люди знающие, где правда?
                                +1
                                Однозначно в английском (в предисловии русского издания, даже говорится о том, что разработчики больше обращаются к английской версии).

                                В русском варианте отсутствует несколько очень полезных для программирования на Java глав. Одна только глава про строки в английском варианте, где есть специальный раздел про работу с регулярными выражениями и большое количество примеров стоит очень многого.

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

                                Мое объяснение эффекта в целом таково: прочитывая какую-либо книгу впервые, человек на самом деле усваивает лишь очень не ольшой объем информации (например, 2%). Это только кажется, что мы усвоили почти все, лишь иллюзия — точно так же, как, смотря на мир глазами, мы не запечатлеваем в мозгу каждый пиксель сетчатки, а запоминаем лишь очень мало. Мозг так устроен, что он сам себе внушает иллюзию полнотв картины даже по обрывкам информации — в этом, собственно, его основное предназначение. И именно поэтому мы, видя сны, считаем их реальностью: это не сны настолько детально проработаны, это наш мозг — та его часть, которая ощущает степень реалистичности, — занимается самообманом.

                                Так вот, если читать ту же книгу второй раз, мы тоже усвоим 2%, и это будут с большой вероятностью уже другие 2% (аналогия: сделав дважды выборку по 2 элемента из 100, мы почти всегда получим 4 разных элемента). Читая третий раз — еще 2% и т.д.

                                На самом же деле эффект еще сильнее, потому что, усваивая следующие 2%, вы превращаете предыдущие 2% в, например, 6% (повторенье — мать ученья).
                                  0
                                  Круто конечно, но какие из книг не вспомню — меня и на одно полное прочтение никогда не хватало. Читаешь введение — ну ок, давай ближе к делу, когда там уже… Читаешь первую главу «Для Нубов» — ну тут всё и так ясно, давай уже интересное начинай… Читаешь вторую главу — тоже как-то так уже подробно и разжёвывая всё автор пишет, что кажется, что из названия главы ты уже всё понял и дальше можно не читать… Тут ты начинаешь пропускать, т.к. внимание удержать уже не удаётся, пропускаешь, пропускаешь — это понятно, то понятно, это я уже знал когда-то, и доходишь до середины книгы, обнаружив что ничего нового из неё ты ВООБЩЕ не узнал. И тут закрываешь, со злостью вспоминая потраченное время. Хотя на самом деле, ну может были какие-то фишечки или приемчики, которые ты почерпнул, но ВОДЫ было столько, что они в ней просто потерялись.

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

                                  Зато 600-страничную книжку Маргулиса про LAB буду помнить долго! =D Её я кстати бросил на 550ой странице, пролистав за день. И да — главную идею я понял. Но для неё хватило бы и двухстраничной статьи, а не 600-страничного фолианта.
                                    0
                                    Вить, а ведь большинство советских учебников и пособий, например, по математике — очень и очень хорошие книги. Не то что бы там всё разжёвано, хотя и это есть, но приподнесено так, будто это твои собственные мысли, а потому читаются легко и усваиваются более естественно.

                                    Кстати, то, о чём Дмитрий выше написал, скорее лучше понимается на примере художественной литературы: художники (писатели) профессионально обращаются с образами и небольшой детализацией, а мы (читатели) воспринимаем их полноценной картиной, возможно достраивая до каких-то своих картин, хотя, как сказал Дмитрий, скорее создаётся иллюзия этой достроенности и детализации. И при прочтении художки, мы особо не заморачиваемся ребусами, типа: «какого цвета была вторая сверху пуговица у третьего справа во втором ряду мужчины из толпы» — это за нас делает мозг, чтобы картина казалась наиболее полной, чтобы не возникало эффекта «недостроенности».

                                Only users with full accounts can post comments. Log in, please.