Учусь в 8 классе на домашнем обучении. Не так давно начали изучать информатику. Я хорошо осознал, что мне нравится информатика и очень привлекает программирование. Предметная область, в которой я себя вижу: вычислительные сети, сетевая и серверная инфраструктура, высоконагруженное серверное ПО. Скорее всего, я не буду уходить после 9 класса из школы, а продолжу учиться до конца 11 класса. Планирую поступать в ВУЗ на бюджет, поэтому сейчас я не знаю, на какую именно специальность и в какой ВУЗ я пройду.
В любом случае я набросал себе приблизительный план, по которому собираюсь учиться программированию в ближайшие несколько лет, которого я постараюсь придерживаться. Подборать теоретический материал мне оказалось не так уж и сложно (составлял список сам, основываясь на описании книг и отзывах в интернете), а поиск подходящих практических задач для выбранного теоретического материала вызвал сложности.
Подскажите, пожалуйста, что стоит изменить в моём плане с учётом моей предметной области? Хотелось бы, конечно, в первую очередь скорректировать практическую часть. Далее идёт набросок моего плана.
Информатика (больше теория):
- системы счисления, единицы измерения инф., сигналы, частоты, дискретность и непрерывность;
- архитектура ПК, работа процессора и оперативной памяти;
- вычислительные сети и сетевая архитектура, понятие сетевых протоколов;
- алгебра логики и логические операции;
- алгоритмика и типы данных.
Информатика (больше практика):
- построение диаграмм и блок-схем в графическом редакторе yEd, решение задач с алгоритмами;
- работа в среде программирования КуМир;
- работа в среде программирования Free Pascal;
- языки разметки HTML и TeX: создание статичного персонального сайта на HTML, вёрстка документов в системе LaTeX в программе TeXstudio;
- регулярные выражения и работа с текстом на естественном языке;
- базы данных и системы управления базами данных (СУБД), работа с СУБД SQLite в программе SQLiteStudio.
Введение в программирование:
- трёхтомный учебник «Программирование: введение в профессию» (А. В. Столяров);
- учебник «Free Pascal и Lazarus. Учебник по программированию» (Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер);
- написание простых программ на Object Pascal (типа калькулятора, файлового менеджера, возможно, простейшего софта для защиты от DoS-атак на базе iptables и ipset);
- учебник «Теория систем и системный анализ» (В. Н. Волкова, А. А. Денисов).
Математика:
- школьная программа алгебры 7-11 кл.;
- «Основы математического анализа (Г. М. Фихтенгольц)» + задачник Б. П. Демидовича;
- «Дискретная математика. Учебное пособие» (В. Е. Алексеев).
Алгоритмы и структуры данных:
- «Алгоритмы. Вводный курс» (Т. Кормен);
- «Алгоритмы, введение в разработку и анализ» (А. В. Левитин).
Основы программирования в выбранной предметной области:
- «Язык программирования C. Лекции и упражнения» (С. Прата);
- «TCP/IP Illustrated: The Protocols» (У. Стивенс);
- «Understanding Linux Network Internals» (O'Reilly);
- «Unix Network Programming: The Sockets Networking Api» (У. Стивенс);
- официальное руководство Cisco по подготовке к сертификационным экзаменам CCENT/CCNA.
Также я составил список привычек, которые мне стоит сформировать:
«1. Приучайся описывать математически всё, что видишь вокруг себя: чашку кофе на завтрак, тарелку супа на обед, облака в небе и т. д.
2. Изучай вширь всё, до чего дотягиваешься. Не понял, что написано — разбирайся, пока не поймешь. Уметь программировать — это пол дела. Надо понимать, как запускать твой код, где он будет работать и как будет взаимодействовать с другими системами".
3. Пиши код! Каждый день пиши! Не так важно что: вытаскивай данные с какого-нибудь API, пиши консольные утилиты. Собирай какие-нибудь данные и клади их в БД. Не важно, насколько это все будет наивным, практический опыт от задумки до реализации надо проходить 10-20-100 раз, пока не научишься видеть решения".
4. Читай чужой код, смотри, как он устроен, чем лучше твоего, анализируй. И читай книжки по хорошим практикам программирования (начиная с пресловутого Боба Мартина).
5. Не игнорируй инфраструктуру. Эти вот модные докеры, которые мамонты на ЛОРе не любят, они неспроста. Написал программу — подумай какими способами ее можно безболезненно развернуть на другой машине» ( paddlewan).
Благодарю hobbit и paddlewan за ваши полезные комментарии на этом сайте, которые помогли мне в процессе составления плана. Также хочу поблагодарить всех, кто помогает советами, включая анонимов.