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