Вступление
Научиться программировать непросто. Ещё сложнее если вы начинаете с нуля и учитесь самостоятельно, не прибегая к помощи профессиональных преподавателей. Это выполнимая задача, но многое будет зависеть от вас самих.
Изучать новый и сложный предмет невозможно без хорошей мотивации. Поэтому прежде чем продолжить читать эту книгу разберитесь со своими целями. Чего вы ждёте от своих новых навыков? Какие задачи будут решать ваши программы? Ответы на эти вопросы помогут выбрать эффективный путь обучения.
Если вы твёрдо намерены стать профессиональным программистом в кратчайшие сроки, то без посторонней помощи вам не обойтись. Запишитесь на очные курсы или на онлайн лекции в интернете. Возможность напрямую общаться с наставником, задавать вопросы и прояснять непонятные моменты значительно ускорит ваш прогресс.
Без наставника можно обойтись, если вы интересуетесь программированием из любопытства как хобби или для расширения своего кругозора. В этом случае самообучение с книгой уже принесёт практическую пользу. Ведь базовые навыки программирования пригодятся любому, кто работает с компьютером. Возможно, эта книга послужит отправной точкой и поможет вам определиться с направлением для дальнейшего развития.
Сегодня в онлайн магазинах и библиотеках доступно множество книг по программированию для читателей с различным уровнем подготовки. Есть ли смысл в ещё одной книге?
Программирование — это сугубо практическая область. Конечно, в ней есть много теории, как например в математике. Но знание основополагающих принципов не сделает вас программистом. Чтобы им стать, вам придётся самостоятельно написать очень много кода. Сначала этот код просто не будет работать. Потом он будет содержать ошибки. Постепенно вы научитесь их предвидеть и устранять заранее. Показателем вашего прогресса будет не растущий объём знаний по конкретному языку, а оценка вашего старого кода. Когда вы прочитаете его спустя месяц или два и заметите в нём ошибки, это станет подтверждением вашего прогресса.
Так что же не так с существующими книгами? Многие из них посвящены конкретному языку или технологии. Выбранная тема рассматривается во всех тонкостях и нюансах. При этом выполнению практических заданий уделяется недостаточно внимания. Новичку такой объём узкоспециализированных теоретических знаний ни к чему. Кроме того он вызывает ложное представление о том, как надо учиться программировать. Такие книги по конкретным технологиям редко кто читает от корки до корки. Чаще ими пользуются в качестве справочника, когда возникает какой-то практический вопрос.
Другие книги предлагают освоить какой-то язык программирования на примерах. Обучение с ними пойдёт намного продуктивнее. Проблема в том, что не все читатели находят мотивацию работать над примерами. Авторы предлагают прочитать и разобраться в большом объёме кода. К сожалению, если этот код только демонстрирует некий принцип и не несёт никакой практической пользы, он будет мало интересен читателю. Современные языки общего назначения сложны. Это значит, что прежде чем перейти к примерам из реальной жизни, вам понадобиться узнать о языке многое. Получается замкнутый круг: примеры неинтересны, потому что бесполезны, но полезные примеры ещё слишком сложны для понимания.
Эта книга предлагает другой подход. Она начинается, как это принято, с общей теории о том, как устроен и работает компьютер. При этом внимание уделяется причинам тех или иных технических решений прошлых лет, которые определили основные функции современного компьютера. Знание этих причин поможет вам лучше запомнить материал и понять предмет.
Общие знания о компьютерной технике окажутся полезны, когда вы начнёте программировать на конкретном языке. Вы обязательно столкнётесь с проблемами. Например, программа работает слишком медленно или постоянно завершается с ошибкой. Знание устройства компьютера поможет вам понять причины такого поведения.
Дальше мы познакомимся с языком программирования Bash. Вопреки распространённому мнению, это сложный предметно-ориентированный язык. Однако, ряд задач решается на нём сравнительно легко и лаконично. На примере этих задач мы изучим базовые концепции программирования.
Прежде всего мы рассмотрим Bash как замену графическому интерфейсу пользователя. Вы научитесь выполнять основные операции над файлами и каталогами с помощью текстовых команд. Таким образом вы освоите минимальный синтаксис. Его будет достаточно для написания программ на Bash.
Не стоит рассматривать изучение языка Bash, как необходимое, но бесполезное на практике упражнение. Поверьте, каждый профессиональный программист сталкивается в своей работе с автоматизацией рутинных задач и выполнением команд на Unix-системах. В обоих случаях без знания Bash не обойтись.
Если у вас не получается запустить какой-то пример или выполнить упражнение, не расстраивайтесь. Это означает только то, что материал не был раскрыт в должной мере. Напишите об этом мне, и мы вместе его разберём.
В конец книги приводится список терминов. В нём вы можете уточнить незнакомое понятие, которое встретилось при чтении этой книги.