ПРИЧЕМ ТУТ АЛХИМИЯ?

Кому—то название этой книги и всего учебного курса — «Алхимия программиста» — может показаться не очень удачным. В самом деле, где программисты и где — алхимики? Алхимики — средневековые малообразованные шарлатаны (как до сих пор думают многие), которые вытягивали из своих покровителей деньги на поиск Философского Камня — некоего эликсира, при помощи которого можно было любой металл превращать в золото. Увы, часто это Великое Делание (так алхимики называли свои поиски) заканчивалось казнью алхимика, когда у магната, которому были обещаны горы золота, заканчивалось терпение. А программисты — это самые современные люди, которые стоят на острие самых передовых технологий человечества и способны повелевать невероятно сложными микропроцессорными устройствами, без которых сегодня просто невозможно представить нашу жизнь. Давайте разберемся...

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

Однако открытием химических элементов дело не ограничивалось. Многие алхимики были не только учёными—исследователями, но и практиками. В XIII веке в Каталонии работал «широко известный в узких кругах» алхимик Раймунд Луллий (ок.1235—1315 г.г.). О нём ходит легенда (скорее всего выдуманная), что по заказу английского короля Эдуарда однажды он получил алхимическим путём 60 тыс. фунтов золота. Но нас, в контексте разговора о программировании, интересуют другие работы Луллия, связанные с попытками создания того, что в наше время получило название комбинаторики — раздел математики, без которого невозможно представить современное программирование. Раздумывая над тем, как свести все многообразие мира к некоторой схеме, чтобы познавать суть явлений, Раймунд Луллий изобрел «логическую машину», представляющую из себя три вращающихся диска, закрепленных на единой оси. Каждый круг был разделен на ряд секторов, кодирующих различные понятия или явления мира. Вращая круги, Луллий предполагал находить взаимосвязи мировых явлений по принципам троичной логики. И хотя эта «машина» не открыла Раймунду каких—то новых истин, она стала одной из провозвестниц т.н. троичной логики.

Как вы узнаете учебника «Алхимия программиста», современная компьютерная техника функционирует на принципах двоичной логики. В главе 2 этот вопрос рассматривается достаточно подробно. Однако, если бы современные компьютеры были не двоичными, а троичными, т.е. основанными на троичной логике, это сделало бы их проще и быстрее. Так что, неужели никто не пробовал создать троичный компьютер? Пробовал! И не просто пробовал, а создал единственный в своём роде, уникальный в мировой практике троичный компьютер. Этим человеком стал наш соотечественник, русский инженер—конструктор Николай Петрович Брусенцов. В конце 50—х годов XX века он создал троичный элемент, который использовал для создания единственной в мире троичной ЭВМ «Сетунь» (эта ЭВМ была создана на базе вычислительного центра МГУ им.Ломоносова). Мне повезло быть знакомым с этим удивительным человеком. И когда мы общались с ним, то он больше рассказывал не про архитектуру своей троичной ЭВМ, а про философскую подоплёку троичной логики и о тех людях, которые внесли свой вклад в её развитие. В частности, Брусенцов упоминал Раймунда Луллия, о работах которого знал. Каково? Вот вам — с одной стороны средневековый алхимик, ощупью изобретающий троичную «логическую машину», а с другой — конструктор современной, самой необычной в своем роде троичной ЭВМ «Сетунь». И оба этих человека, жизнь которых была разделена семью веками истории, словно встретились в едином пространстве Мысли. Вот вам — алхимия и программирование.

Или вспомним немецкого монаха—алхимика XVI века Василия Валентина. Именно он впервые получил соляную кислоту, описал серную кислоту и т.н. «царскую водку». Но нам, в связи с программированием, интересно взглянуть на другой аспект его работ. В 1599 году немецкий производитель соли Иоганн Тёльде выпустил алхимическую книгу под названием «Двенадцать ключей Василия Валентина». Книга состояла из двенадцати глав, каждая из которых предварялась аллегорической гравюрой, в которой был зашифрован очередной шаг на пути алхимика. Все двенадцать шагов, якобы, должны были привести к созданию Философского Камня. Текст книги и гравюры, по сути, представляли из себя закодированный алгоритм некоторых действий и был понятен только посвященным, то есть только тем, кто понимает этот код.

Строго говоря, описание алгоритмов на специальном коде (языке программирования) — это и есть Великое Делание современных программистов. А книга «Двенадцать ключей Василия Валентина», если посмотреть на нее под таким углом, является первым текстом программы. Правда, программа эта предназначалась не для компьютеров, а для «живых автоматов» — других алхимиков.

Согласитесь теперь, что аналогия названия «Алхимия программиста» не такая уж натянутая. Есть и еще одно «нечто», что словно объединят старинных алхимиков и современных программистов. Это — любовь к ночному времени. Алхимики прошлых веков колдовали в своих лабораториях, часто находящихся в подвалах замков, далеко за полночь. Но удивительно, что и современные программисты по каким—то непонятным причинам тоже любят работать не днем, а вечером или ночью. А если уж им и приходится работать днём, то свои кабинеты они стараются закрыть плотными занавесками, чтобы сгустился сумрак. Даже темы рабочих столов своих компьютеров программисты предпочитают настраивать в темных тонах, чтобы как можно меньше яркого белого света проливалось на их рабочее место. Так и сидят они часами в полусумраке, то напряженно вглядываясь в непонятные для непосвященного строчки кода, символы которого светятся зеленоватым и красноватым светом, отбрасывая соответствующие блики на лица тружеников клавиатуры.

Но довольно средневековых аналогий. Перейдем к сути. А то ведь кто—то может подумать, что я предлагаю взглянуть на программирование, как на алхимическое Большое Делание. И хотя в таком сравнении есть нечто более глубокое, чем кажется на первый взгляд, всё же перед вами не эссе о мистических связях алхимиков и программистов, а самый настоящий учебный курс, включающий в себя учебник и видеоуроки по программированию. И если вы хотите совершить путь от ничего не знающего «профана» до мастера (или «сеньора», как современные программисты называют экспертов), то первый шаг сделать поможет курс «Алхимия программиста». И будьте уверены, что никакой алхимии не будет, а будет увлекательное путешествие в мир профессионального программирования.