Программирование

Компьютер без программы бесполезен, он просто не в состоянии решать задачи окружающего мира и взаимодействовать с человеком. Программа является планом действий для компьютера, тем связующим, что объединяет его компоненты и делает его таким полезным для человека инструментом. Программа это записанный на одном из языков программирования алгоритм. По сути, именно алгоритм является планом действий. Математические и физические теории, объекты и понятия реального и выдуманного человеком мира ложатся в основу моделей, которыми и оперируют алгоритмы. Взаимодействие человека с компьютером будет естественным и легким, если они "говорят на одном языке". И это не язык программирования, это язык понятий, терминологии.

Разработка программы (точнее приложения) многошаговый процесс. Сначала нужно "поставить задачу", то есть построить ту самую модель и определить, как с ней взаимодействовать. Для этого нужно знать предметную область для которой будет разрабатываться программа. Затем нужно подготовить алгоритмы, которые будут описывать работу с моделью для достижения нужного результата. При это, возможно, потребуется уточнять и формализовывать первоначальную модель. После этого получившийся алгоритм нужно записать на языке программирования, уже с учетом как особенностей самого языка программирования, так и возможностей компьютера, который будет выполнять программу. Наконец, нужно проверить, протестировать, то, что получилось. Большие и сложные программные продукты разрабатываются коллективами специалистов (постановщиков, аналитиков, кодировщиков, тестировщиком, дизайнеров). Небольшие программы часто пишутся одним человеком. Охватить все аспекты программирования сложно. Для простоты я разбил все вопросы на три раздела:

Начинающим
Начинать всегда сложно. Это касается и действительно новичков в программировании, и профессионалов, которые осваивают новые точки приложения своих сил. В этом разделе собраны материалы (и теоретические, и практические), которые помогут глубже понять основы и разобраться в деталях.

Теория
В этом разделе собраны и теоретические основы программирования, и описания алгоритмов, и системные/машинные тонкости их реализации. Честно говоря, часть материалов раздела можно было выделить в отдельный - "системное программирование". Но провести границу между теорией, системными и машинными (аппаратными) вопросами бывает тяжело.

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