Найти тему
ZDG

"Я уже не вижу код"

Как я сказал в предыдущем выпуске, состояние комнаты можно описать всего лишь одним числом: 5. Что это значит?

Подойдем к этой теме не спеша.

Для описания комнаты вы могли бы составить примерно такой текст: "В комнате есть 3 красных книги, 2 синих книги, 4 стакана, 1 карандаш, 1 телевизор, 1 ковер, 1 стол и 2 стула".

Вполне годится, но очевидно, что это описание является неполным. Что насчет окон? Какая толщина у стен? Чем покрашен потолок?

Уточняя возникающие вопросы, мы будем получать все более и более полное состояние комнаты, но также обнаружим, что никакое уточнение не способно полностью описать комнату.

Что значит "полностью"? Давайте сразу пропустим подсчет предметов и измерение углов, и скажем так: реальная комната состоит из атомов. Чтобы полностью описать её, нужно описать состояние каждого атома. Где он находится, какую энергию имеет, как ориентирован и так далее.

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

Вывод: наиболее полным описанием комнаты является только сама комната, и ничто другое. Любая её копия будет в чем-то отличаться.

А что я буду делать, если мне предложат описать комнату одним-единственным числом? Я отвечу – 5.

Да почему же 5, елки-палки? Очень просто – потому что в комнате 5 книг. Это весьма скудная информация, но для моей задачи неважно, какая у комнаты площадь, и какой цвет у потолка. Для моей задачи важно только количество книг в комнате, поэтому число 5 описывает эту комнату в достаточной степени.

Я только что построил абстракцию. Я отбросил всё ненужное. Комната из вещественного, сложнейшего объекта схлопнулась в цифру 5. Это просто цифра, но для меня это состояние комнаты, и я держу это в уме.

Это именно то, чем вы будете постоянно заниматься при программировании.

Каждый раз, когда вы пишете что-то вроде "a = 5", вы задаёте состояние какого-то объекта, о котором вы знаете.

Самое главное, что нужно понять: вы не просто переписываете откуда-то заклинание "a = 5", чтобы программа заработала, как чёрная магия. Вы понимаете, что вот сейчас, в этом месте, это состояние какого-то объекта.

Для вас это может быть 5 книг в комнате, 5 градусов тепла на улице, 5 литров воды в аквариуме – везде одна и та же цифра 5, но она описывает разные объекты и разное их состояние. А сама по себе, без представления в вашей голове, она ничего не значит, являясь просто цифрой 5.

Конечно, одного числа для нашей задачи будет маловато. Ведь мы собирались навести порядок в комнате, а там кроме книг есть кое-что ещё. Поэтому теперь можно написать несколько чисел: 3, 2, 4, 1, 1, 1, 1, 2, и для нас они будут означать: "В комнате есть 3 красных книги, 2 синих книги, 4 стакана, 1 карандаш, 1 телевизор, 1 ковер, 1 стол и 2 стула".

Вот тут уже начались программистские штучки – ну что это за набор чисел, 3, 2, 4, 1 какие-то, да? Но вы ведь уже понимаете, что это и для чего? Помните, как в фильме "Матрица" Сайфер показывал на потоки бегущих по экранам зелёных цифр, и говорил –

– Я уже не вижу код. Я вижу блондинку, брюнетку, рыжую.
– Я уже не вижу код. Я вижу блондинку, брюнетку, рыжую.

Также и вы сейчас вместо чисел должны видеть комнату с предметами в ней.

Мы сейчас не пишем код ни на каком языке. Мы просто создаем описания. Мы только что с помощью чисел описали комнату с некоторыми подробностями, но как видите, чем подробнее – тем больше чисел требуется. Хотя числа есть лишь абстракция нашего разума, в данном случае они являются информацией. А любая информация абсолютно материальна, имеет энергию и занимает место. То есть должна где-то храниться.

О чем мы и поговорим в следующем выпуске.