Голубятня: Хронотоп детства
Автор: Сергей Голубицкий
Читатели методично выставляют предъяву: где культур-повидло?! В самом деле: куда оно подевалось? Вроде бы пишу сейчас больше, чем год назад, и сильно больше, чем пять, а культур-мультур рассуждений о жизни в околоайтишной орбите (а зачастую - и далеко за ее пределами) развеялся утренним туманом.
Подумал-подумал и решил, что причина вероятнее всего в самом жанре. Хорошее такое английское слово - outgrowing, перерастание. Может я перерос формат втискивания высоких материй в прокрустово ложе журнальной (а сегодня уже онлайновой) колонки? А может - утратил легкость письма (хотя по собственным ощущениям не сказал бы: пишу не просто легко, а сильно легче, чем когда бы то ни было)? А может - просто повысил планку ответственности перед затрагиваемыми темами: стеснительно стало мусолить поверхностным журналючим взглядом серьезнейшие материи?
Короче говоря, культур-повидла варится в последнее время мало, так что остается смириться и надеяться на улучшение в будущем.
Сегодняшняя история как раз иллюстрирует избыточную сложность раскрытия культур-повидлианской темы. Хочу поделиться с читателями необычными переживаниями и ощущениями, возникшими у меня после посещения места, в котором прошло мое детство. С местом этим связаны все лучшие воспоминания, потрясающие открытия, первые опыты, печали. Ничего, конечно, оригинального, единственное своеобразие моего опыта: предельная концентрация в пространстве и времени.
Так вышло, что с самого рождения и до 14 лет жизнь моя целиком проходила в двух географических точках - Кишиневе и Голерканах. С сентября по май я жил в городе, с июня по август - на даче. При этом с городом у меня не сохранилось практически никаких воспоминаний, за исключением двух-трех вырванных из временного контекста травм: как я провалился под лед на городском озере и мой друг, Андрюша Акинфиев (с которым не расстаюсь и поныне), вытащил меня на поверхность, как местных хулиган убил котенка, накрыв газетой и растоптав ногами, как меня наказали в детском саду, не отпустив домой и оставив на ночь.
Зато все самое лучшее, светлое и вдохновляющее происходило со мной летом в живописнейшем лесном уголке на берегу Днестра в месте, где река запружена гидроэлектростанцией и разлита на полтора километра. По соседству с селом Голерканы (по-румынски: Holercani) располагался дом отдыха, в котором семья наша и отдыхала каждое лето.
Я прожил в Эдеме своего детства с 1962 по 1977 годы. Тремя годами ранее мы переехали в Москву, осенью 77го умер дед, казенную дачу в доме отдыха как и полагалось по советскому кодексу привилегий отобрали, после чего я ни разу больше в Голерканах не появлялся. Совокупность этих событий явилась тем, что принято формально называть прощанием с детством. В прошлом безвозвратно осталось много интересного и желанного, но ни о чем я не тосковал так сильно, как о своем Потерянном Рае!
Голерканы моего детства, мой Потерянный Рай, в первую очередь ассоциировался с пространством: уникальной топографией Вселенной, единственно доступной и данной мне в ощущения. Другого мира я не знал, поэтому территория, ограниченная с юга - гидроэлектростанцией, с севера - резкой излучиной сужающегося Днестра, с востока - рекой, и с запада густым лесом, не только представлялась мне ВСЕМ миром, но и таковым была в реальности:
И вот представьте себе: 33 года спустя я снова попал в свой Эдем! Просто сел в машину и поехал. Почему не делал этого раньше? Думаю, боялся. Боялся встречи с чем-то очень дорогим и далеким. Вернее, боялся не встреча, а возможного разочарования. Тут же выдался повод: нахлынула волна воспоминаний, начал рассказывать Анастасии о том, как ловил раков с друзьями, вставал в четыре утра на рыбалку, строил вигвамы в лесу, нырял с лодки, вил гнезда из алюминиевой проволоки на высоких тополях, влюбился в девочку в первый раз. Начал рассказывать и тут же предложил поехать!
От моей сегодняшней летней резиденции до Голеркан не более получаса езды даже по ужасным молдавским дорогам. Поверите ли: Paradise Regained состоялся в июле прошлого года! Сразу же после поездки я загорелся желанием поделиться нахлынувшими переживаниями, описать увиденное в какой-нибудь иронично непринужденной «Голубятне»: сел писать и... не смог! Столь глубоким оказалось потрясение, пережитое при встрече с хронотопом детства, столь неадекватной казалась любая попытка передать переживания словом и даже изображением, что просто опускались руки.
Лишь теперь, больше года спустя, когда волнение улеглось, думаю, смогу осмысленно передать суть пережитого. Я увидел, нет, даже не замороженное во времени прошлое, а ... саму смерть! В чистом виде! Не на уровне культурного символа - с косой и пустыми глазницами глаз, а смерть настоящую во всей ее потрясающей обыденности: смерть, помещенную в центр жизни, окруженную со всех сторон жизнью, но сама жизнью не являющаяся! Смерть в жизни, как часть жизни, и при этом - полное отрицание жизни. Не на уровне символа, повторюсь, а в самом прямом смысле слова, во плоти.
В Голерканах, которые я увидел впервые за 33 года, не изменилось абсолютно ничего! Даже страшно, что такое бывает: краска на балконных перилах нашей дачи облуплена в тех же местах, где и раньше! Я взглянул и сразу же вспомнил (невероятная способность человеческой памяти удерживать в себе самые незначительные мелочи!). Цветочные клумбы на старых местах, та же мебель (33 года!), такая же разметка асфальта, обшарпанная штукатурка фасадов на корпусах Дома отдыха, даже гнездо, которое я сплел с друзьями на высоте четырех метров на вековом тополе, и то сохранилось!
Время остановилось в Голерканах. Вокруг работали люди: подстригали кустарники, зачем-то выщипывали сорняк, пробивающийся через асфальт, подметали, собирали абрикосы и сливы, что-то затрапезно чистили и прибирали, но меня не покидало ощущение, что я нахожусь во второй серии Hellraiser: помните эпизод с девочкой, которая идет по госпиталю в Аду? Вокруг какое-то невообразимое пространство геометрически правильных линий, уходящих в бесконечность, какое-то механистическое копошение жизни, жизнью не являющейся. Имитация жизни. Именно, что имитация, а не пародия, потому что все выглядит очень серьезно, лица людей серьезны, даже птицы поют как-то по-серьезному.
Картину жизнесмерти (или смертежизни) увенчивают новые символы, мне не знакомые (правда, историю эту я слышал лет десять назад от друзей): в конце 80х годов администрация Дома отдыха задумала строить новый - третий - корпус. Собрали коробку, затем началась приднестровская война и какой-то шальной снаряд угадил прямо в фасад здания. После этого ничего больше не строили, но и коробку разрушать не стали, оставили все как есть - видимо, в назидание потомкам:
О фотографиях. Мы с Анастасией приехали в Голерканы без фото и видеокамеры. Даже не знаю, почему так вышло. Наверное поначалу забыли, а когда вспомнили, решили не возвращаться, потому что планировали делать это неоднократно в будущем. Посему буду иллюстрировать свой рассказ фотографиями незнакомого мне человека - Вадима Кобзева (спасибо Google Maps и сервису Panoramio).
Фотообъектив Вадима фиксировал хронотоп моего детства в совершенно иной тональности, что лишь играет на руку читателю, поскольку рельефнее передает невозможное течение времени и феномен жизнесмерти:
На фотографиях нет отдыхающих - и это именно то, чему стали свидетелями и я с Настей: Голерканы совершенно пусты! В моем детстве жизнь бурлила и буквально проливалась через край смехом, весельем, гомоном множества событий, в которые заплетались судьбы сотен людей. Ничего больше нет. Чистая геометрия прямых линий пространства и остановившееся время. Hellraiser.
Объяснение тому, правда, банальное: более 15 лет после обретения Молдовой независимости дом отдыха Голерканы, находившийся всегда на балансе Совмина, сохранял свой привычно закрытый статус. Проблема, однако, в том, что новая власть, в отличие от власти советской, не приемлет коммунальные идеалы: концепция коллективного отдыха на общей территории ничего кроме раздражения вызывать не может. Новые власти строят себе новые многоэтажные виллы с таким прицелом, чтобы после отставки сохранялись права собственности.
В середине 2000х годов Дом отдыха в Голерканах получил открытый статус, однако оказалось уже поздно: кому нужен Днестр, когда открыты все границы и до турецких морских курортов 40 минут лёта?
Остановившееся время, жизнесмерть, тени прошлого - все это, конечно, впечатляет, однако не настолько, чтобы отнять у меня голос на полтора года. Было еще и другое. Несоизмеримо более важное и волнительное. Как я уже сказал, Голерканы на протяжении 15 лет являлись для меня синонимом Вселенной. Я отчетливо помню, сколько часов, дней, месяцев у меня уходило в детстве на изучение каждого закутка леса, лесного оврага, пещер, речного берега. Мир был ОГРОМЕН!
Сегодня мы обошли всю «бескрайнюю» территорию дома отдыха за полчаса! От края до края! При том, что постоянно останавливались и я рассказывал Насте про события моего детства, связанные с той или иной топографической мелочью («здесь я навернулся с велосипеда и разбил колено», «здесь мы закидывали донки», «под этим дубом дед играл в преферанс» и т.п.).
Именно это переживание оказалось самым сильным и самым давящим: мир, который казался мне бескрайним, вышел на поверку крошечным! Все мое детство прошло в карликовом хронотопе! А я об этом даже не догадывался. Тем более - не тяготился: мне моего мира хватало за глаза - и чтобы исследовать его, и чтобы наслаждаться жизнью в нем.
Ограниченность хронотопа, несоответствие наших ощущений реальности, непропорциональность переживаний пространству и времени - голова моя раскалывалась от ранящих откровений. Ранящих, потому что как никогда раньше осознал всю ничтожность своей (нашей) жизни, всю ее незначительность, мелочность, бессмысленность и тщетность.
Такие вот переживания преподнесло мне свидание с хронотопом детства. Свиданием, которое откладывал 33 года! Теперь понимаю, что надо было отложить навеки.
Василий Щепетнёв: Колхоз имени Тома Сойера
Автор: Василий Щепетнев
Гуляешь по немецкой земле, пьёшь местное пиво, вздыхаешь, вспоминая пиво гваздёвское, совсем не такое, а, скорее, сякое. И вдруг вспоминаешь, что октябрь – это не только время пива и вайсвурстов. В октябре выходит новая версия шахматной программы Fritz от ChessBase, в этом году – Fritz 13.
Начиная с восьмой версии я их, "Фрицев", не пропускаю. Покупаю, устанавливаю на десктоп и ноутбук и играю, играю, играю…
Не с программой – с другими любителями шахмат на игровом сервере "PlayChess". Для этого и приходится тратиться на лицензионный продукт: прилагаемый к нему серийный номер дает возможность полноценной игры на сервере в течение года. "Думающая" часть "Фрица" - "движок", как принято говорить среди энтузиастов, сдаёт позиции. Сегодня доступны бесплатные движки, "Фрицу" ничем не уступающие, а порой превосходящие "великую прогу" (ещё один термин энтузиастов), и превосходящие существенно. Да и графический интерфейс если и развивается от версии к версии, то развитие идёт всё больше по линии дизайна.
Можно ли назвать развитием переход от ситца в горошек к ситцу в клеточку? От штанов "дудочка" к штанам "клёш"? Наконец, от "Боже, царя храни" к "Марсельезе", "Интернационалу", "Гимну партии большевиков", "Патриотической песне" и назад, к "Гимну партии большевиков"? И потому каждый год я говорю себе, что это в последний раз. Хватит. Зряшная трата. Лучше Афочке что-нибудь вкусненькое купить. Или себе.
Но на следующий год повторяется то же самое.
Воротясь раньше срока домой, я, чтобы сгладить чувство досады, прописал нового "Фрица" на компьютере. И увидел, что это действительно штука посильнее "Девушки и смерти" Горького, с "Фаустом" и сравнивать не стану.
Дело не в движке. После проигрыша десятому "Фрицу" Крамника в декабре две тысячи шестого года простого любителя сила движка может не волновать, а профессионалы предпочитают "Гудини" или "Рыбку". Дело в том, что "фриц", точнее, его сервер, стал колхозом!
В программе появилась функция "Let’s Check". Теперь при её, функции, использовании мой анализ позиции из партии или дебюта, наряду с анализами других фрицепользователей, сохраняется в базе данных сервера.
Исследование дебютов – очень важная часть как шахматной теории, так и практической подготовки шахматистов. Для этой работы претенденты на мировую корону арендуют или даже приобретают кластеры, многопроцессорные системы. Но никакая многопроцессорная система не одолеет сотен и тысяч энтузиастов, вооружённых довольно мощными машинами (первыми из моих знакомых на I7 перешли как раз шахматисты - люди самого разного достатка, порой весьма скромного даже по меркам российской глубинки).
На деле это выглядит так: запускается функция "Let’s Check". Затем – "Сontribute engine": свой движок отдаешь дяде, то есть серверу ChessBase, а сам идешь гулять, смотришь кино или пишешь что-нибудь возвышенное. А чаще всего – ложишься спать. Сервер исправно посылает задания: анализировать ту или иную позицию, тот или иной дебютный вариант. Утром проснулся, а тебя радуют: так, мол, и так, за ночь было проанализировано столько-то позиций, за что вам начислено столько-то палочек-трудодней, то есть кредитов.
Что делать с кредитами? За кредиты можно внести в базу данных сервера новую позицию, и её будут анализировать другие колхозники… то есть владельцы Фрица Тринадцатого. Имена наиболее отличившихся колхозников помещают на Доску почёта ("List оf Honour"). Вот, собственно, и вся награда.
В итоге ChessBase становится владельцем уникальной базы шахматных данных, а рядовой любитель (ChessBase делает акцент на том, что теперь именно рядовой любитель с хорошим компьютером может внести существенный вклад в развитие шахматной теории) испытывает чувство сопричастности к важному и полезному делу.
Это здорово напоминает то, как Том Сойер справился с побелкой забора. Помните: "Весь забор выбелен, и не только выбелен, но и покрыт несколькими густыми слоями извёстки, и даже по земле вдоль забора проведена белая полоса".
Использовав труд пламенных энтузиастов, сам Сойер приобрёл немало богатств, как-то: "дохлую крысу на длинной верёвочке, двенадцать алебастровых шариков, осколок синей бутылки, чтобы глядеть сквозь него, пушку, сделанную из катушки для ниток, ключ, который ничего не хотел отпирать, кусок мела, стеклянную пробку от графина, пару головастиков, шесть хлопушек, одноглазого котёнка, медную дверную ручку, собачий ошейник – без собаки, рукоятку ножа, четыре апельсиновые корки и старую сломанную оконную раму".
Правда, сейчас каждый может пользоваться плодами, взращёнными на колхозных полях: дебютная книга Livebook общедоступна (во всяком случае, для купивших программу "Fritz 13"). Как знать, вдруг она, книга, в отличие от лесов, полей и рек, а также заводов, газет и пароходов, некогда как бы принадлежавших всем гражданам СССР, так общедоступной и останется? Но предварительные выводы рискну сделать уже сейчас.
Первое: энтузиазм – великая, хотя и непостоянная сила. Как ветер. Если его использовать с умом, то и горы свернуть удаётся, и реки перенаправить, и даже – местами – подмести улицы. Отечественные энтузиасты, по тем или иным причинам не имеющие возможность приобрести лицензионную версию программы за евро или доллары, ждут не дождутся, когда же выйдет локализованная версия, доступная за рубли. По опыту прошлых лет – в лучшем случае в следующем году.
Второе: шахматы неисчерпаемы. Даже если каждый компьютер нашей планеты будет работать над анализом позиций в режиме "Let’s Check", работы хватит всем и надолго. Звёзды столько не живут. И третье: идея колхоза столь же неисчерпаема, сколь и шахматы.
Мы ещё увидим поющих трудолюбивых дехкан на наших бескрайних полях…
Микропроцессор Hobbit: на каком языке говорили полурослики
Автор: Евгений Лебеденко, Mobi.ru
Сердце большинства нынешних персональных компьютеров и их старших братьев, серверных систем, кластеров и суперЭВМ, - это процессор, относящийся к типу CISC (Complex Instruction Set Computing). Апологеты CISC'остроения отлично известны - это компании Intel и AMD, "заклятые друзья", ведущие бесконечный бой за потребителя.
Мобильные гаджеты - совсем другое дело. Почти в каждый из них "имплантирован" процессор типа RISC (Redused Instruction Set Computing) с сокращённым набором команд. Чаще всего такие процессоры базируются на архитектуре, разработанной компанией ARM и лицензируемой великим множеством производителей.
Считается, что CISC-процессоры весьма производительны, но при этом далеко не идеальны в плане энергопотребления и рассеиваемой кристаллом мощности. Их конкуренты с архитектурой RISC пусть и послабее в вычислительном плане, но зато куда умереннее тратят заряд батареи и способны трудиться без лишних охлаждающих "примочек".
Сейчас кажется, что подобная расстановка сил на процессорных фронтах была от начала времён. Однако это ложное представление. На самом деле семидесятые и восьмидесятые годы прошлого столетия были настоящей фабрикой процессорной эволюции, где за место под солнцем воевали различные, и порой весьма причудливые, архитектуры. Многие из них канули в Лету, другие же нашли продолжение в новых разработках.
Эта история об одном из таких процессорных "чебурашек" - уникальном во многих отношениях процессоре по имени Hobbit, который был рождён... нет, не в Средиземье, а в исследовательской лаборатории Bell Labs компании AT&T.
Восьмого октября сего года ушёл из жизни Деннис Ритчи – человек, которого весь мир знал как создателя языка программирования С и соавтора операционной системы Unix.
Вклад, который внёс этот компьютерный гений в облик нынешнего мира цифровых вычислений, трудно переоценить. Язык С, выросший из исследовательских проектов Ритчи, сегодня используется в качестве инструмента для создания кода ядер большинства операционных систем, а его синтаксические и семантические отголоски в той или иной степени присутствуют во многих языках программирования.
Появление же произвело настоящую революцию в программистских умах, сделав возможным написание программ с помощью весьма простых и элегантных правил процедурного программирования, совмещенных со свежепредложенной Эдсгером Дейкстрой структурной методологией создания программ.
Конечно, программисты были влюблены в этот инструмент создания программ, представленный С и его последователями. А вот с исполнением полученного кода на конкретном "железе" всё было далеко не так гладко. Перефразируя поэта, можно сказать: "Любовная лодка эффективности языка программирования разбилась о быт процессорных архитектур". В чём же крылась причина этого кораблекрушения?
Вспомним в общих чертах, как процессор выполняет программу. Все необходимые для работы программы компоненты, а именно код и данные, располагаются в определённом адресном пространстве оперативной памяти. Процессоры, как правило, избегают обращаться к оперативной памяти напрямую, поскольку считается, что это сильно замедляет их работу. Поэтому в состав процессора входит специальный модуль вызова команд, который занимается выборкой инструкций программы из оперативной памяти и передаёт найденные инструкции исполнительному устройству процессора. В подавляющем большинстве случаев модуль вызова команды размещает найденную инструкцию и данные для обработки в специальные регистры процессора, к которым имеет доступ исполнительное устройство.
Процессоры с традиционной архитектурой хранят инструкции и данные в регистрах
Фактически процессор классической архитектуры (неважно, CISC или RISC) общается только с этими регистрами, знать не зная о том, что же происходит в памяти. Конечно же, у такой схемы обработки есть варианты. Например, регистры могут быть заменены или дополнены аппаратно реализованным пулом в виде очереди FIFO или же специальной кэш-памятью. Эти изменения и дополнения позволяют модулю вызова команды осуществлять предварительную выборку сразу нескольких инструкций, подыгрывая суперскалярности исполнительного устройства. Однако регистровая суть работы процессора при этом не меняется.
Беда же заключается в том, что языки программирования высокого уровня, подобные С (ассемблеры, вплотную приближенные к архитектуре процессора, не в счёт), создавая программу, используют совершенно другую методологию. Они размещают необходимые программе локальные переменные и иные структуры, необходимые для выполнения основной ветви программы и вызываемых из неё процедур, в области памяти, называемой "стек". Стек устроен по принципу оружейного магазина и на своей вершине содержит наиболее актуальные в данный момент данные.
Одним словом, стековая идиллия программ, которую создаёт компилятор, сталкивается с суровыми регистровыми буднями реальных процессорных архитектур. В этом не было бы ничего страшного, если бы не вызовы процедур.
В больших программных проектах достаточной редкостью является наличие одной линейно развивающейся ветви выполнения программы. То и дело её течение приостанавливается, чтобы вызвать какую-либо подпрограмму. А это значит, что информация о последней инструкции и данных основной ветви, хранящаяся в регистрах процессора, должна быть заменена на инструкции и данные вызываемой процедуры.
А если процедур много и вызываются они довольно часто? Нетрудно догадаться, кто в этом случае работает больше, модуль вызова команды или исполнительное устройство процессора. Вот и выходит, что в реальности архитектура процессора, основанная на регистрах, буксует при выполнении сложных программ с кучей процедур.
Именно об этой нестыковке и задумался коллектив исследователей (в его состав входил и Деннис Ритчи, и другие сотрудники Bell Labs), разрабатывая С-машину – гипотетическую безрегистровую процессорную архитектуру, оптимизированную для выполнения С-программ со множеством процедур и стековой организацией хранения данных.
К разработке С-машины учёные подошли основательно. Предварительно была выполнена трассировка исполнения разных типов С-программ, позволившая собрать уникальную статистику, связанную с обращением к памяти и вызовом процедур. Кстати, позже эта статистика "стрельнула" в проекте виртуальной памяти, без которой немыслимо нынешнее поколение операционных систем.
Приступая к разработке С-машины, исследователи провели трассировку десятков С-программ
Согласно идеологии С-машины, инструкции программы получали доступ к необходимым им данным так, как это задумывалось компилятором языка С, то есть непосредственно обращаясь к находящимся в памяти стекам программы и её процедур и, например, таким элементам, как массивы. Такое неэффективное с точки зрения скорости доступа решение на практике оказывалось более продуктивным, чем постоянное перезаписывание более шустрых регистров.
В основе архитектуры С-машины лежит использование специальной кэш-памяти для отображения в ней стека программы
Кроме улучшения производительности, С-машина позволяла получать более компактный код, поскольку в ней не было потребности определять расположение данных необходимых текущей инструкции. По умолчанию они находились в вершине стека. Повышенная плотность кода означала ещё и сокращение трафика в шине данных, что опять же положительно сказывалось на производительности исполнения программы.
Проект С-машины стал активно развиваться в начале восьмидесятых годов прошлого столетия. Возможно, он так и остался бы эдакой игрой разума, если бы не "железные" амбиции компании AT&T, в недрах которой появился язык С и операционная система Unix.
Восьмидесятые годы прошлого столетия были настоящим Клондайком для разработчиков микропроцессоров. Твори, выдумывай, пробуй! Трудись в поте лица и не забывай скрестить пальцы "на удачу". Глядишь, баловница Судьба и подбросит тебе самородок в виде признания рынком именно твоей процессорной архитектуры.
Именно поэтому в процессорной гонке принимала участие и до мозга костей коммуникационная компания AT&T. Её исследовательский центр Bell Labs заслуженно считался кузницей гениальных идей и решений. Именно там получили путёвку в жизнь забытые ныне AT&T-процессоры.
Как и большинство компаний, AT&T начинала с четырёх и восьмиразрядных CISC-процессоров. Первым процессором, разработанным Bell Labs, был Mac-8 – восьмиразрядный процессор общего назначения, представленный 17 февраля 1977 года. В отличие от большинства конкурентов (например, Intel), использовавших для производства технологию NMOS, AT&T в содержащем всего 7500 транзисторов процессоре, MAC-8 применила более сложную для того времени, но эффективную технологию CMOS.
Процессор Mac-8 не нашёл признания на массовом рынке, но широко использовался в коммуникационном оборудовании, выпускаемом AT&T. И именно в нём проклюнулись первые ростки С-машины. Уникальной особенностью Mac-8 была возможность прямого отображения его регистров на адреса оперативной памяти и зачатки оптимизации процессорной архитектуры под особенности языка С.