План по программированию (system, embedded, network)
Необходимо хорошо освоить системное программирование, embedded-разработку, программирование сетевого софта и программирование в Unix. Цели «найти работу по программированию в кратчайшие сроки» — нет. Приоритет отдается изучению основ и необходимой теоретической базы с параллельным выполнением практических (лабораторных) задач. Приступить к реальной работе нужно приблизительно через 1.5-2 года.
Оцените, пожалуйста, план по программированию (последовательность книг: с начала изучения до условного завершения).
1. Основы компьютера, алгоритмы и сети
- Архитектура компьютера (Э. Таненбаум)
- Современные операционные системы (Э. Таненбаум)
- TCP/IP. Архитектура, протоколы, реализация (С. Фейт)
- Программирование в алгоритмах (С. Окулов).
2. Программирование
- Turbo Pascal 7.0 начальный курс (В. Фаронов)
- Assembler для DOS, Windows и UNIX (С. Зубков)
- Искусство программирования на C: Фундаментальные алгоритмы, структуры данных и примеры приложений (Р. Хэзфилд)
- Язык программирования Си (Б. Керниган, Д. Ритчи)
- UNIX. Профессиональное программирование (Р. Стивенс)
- Ядро Linux (Д. Бовет, М. Чезати)
- Ядро Linux. Описание процесса разработки (Р. Лав)
3. Практика и начало работы
- Embedded: изучение стандартов С99/C11/POSIX/RTOS. Знакомство и работа с arduino, шилды, отличия VSS от VDD, gpio от spi, ИКаЗэ и УХаХа. Начать работать с железками stm8, stm32, mips, arm. Работа с FPGA. В более крупном эмбеддеде — на микро-компьютерах, где уже линукс крутится — нужно юзать lua, в том числе для написания вебморд и некоторых скриптов бекендов.
- System: работа с драйверами - их написание и т.д., прошивками, ядром kernel:- модули, код, патчи и т.д,
- Network: сетевые приложения unix, стандарты RFC, протоколы, сокеты, потоки данных в TCP/IP, бинарные протоколы, написание модулей ядра для работы с пакетами на низком уровне, работа с сетевыми бинарниками, научиться максимально быстро обрабатывать сетевой трафик — это кастомизация TCP-стека, вынос его из ядра, привязка к ядру процессора, c получением данных через NAPI, без хардварных прерываний на каждый пакет
Какие мысли, советы? С чего именно начать и как продолжать?