- PVSM.RU - https://www.pvsm.ru -

Программирование для начинающих: как стартовать и куда двигаться

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

Я, будучи недавно в такой же ситуации, гуглила, искала мануалов на Хабре (кое-что нашла: Десять советов начинающим программистам [1], Начинающему программисту про стартапы и не только… [2]), но в итоге всё же была вынуждена обратиться за советом к одному хорошему человеку, который составил для меня вот такой план. С разрешения этого человека [3] размещаю данный план на Хабре – вдруг он пригодится и кому-то ещё. (Тем более, что перечисленные книги относятся к «золотому фонду» литературы в данной сфере и проверены временем.)

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

Этап I. Основы

Нортон «Программно-аппаратная организация IBM PC» [4]
Эта книга, несмотря на свою давность, относятся к тем, что пока отнюдь не устарели. Как новичок подтверждаю – повествование вполне понятно и для почти полного чайника в IT.

Гук «Аппаратные средства IBM PC» [5]
А эту книгу стоит прочитать «поверх» – она расскажет о том, как дела в данной сфере обстоят сейчас.

Этап II. Hardware

Шаг 1

Морс, Алберт «Архитектура микропроцессора 80286» [6]
Почему тут берётся за основу именно микропроцессор 80286 – станет понятно по изучении трудов первого этапа.

Шаг 2

Гук «Аппаратные интерфейсы ПК» [7]

Гук «Интерфейсы устройств хранения» [8]

Этап III. Операционные системы

Шаг 1

Таненбаум «Архитектура компьютера» [9]

Шаг 2

Колисниченко, Аллен «Linux: полное руководство» [10]
От общей теории переходим к изучению конкретной операционной системы – на примере Linux.

Немет, Снайдер, Хейн «Руководство администратора Linux» [11]

Этап IV. Собственно программирование

Шаг 1

Керниган, Ричи «Язык программирования С» [12]
Почему первым для освоения выбран именно язык Си? Как мне рассказали знающие товарищи, он поможет достичь правильного «программистского мышления», чего было бы сложно достичь, начиная изучение, скажем, с Паскаля. Кроме того, язык Си по-прежнему используется в наши дни и подходит как для прикладного, так и для системного программирования.

Шаг 2

Кнут «Искусство программирования»
Том 1. Основные алгоритмы [13]
Том 2. Получисленные алгоритмы [14]
Том 3. Сортировка и поиск [15]

Бентли «Жемчужины программирования» [16]

Затем осваивать эти труды? Как уже отмечали на Хабре [1] – «наверное, нигде больше, чем в айти, не изобретается такое огромное количество велосипедов». Данные книги помогут этого избежать – и попутно будут прививать умение писать не просто код, а хороший код.

Ну а для затравки можно прочесть небольшой цикл лекций «Культура программирования» [17] (автор – А. Бабий). Он помогает начинающим программистам понять, что их деятельность не будет проходить в вакууме, а неизбежно включит взаимодействие с другими программистами, с заказчиками и пользователями (а также включит необходимость копаться потом в своих собственных или в чужих программах).

Закономерный вопрос новичка: сколько времени займёт изучение всего этого? По прогнозам моего советчика, у человека, который может тратить на изучение программирования только вечера и выходные, на прочтение и осмысление литературы первых трёх этапов уйдёт полгода-год. На четвёртый этап тоже даётся год – чтение должно сопровождаться практикой по самостоятельному составлению программ. Как получится на самом деле – время покажет.

Буду крайне благодарна за ваши советы и уточнения.

Автор: qui_prodest


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/pesochnitsa/7422

Ссылки в тексте:

[1] Десять советов начинающим программистам: http://habrahabr.ru/post/100959/

[2] Начинающему программисту про стартапы и не только…: http://habrahabr.ru/post/49697/

[3] этого человека: https://github.com/intelfx

[4] Нортон «Программно-аппаратная организация IBM PC»: http://reslib.com/book/Programmno_apparatnaya_organizaciya_IBM_PC#1

[5] Гук «Аппаратные средства IBM PC»: http://reslib.com/book/Apparatnie_sredstva_IBM_PC#1

[6] Морс, Алберт «Архитектура микропроцессора 80286»: http://reslib.com/book/Arhitektura_mikroprocessora_80286__Mors_S_P__#1

[7] Гук «Аппаратные интерфейсы ПК»: http://reslib.com/book/Apparatnie_interfejsi_PK__Enciklopediya#1

[8] Гук «Интерфейсы устройств хранения»: http://www.kniga.ru/books/273605

[9] Таненбаум «Архитектура компьютера»: http://reslib.com/book/Arhitektura_kompjyutera__Tanenbaum_E__#1

[10] Колисниченко, Аллен «Linux: полное руководство»: http://reslib.com/book/Linux__Polnoe_rukovodstvo__Kolisnichenko_D_N___Allen_Piter_V__#1

[11] Немет, Снайдер, Хейн «Руководство администратора Linux»: http://www.kniga.ru/books/182384

[12] Керниган, Ричи «Язык программирования С»: http://reslib.com/book/Yazik_S#1

[13] Том 1. Основные алгоритмы: http://reslib.com/book/Iskusstvo_programmirovaniya__Tom_1__Osnovnie_algoritmi_#1

[14] Том 2. Получисленные алгоритмы: http://reslib.com/book/Iskusstvo_programmirovaniya__Tom_2__Poluchislennie_algoritmi_#1

[15] Том 3. Сортировка и поиск: http://reslib.com/book/Iskusstvo_programmirovaniya__tom_3_#1

[16] Бентли «Жемчужины программирования»: http://reslib.com/book/Zhemchuzhini_programmirovaniya#1

[17] цикл лекций «Культура программирования»: http://www.alex.krsk.ru/metod.htm