>>641377PASTA WARNING Усердно изучаешь английский. Читать лучше на английском. Сложно только первую книгу.
Как только разберёшься (вместе с английским это была самая сложная часть курса), тебе понадобится какой-нибудь язык программирования.
Ещё не для того, чтобы программировать, а для того, чтобы писать учебные примеры (на схеме это делать достаточно муторно).
Чтобы меня не сочли троллем в первом абзаце пасты предлагаю
1) C (Учебник Дейтелов, кресты (c++) долго не используй, зашкваришься)
2) Java («Философия» Эккеля) или
Python (DIVE INTO PYTHON из той самой пасты) на выбор. Можно оба.
Всё достаточно лёгкое (C в меньшей степени), всё считается местными говном (C в меньшей степени). После SICPа идти будет очень легко, си тебе сам по себе не понадобится, но скиллы писания на нём пригодятся ещё много раз.
Пишешь на выбранном языке 10 простых программ (решение уравнений, перемножение матриц, игры а-ля 90-е, ИИ для какой-нибудь из игр, просто что-нибудь прикольное, что в голову придёт). Вооружившись этой хуйнёй переходишь к изучению матчасти.
Матчасть: Твоя задача на данном этапе — получение фундаментальных представлений по CS.
Книжки будут вдвое толще, чем на предыдущем этапе, понимать сразу всё не будешь, но перечитывай мере необходимости.
а) Дискретка. НЕ ОТЛЫНИВАТЬ. Читай любой учебник.
Понимать (отчётливо): множества, алгебры, отображения, логику, графы.
Реши простейшие задачи, докажи несложные теоремы. Остальное можешь отложить.
б) Базы данных — нужно разобраться с БД, обычно этот шаг пропускают и начинаются серьёзные проблемы и откровенно кривые архитектуры.
Учебники: Си Джей Дейт, введение в системы баз данных.
Весь можешь не читать, прочитай 2/3, чтобы понимал про транзакции, нормальные формы (хоть первые 4 штуки), ER-модель, реляционное счисление, отображение из ER-модели в реляционное счисление.
Потом берёшь любой учебник по SQL (Моисеенко какой-нибудь сканает).
Базы данных в заданиях ты должен проектировать в уме, сразу в 3NF и быстро. Учишь SQL.
Пишешь какое-нибудь приложение на своём языке, которое использует БД (гостевуху с примитивным интерфейсом можешь сваять, поймёшь, что веб — говно и бросишь эту парашу на этом этапе).
Решаешь задачки у Моисеенко.
в) Архитектура ЭВМ. Читаешь Таненбаума. Знать: что такое вентиль, что из них составляют: там очень подробно описано по разделам.
Спроектировать простейший «железный» компьютер из блоков. Знать про адресацию памяти, прерывания.
Спроектировать всякой хуйни в эмуляторе схем. Лёгкая интересная часть.
г) Алгоритмы. Понимать: как работает процессор, как оценивается скорость алгоритма, почему существует много алгоритмов, как выбрать нужный.
Знать базовые алгоритмы сортировки, поиск можешь пока не трогать. Знать структуры данных и связанные с ними алгоритмы.
Знать (в общих чертах, не трать на это много времени), что из себя представляет ассемблер.
Всякие связанные списки из массивов ты должен уметь реализовывать стоя у доски с маркером.
Книги: Вирт, Ахо по алгоритмам и структурам данных. Начни читать Кнута, по крайней мере разберись с его компьютерами и напиши для них несколько программ на бумажке.
Сделай свой виртуальный компьютер, но не такой старый и сложный, как у Кнута. Сделай для него ассемблер и напиши пару простых программ.
д) Операционные системы. Знать алгоритмы для многозадачности, потоки, процессы, нити. Обедающие философы.
Знать про планирование ресурсов. Знать про файловые системы. Про микроядра всякие почитай. Хорошо разберись в параллельном программировании.
Помнишь толстенный учебник Дейтелов по си? Ну вот, у них и про ОС есть, почитай. И у Таненбаума тоже не только архитектура.
Пишешь сложную многопоточную программу, чтобы были синхронизации, пайпы, семафоры и всё такое.
Тут жава лучше пистона, тебе будут советовать кресты и QT, но… Можно и так, в общем.
е) Формальные языки и теория трансляции — нужно научиться обрабатывать текст и глубоко понять, как работают компиляторы.
Книги: читаешь главу своего учебника по дискретке (помнишь, ты её бросил?) про формальные языки. В центре внимания Ахо, Книга Дракона.
Понимать: грамматики, языки, регулярные выражения, текстовые анализаторы — компиляторы, трансляторы, интерпретаторы, стадии компиляции,
линковка, оптимизации. Ахо ты целиком всё равно не осилишь, но постарайся понять как можно больше.
Пишешь интерпретатор простого языка программирования (можешь взять любой говноакадемический язычишко).
Потом пишешь для него компилятор для своей виртуальной машины из пункта г.
Читаешь книгу издательства О'Рейли по регуляркам. Удобная штука. Открываешь для себя вёрстку: LaTeX, html, css, xml.
Особенно последний Глянь быстренько XPath.
ж) Парадигмы программирования. Заходишь сюда, создаёшь тред [ООП-парадигма|функциональщина|няшная сишечка] соснула.
Записывашь баззворды, гуглишь, участвуешь в срачах.
У тебя уже есть опыт писанины и на императивщине, и на ООП, и схему ты тоже неплохо знаешь: скобками голыми тебя не запугаешь.
Можешь подучить простой хаскелл и понтоваться плохими программами перед местными школьниками.
Свободное плаванье: К этому времени пора бы определяться с работой.
а) Хотя веб-петухи встают, когда ты входишь в комнату, можешь податься в очень продвинутый веб (если ты с него не очень сильно блевал).
Гугловское/амазоновское облако, корпоративные проекты на жабе и дотнете, хуйлоад. Глянь в сторону банков, у них есть достаточно системы.
Есть целые конторы, которые автоматизируют это барахло. Очень пригодятся БД, параллельное программирование и.т.д. Языки: пистон, жава ЕЕ.
Придётся изучать глубже, но у тебя уже хорошая база по этим языкам.
б) Базы данных. Зачитывался Дейтом? В конце концов добро пожаловать в мир высокой надёжности, параллелизма и прочей ерунды.
Тебя ждут оракловые базы данных, PL/SQL. Очень необычно и интересно, большие зарплаты, веб-петухи стонут.
в) Гейдев. Добиваешь математическую базу в области линала и идёшь в гей-дев.
Нужны будут кое-какие дополнительные алгоритмы по компьютерной графике, которую я не стал заносить в матчасть.
Потребуется учить кресты и местные приблуды. Если ты действительно осилил список сверху, то тебе там ещё и отсосут.
Да, оп, игры для мобильников — это не гей-дев, не трать на это своё время.
д, е, ж, з и.т.д.) Не верю, что к этому моменту ты сам не будешь знать, что тебе делать.