Wednesday, February 21, 2007

Wrong Time on a Domain Controller

Today we had to shut down all our servers for electricity maintenance, and while they were starting back up after the maintenance, clock was set incorrectly on one of our two domain controllers. I am not completely sure why this happened, but it seems to be the fault of Tardis Internet time service. One way or another, time was reset to Jan 1st, 2000. All the hell broke loose.

First, the wrong time was picked up by some other computers that suddenly shifted to year 2000. That was the least of all problems. Second, users started having problems logging in to the domain. The faulty domain controller denied access due to clock skew. These two problems were resolved once the time problem was noticed and time at the domain controller was reset to the correct value. But this was not the end.

Unfortunately, while the faulty domain controller (we'll call it DCB) was in year 2000 it replicated with the other controller (let's call it DCA) that had the correct time. Then DCA remembered that it last replicated with DCB in year 2000! As the result, when the time on DCB was corrected, DCA no longer wanted to replicate to DCB thinking that it was way too outdated to replicate again. Attempts to force replication in replmon utility (from Windows Support Tools) resulted in the error "The Active Directory cannot replicate with this server because the time since the last replication with this server has exceeded the tombstone lifetime." Directory Service Event log on DCA showed Event 2042 which read:

It has been too long since this machine last replicated with the named source machine. The time between replications with this source has exceeded the tombstone lifetime. Replication has been stopped with this source.

The reason that replication is not allowed to continue is that the two machine's views of deleted objects may now be different. The source machine may still have copies of objects that have been deleted (and garbage collected) on this machine. If they were allowed to replicate, the source machine might return objects which have already been deleted.

This problem soon had consequences. One user reported that her workstation could no longer connect to shared resources on the DCB controller, with error message "Target principal is incorrect". It was a strange situation, since it could connect to any other server in the network, plus all other workstations but this one could connect to DCB too. Although I still don't have a definite explanation to this, my best guess is that this workstation had the bad luck to automatically change its domain account password while the replication was broken. As the result, DCA had its new password, but DCB still had the old one, and thus could not authenticate the workstation.

To resolve the replication problem I followed the advice from the Event 2042 log entry and numerous sources on the internet, such as "Event ID 2042: It has been too long since this machine replicated" chapter from Windows Server 2003 Active Directory Operations guide on Microsoft TechNet. On DCB I went to the registry key HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters and created a DWORD value Allow Replication With Divergent and Corrupt Partner with value 1. Then forced replication from DCA to DCB in replmon. This time replication worked, and after that I reset the registry value to 0.

Still, replication in the other direction, from DCB to DCA didn't work. Directory Service Event log on DCB showed Event 1988 which read:

Active Directory Replication encountered the existence of objects in the following partition that have been deleted from the local domain controllers (DCs) Active Directory database. Not all direct or transitive replication partners replicated in the deletion before the tombstone lifetime number of days passed. Objects that have been deleted and garbage collected from an Active Directory partition but still exist in the writable partitions of other DCs in the same domain, or read-only partitions of global catalog servers in other domains in the forest are known as "lingering objects".

This event is being logged because the source DC contains a lingering object which does not exist on the local DCs Active Directory database. This replication attempt has been blocked.

The best solution to this problem is to identify and remove all lingering objects in the forest.

Additionally, the Application event log was flooded with Event 1053 that read "Windows cannot determine the user or computer name. (Access is denied.). Group Policy processing aborted."

At the edge of panic, I searched for suggestions to Event 1053 error. In retrospect, I'm not sure I did the right thing, but I followed the advice from the Microsoft KB article 288167 (or 260575) to reset DCB's computer acccount password with netdom utility. After the password was reset and computer rebooted, the problem of the workstation that could not connect to DCB's shared resources disappeared.

It remained to restore replication from DCB to DCA though. I followed "Event ID 1388 or 1988: A lingering object is detected" chapter from Windows Server 2003 Active Directory Operations guide on Microsoft TechNet (there's also a few KB articles that you can find if you search for "lingering objects" at support.microsoft.com). Using repladmin /removelingeringobjects on DCA, as described there, I removed the objects that stopped the replication, and the issue was finally resolved.

In retrospect, I don't fully understand how those lingering objects occurred and if it was safe to remove them or not. Perhaps I should have disabled Strict Replication Consistency as described at the same TechNet article or in the Event 1988 log entry.

To wrap up this post, don't mess with time, it's important.

Dangers of Group Policy

As any powerful tool, Group Policy may cause trouble if used inappropriately. Once I have set the following parameters in our domain's default policy: Computer Configuration - Administrative Templates - Network - DNS Client - DNS Servers and DNS Suffix Search List to the values appropriate to our LAN. I must admit that in doing so I didn't pursue any particular purpose, since these settings were configured on all client computers either manually or with DHCP. It just seemed a right thing to do. Wrong. Recently we started using a laptop computer to access the Internet wirelessly via GPRS while on the road. All went well until the laptop was joined to the domain. Suddenly GPRS connection no longer worked. Investigation revealed the following: once the laptop was joined to the domain, Group Policy applied to it, including our internal LAN DNS Server setting. Then, unexpectedly, the computer continued using this DNS Server even when disconnected from the LAN and connected via GRPS, which, of course, didn't work. To resolve the problem I simply removed these settings from the Group Policy, then connected the laptop to the LAN and ran gpupdate to update Group Policy settings. I guess if I did need these settings in the Group Policy I would have to move the laptop to another OU in the Active Directory so that this particular policy would not apply to it.

Friday, February 16, 2007

Новое слово английского языка

Отечественная журналистика сталкивается с трудностями перевода.

13 февраля The Wall Street Journal опубликовал статью под названием "Russian for Chutzpah" с критикой известного выступления Путина в Мюнхене. Я совершенно не хочу вдаваться в суть статьи, заинтересовали меня трудности перевода. На сайте WSJ статья доступна только подписчикам, но зато на сайте Royal Dutch Shell ее можно прочитать (очевидно, компания Royal Dutch Shell заинтересовалась этой статьей потому, что она там упоминается в связи с проектом Сахалин-2). Статья начинается фразой:

The nearest equivalent the Russian language has for the word chutzpah is naglost.
Трудно не согласиться с автором. Но вот появляется перевод этой статьи на русский язык на украинском сайте UK2Watch, который затем переречатывает популярный новостной сайт Korrespondent.net. В переводе фраза звучит так:
В английском языке есть очень выразительное слово chutzpah, которое по-русски лучше всего переводится как «наглость».
Переводчик, по-видимому, не в курсе, что "очень выразительное" английское слово chutzpah ("хуцпа") на самом деле является ивритским, и в английский сленг пришло через идиш (подобно словам "хохма" или "ксива" в русском языке).

Также забавно, что очень выразительное слово chutzpah о выступлении Путина (хотя и в другом контексте) первым употребил на WSJ, а украинская блоггер (как в женском роде? трудности перевода) Вероника Хохлова здесь.

Saturday, February 10, 2007

Неофициальные патчи для Digikam

Digikam - прекрасная программа для работы с цифровыми фотографиями в Linux, которой я активно пользуюсь и рекомендую всем пользователям Linux'а. В этой заметке я опишу одну небольшую проблему Digikam и предложу ее решение.

На моем компьютере установлен не только Linux, но конечно же и Windows, без которого пока обойтись тяжело. Для работы с фотографиями под Windows я использую не менее прекрасную программу Picasa. Конечно, мне хотелось бы, чтобы комментарии к фотографиям, которые я ввожу в Digikam, воспринимались также и Picasa (например, для загрузки в Picasa Web Albums). И Digikam позволяет это сделать, благодаря опции "Save image comments as embedded text". При включении этой опции Digikam сохраняет комментарии к фотографиям в самих файлах фотографий в виде JPEG-комментариев и тэгов EXIF и IPTC. Picasa же использует для сохранения комментарием именно тэги IPTC. Так что Digikam и Picasa могли бы прекрасно понимать комментарии друг друга, если бы не одно "но" - и это, конечно, русские кодировки. Комментарии латинскими буквами воспринимаются прекрасно. Но попробуйте ввести в Digikam комментарий на русском: Picasa увидит одни знаки вопроса. А комментарий, введенный в Picasa в Digikam превратится в "крокозябры".

Для решения этой проблемы я создал небольшой патч для Digikam. После установки патча и перекомпиляции в Digikam появится новая опция. Она находится в диалоге "Configure Digikam" на странице Metadata и называется "IPTC Encoding". Выберите значение "Cyrillic (cp1251)" и после этого Digikam будет сохранять комментарии в IPTC тэги в читаемом для Picasa виде (т.е. Windows-кодировке) и, соответственно, читать комментарии, сохраненные в Picasa. Если же также установить другой мой патч на расширения kipi-plugins, то расширение Metadataedit позволит вам свободно редактировать метаданные IPTC на русском.

Патч для исходников Digikam 0.9.0 находится здесь, патч для исходников kipi-plugins 0.1.3 здесь. Собранный пакет Digikam RPM для Fedora Core 5 с моим патчем здесь, kipi-plugins - здесь.

Обновление для Digikam 0.9.1. Для этого релиза патчить надо сам Digikam и пакет libkexiv2. Патч для Digikam здесь, для libkexiv2 - здесь. Kipi-plugins модифицировать не нужно. Собранный пакет Digikam RPM для Fedora Core 5 с моим патчем здесь, libkexiv2 - здесь.

Обновление для Digikam 0.9.2. Патч для Digikam здесь, для libkexiv2 - здесь. Собранный пакет Digikam RPM для Fedora Core 5 с моим патчем здесь, libkexiv2 - здесь.

Обновление для Digikam 0.9.3. Патч для Digikam здесь, для libkexiv2 - здесь. Собранный пакет Digikam RPM для Fedora Core 5 с моим патчем здесь, libkexiv2 - здесь.

Включение этих патчей в официальную версию Digikam сейчас обсуждается.

Friday, February 09, 2007

A Piece of American Humor

A farmer named Clyde had a car accident. In court, the trucking company's fancy lawyer was questioning Clyde .

"Didn't you say, at the scene of the accident, 'I'm fine,'?" asked the lawyer.

Clyde responded, "Well, I'll tell you what happened. I had just loaded my favourite mule, Bessie, into the..."

"I didn't ask for any details", the lawyer interrupted. "Just answer the question. Did you not say, at the scene of the accident, 'I'm fine!'?"

Clyde said, "Well, I had just got Bessie into the trailer and I was driving down the road...."

The lawyer interrupted again and said, "Judge, I am trying to establish the fact that, at the scene of the accident, this man told the Highway Patrolman on the scene that he was just fine. Now several weeks after the accident he is trying to sue my client. I believe he is a fraud. Please tell him to simply answer the question."

By this time, the Judge was fairly interested in Clyde 's answer and said to the lawyer, "I'd like to hear what he has to say about his favorite mule, Bessie". Clyde thanked the Judge and proceeded.

"Well as I was saying, I had just loaded Bessie, my favorite mule, into the trailer and was driving her down the highway when this huge semi-truck and trailer ran the stop sign and smacked my truck right in the side. I was thrown into one ditch and Bessie was thrown into the other. I was hurting, real bad and didn't want to move. However, I could hear ole Bessie moaning and groaning. I knew she was interrible shape just by her groans. Shortly after the accident a Highway Patrolman came on the scene. He could hear Bessie moaning and groaning so he went over to her. After he looked at her, and saw her fatal condition, he took out his gun and shot her between the eyes.

Then the Patrolman came across the road, gun still in hand, looked at me,and said, "How are you feeling?"

"Now what the Fuck would you say?

Sunday, February 04, 2007

Парадоксы теории множеств

Небольшое предисловие

Эта статья бала написана мной в качестве реферата по психологии (!) в аспирантуре в 1996 г. По замыслу, это план занимательной лекции по математике. Насколько она занимательна судить читателю.


Парадоксы теории множеств

Что такое множество? Слово это часто встречается в повседневной речи -- мы говорим о "множество дел" или "множестве людей", -- и фактически подспудно присутствовало в математике с момента ее возникновения. Однако, явным образом понятие множества подверглось систематическому изучению лишь во второй половине XIX века в работах немецкого математика Георга Кантора -- до этого в математике существовали "натуральные числа" или "целые числа", но не "множество натуральных чисел" и не "множество целых чисел". И вот когда "множество" как таковое стало предметом математического рассмотрения, в этом, на первый взгляд, простом и повседневном понятии выявились глубокие противоречия, подорвавшие традиционный взгляд на основания математики и научного знания вообще.

Строго определить, что же такое множество не так-то просто. Определения типа "произвольная совокупность объектов" сути дела не проясняют, и есть ни что иное, как замена слова "множество" словом "совокупность", которое, в свою очередь, нуждается в определении. Несмотря на такие трудности с определением абстрактного понятия множества, понятно как задать некое конкретное множество -- нужно указать какие объекты этому множеству принадлежат, а какие не принадлежат. Например, число 1 принадлежит множеству натуральных чисел, а число 1.5 -- не принадлежит, как не принадлежит ему и автомобиль моего соседа. Пример с автомобилем может показаться несколько неуместным -- в самом деле, ясно, что автомобили к натуральным числам отношения не имеют, т.е. очевидно, что соседский автомобиль не принадлежит множеству натуральных чисел. Однако, в других, менее тривиальных ситуациях все не так очевидно, и возникает законный вопрос -- а какие объекты вообще могут быть элементами множеств? Когда мы говорим "указать какие объекты этому множеству принадлежат" -- о каких объектах мы говорим? Только о числах или о, скажем, функциях, автомобилях, людях? На протяжении столетий развития математики, на этот вопрос неявно отвечали -- о всех объектах. Элементами множеств могло быть все. В этом наивном стремлении свести все к множествам и скрывалось внутренне противоречие, которое мы постараемся прояснить. Но вначале необходимо ближе познакомиться с классической канторовой теорией множеств.

Одним из основных понятий, введенных Кантором, является мощность множества. Мощность есть обобщение количества элементов множества. Количество элементов множества {1, 2, 3} равно 3, и, соответственно, это множество меньше, чем множество {3, 4, 5, 7, 8}, в котором 5 элементов. Но сколько элементов в множестве всех натуральных чисел N? Бесконечно много, скажем мы. А в множестве целых чисел Z или вещественных чисел R? Тоже бесконечно много! Нельзя ли как-то сравнить эти бесконечности и определить, какая из этих бесконечностей больше?

Рассмотрим такой пример. Пусть множество (мы намеренно употребляем это слово) людей нужно рассадить в кресла в зале. Мы хотим определить, чего в зале больше: людей или кресел. Можно посчитать всех людей и все кресла и определить, какое из чисел больше. Но можно поступить и иначе: попросить всех сесть! Если останутся свободные кресла, то кресел больше, если же некоторые люди останутся стоять, то больше людей. Наконец, если все люди рассядутся, а свободных кресел не останется, то мы скажем, что людей и кресел поровну.

Аналогично мы можем поступать с множествами. Хотя мы не можем пересчитать все элементы двух бесконечных множеств, но мы можем попытаться поставить их элементы во взаимно-однозначное соответствие, иными словами, рассадить людей в кресла. Если установить такое соответствие удастся, то мы скажем (следуя Кантору), что два рассматриваемых множества равномощны. Если же, как бы мы не устанавливали соответствие, всегда остаются "лишние" элементы из одного из множеств, то это множество имеет большую мощность, чем другое.

При таком определении, оказывается, что множество всех целых чисел равномощно своему подмножеству -- множеству натуральных чисел. Этот парадоксальный, на первый взгляд факт, легко доказать. Выпишем целые числа в таком порядке:

0, 1, -1, 2, -2, 3, -3, ...

Ясно, что так мы выпишем все целые числа. Однако, если теперь мы занумеруем их всех слева направо натуральными числами 1, 2, 3, ..., то все целые числа "рассядутся в кресла" натуральных чисел. Таким образом установлено взаимно-однозначное соответствие между множествами N и Z, и, таким образом, они равномощны. Пока, впрочем, никакого парадокса нет -- просто к бесконечным множествам не всегда применимы наглядные представления.

Ну, а множество вещественных чисел R? Неужели и оно равномощно множеству натуральных чисел? Оказывается, R действительно больше N. Даже множество чисел интервала (0; 1) больше, чем множество натуральных чисел. Покажем это. Допустим, что нам удалось занумеровать все вещественные числа интервала (0; 1) натуральными числами. Выпишем тогда все эти числа в порядке номеров в виде десятичных дробей. Получится что-то вроде

1: 0.5678345345...
2: 0.0928942346...
3: 0.5675454323...
4: 0.9875376780...
и т.д.

Теперь составим вещественное число x таким образом. Если в числе № n на n-м месте стоит цифра 5, запишем в нашем числе x на n-м месте цифру 6; если же в числе № n на n-м месте стоит не пятерка, то запишем в числе x на n-м месте пятерку. Ясно, что x не совпадает ни с одним из перенумерованных чисел -- ведь от n-го числа оно отличается в n-ном знаке! Но x -- тоже число из интервала (0; 1), и потому тоже должно было быть занумеровано! Полученное противоречие показывает, что занумеровать все числа интервала (0; 1) невозможно, т.е. интервал (0; 1) больше множества N.

Есть ли еще большие множества? Да, и сейчас мы это увидим. Пусть S -- какое-то множество. Рассмотрим множество M(S) всех его подмножеств. Т.е. элементами M(S) являются подмножества множества S. Это может показаться слегка экзотичным, но мы ведь договорились, что элементами множеств может быть все, что угодно. Легко посчитать, что если S -- конечное множество из n элементов, то M(S) содержит 2n элементов. Сейчас мы покажем, что M(S) всегда больше S, даже если S бесконечно.

В самом деле, предположим, что нам удалось установить взаимно-однозначное соответствие между элементами S и элементами M(S), т.е. подмножествами S. Т.е. каждому x из S соответствует некоторое подмножество Sx. Рассмотрим теперь множество A всех тех x, которые не принадлежат своим Sx. Это -- тоже некоторое подмножество множества S (может случиться, что оно пусто, а может, совпадает со всем S). Раз так, оно соответствует некоторому конкретному x из S, т.е. A = Sx. Это x не может принадлежать A, т.к. A есть множество тех x, которые не принадлежат своим Sx. Но тогда, поскольку A есть множество всех тех x, которые не принадлежат своим Sx, x должно принадлежать A. Т.е. x и принадлежит, и не принадлежит A, что, конечно же, невозможно. Таким образом, взаимно-однозначное соответствие между S и M(S) невозможно.

Итак, множество M(R) всех подмножеств множества вещественных чисел больше, чем R, далее M(M(R)) больше, чем M(R) и т.д. (Кстати, M(N) равномощно R).

Теперь мы рассмотрим знаменитый парадокс Рассела. Назовем множество экстраординарным, если оно содержит себя в качестве элемента (вопрос о том, существуют ли такие множества, мы пока оставим в стороне). Остальные множества назовем ординарными. Рассмотрим теперь множество O всех ординарных множеств. Весьма экстравагантное множество, но, повторимся, мы допускаем любые объекты в качестве элементов множеств. Само-то O ординарно или нет? Если O ординарно, то, будучи множеством всех ординарных множеств оно должно содержать себя в качестве элемента, т.е. быть экстраординарным. Если же оно экстраординарно, то будучи множеством только ординарных множеств, оно не содержит себя в качестве элемента, и потому ординарно. Итак, если O ординарно, то оно экстраординарно, а если оно экстраординарно, то оно ординарно. Абсурд! Вся эта игра словами напоминает известный старинный парадокс брадобрея: если брадобрей бреет всех тех, и только тех, кто не бреется сам, то бреет ли он сам себя? Здесь, аналогично, если он бреет себя, то он не бреет себя, а если бреет -- то не бреет. Парадокс брадобрея, впрочем, разрешается весьма просто -- такого брадобрея не существует. Ни один брадобрей, как бы он не старался, не может выполнить условия брить всех тех, и только тех, кто не бреется сам -- это условие противоречиво, и потому невыполнимо. В случае множества O нам ничего не остается, как признать, что множества всех ординарных множеств не существует. Однако, в отличие от хитроумного брадобрея, потеря этого множества, хотя едва ли представляет практическую проблему, для оснований математики фатальна. Оно означает конец "наивной теории множеств", где элементами множества позволялось быть всем, чем угодно. Такая вольность в обращении с множествами привела нас к множеству, существование которого внутренне противоречиво. Т.к. такая ситуация в математике недопустима, приходится признать, что не все можно называть множеством. Нашего "монстра" O назвать множеством нельзя. Но что же это тогда? Ведь до сих пор подразумевалось, что существует любое множество, достаточно только это множество описать. И вот, мы описали множество, а оно не существует. Подчеркнем, не пусто, а именно не существует как таковое.

Другой парадокс, связанный с понятием мощности, проясняет, что причина противоречий кроется в "слишком больших" множествах. Рассмотрим множество всех множеств M. (Оно, кстати, экстраординарно). М(M) -- множество всех его подмножеств. Элементы М(M) -- множества, а т.к. M есть множество всех множеств, то все элементы М(M) являются также элементами M. Иными словами, М(M) есть подмножество M. Но ведь мы доказали, что мощность М(M) строго больше мощности M! Мощность подмножества не может быть строго больше мощности объемлющего множества. Таким образом для "монстров" типа M, понятие мощности отказывает. Т.е. множество всех множеств -- не множество.

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

Saturday, February 03, 2007

Cовременная компьютерная революция. Виртуальная реальность?

Небольшое предисловие

Этот текст был написан мной в качестве реферата по философии в аспирантуре в 1996 г. Теперь он представляется весьма наивным, но по-своему интересен до сих пор.

Современная компьютерная революция

Виртуальная реальность?

В 1945 году в Пенсильванском университете (США) было создано первое электронно-вычислительное устройство, получившие название ENIAC - Electronic Numerical Integrator And Computer. Последнее слово этого названия и дало имя одному из величайших изобретений нашего века - компьютеру. Сам ENIAC применялся для баллистических расчетов, предсказаний погоды и некоторых научных вычислений. Сегодня, 50 лет спустя, трудно найти область человеческой деятельности, где компьютер не нашел бы применения. Однако, не только скорость прогресса в области компьютерной техники достойна внимания. Едва ли найдется другое достижение технологии, которое вызывало бы столь обширный, настойчивый, иногда просто благоговейный интерес у рядового обывателя, далекого от знания глубин компьютерной науки. Хотя по сути своей компьютер - не более чем инструмент, лишь сложностью отличающийся от пишущей машинки, в глазах многих, чтобы не сказать - большинства, неспециалистов (в терминологии программистов - пользователей) компьютер скорее не средство, а цель. “Он работает на компьютере” представляется вполне адекватным ответом на вопрос о чьем-либо роде занятий, в то время как ответ “он работает на пишущей машинке” звучит по крайней мере странно. Более того, компьютер представляется чуть ли не одушевленным существом. “Он не хочет печатать!” - восклицает в отчаянии пользователь. Конечно, в нашей стране такое отношение к ЭВМ частично связано с тем, что это чудо техники для нас пока еще в новинку, и мы привыкли к нему куда меньше, чем к телевизору (тоже отнюдь не простое устройство). Но это не единственная причина, да и на Западе, где компьютер давно уже прижился на каждом канцелярском столе, подобное отношение существует. О компьютерной революции рассуждают журналисты, философы и политики. Практически все прогнозы будущего человечества, сделанные как писателями-фантастами, так и профессиональными футурологами, так или иначе подразумевают существенную роль компьютеров. Причем, хотя в одних прогнозах “отбившиеся от рук” злонамеренные ЭВМ захватывают власть над людьми, а в других добрые “умные помощники” превращают жизнь человеческую в рай, в обоих сценариях компьютеру приписывается какая-то собственная воля, злая или добрая. Поневоле задумаешься - почему тема компьютеров столь притягательна и почему мы склонны одушевлять компьютер (по сути - железку)?

Ответить на второй вопрос не так сложно. Как мы уже заметили, компьютер отличается от пишущей машинки сложностью. И здесь происходит пресловутый переход количества в качество. Компьютер так сложен, и функционирование его зависит от столь многих факторов, что пользователь не может охватить и учесть их все. Реакции компьютера представляются со стороны непредсказуемыми и как будто зависящими от его, компьютера, “желания” и “настроения”. Отсюда и одушевление. Но одной “одушевленности” недостаточно для объяснения феноменальной популярности компьютерного дела. Ведь и телевизор, в известной мере, “одушевлен”, а уж домашний кот не только представляется одушевленным, но и является таковым. Компьютер многофункционален - на нем можно проводить научные расчеты, воевать с монстрами в игре “DOOM” или, скажем, набирать этот текст. Но и авторучка многофункциональна. Компьютер важен для индустрии - но и токарный станок не менее (а то и более) важен. На компьютере можно производить сложные расчеты - но считать, в конце концов, можно и на счетах.

Но есть одна вещь, которую счеты, в отличие от компьютера сделать не могут (и в этом - принципиальное отличие этих двух приборов) - счеты не могут принимать логических решений. Компьютер же может, пускай и самые простые. Поэтому именно с изобретением компьютера впервые стала возможна автоматизация интеллектуального труда. Благодаря своим логическим возможностям, ЭВМ может не просто вычислять, но и перебирать варианты, причем делать это со скоростью немыслимой для человека. А ведь решение технических и многих научных задач есть не что иное, как перебор множества вариантов. Правда, человек способен интуитивно “чувствовать” наиболее перспективные варианты и исключать из рассмотрения варианты заведомо тупиковые. Компьютер интуицией не обладает и пока еще не силен в искусстве отличать перспективные ходы мысли от тупиковых. Компьютер перебирает все варианты, но делает это настолько быстро, что может справиться с задачей своим “лобовым” методом, там где эвристика человека пасует.

Эта способность ЭВМ и является истинно революционной. Можно говорить, что она привела к возникновению новой парадигмы решения научных задач. Вместо того, чтобы искать эвристические ходы, избавляющие от необходимости перебора (точнее сказать, сильно ограничивающие перебор), достаточно свести задачу к конечному - пусть даже очень большому - перебору и поручить ЭВМ разобрать все варианты. Перечислить все задачи решенные таким способом невозможно, но классическим примером является знаменитая математическая проблема четырех красок (любую ли карту можно раскрасить четырьмя красками так, чтобы примыкающие страны были окрашены в разные цвета?). Разумеется, полный перебор здесь невозможен - количество возможных карт бесконечно. Многие математические гении искали эвристическое решение этой задачи, но проблема не поддавалась и казалась неразрешимой. И лишь недавно удалось свести все бесконечное разнообразие карт к конечному (но очень большому) числу классов. В отсутствие компьютера это достижение было бы бесполезным, так как перебрать все эти классы было бы невозможно в течение человеческой жизни. ЭВМ же справилась с подсчетом за несколько часов. (Кстати ответ в проблеме четырех красок - да, любую).

Но революция, произведенная вычислительной техникой в инженерии и науке - все-таки недостаточная причина для объяснения столь тотального интереса к компьютеру. Ведь революция эта произошла в 60-70е годы, и касалась она в основном инженеров и ученых. Почему же теперь, в 90е годы, к развитию компьютерной техники приковано внимание столь широких кругов общества?

Совершив революционный скачок - изобретение компьютера - технология медленно но верно двинулась по пути сближения компьютера с его пользователем. Программирование ENIAC’a было под силу лишь его создателям, так как осуществлялось на уровне машинных кодов. С изобретением алгоритмических языков, таких как Фортран, Паскаль или Си, говорить с компьютером стало говорить гораздо больше людей. Ориентированные на пользователя “дружественные” среды, управляемые меню или “кнопочками” еще больше упростили общение с ЭВМ. Обратившись лицом к пользователю, компьютер уже был готов к выходу из лабораторий “в мир”. И тут произошла новая революция.

Поистине эпохальное изобретение (пожалуй, более эпохальное, чем создание самого компьютера) было сделано в 1969 году в лабораториях Агентства передовых исследовательских проектов (ARPA) Министерства обороны США, где была создана первая компьютерная сеть. И если один компьютер таит в себе весьма обширные возможности, то мощь многих компьютеров, объединенных сетью, просто неограниченна. Не случайно именно сетевые технологии - самая “горячая” тема дискуссий компьютерного мира. Не здесь ли секрет притягательности компьютера?

Выйдя из лабораторий ARPA, и превратившись из локальной ARPAnet в глобальную Internet, окрещенную средствами массовой информации “Информационным супер-хайвеем” и “Киберпространством”, всемирная компьютерная сеть придала новый смысл понятию телекоммуникаций. Вот когда компьютер по-настоящему превратился из чисто технического инструмента в своего рода бытовой прибор. Даже в нашей, к сожалению, технологически отсталой среде электронной почтой уже мало кого удивишь, а уж в более развитых странах сеть проникла в самые, казалось бы, далекие от компьютеров области жизни. На экране компьютера можно получить прогноз погоды, сводку положения дел на Уолл Стрит, заказать билет на самолет, поболтать с друзьями (автор делает это регулярно) и даже познакомиться с будущей женой (говорят - автор сам не пробовал). Таким образом компьютер, ранее в общественном сознании находившийся в одной компании со счетами, перешел скорее в разряд журналов и телевидения. Компании, предоставляющие услуги по рекламе и обмену информацией в сети, нарождаются как грибы и зарабатывают миллионы. Самые горячие баталии между фирмами-производителями программного обеспечения разворачиваются именно в области программ для работы в сети. Откройте любой компьютерный журнал - да что там журнал, любую захудалую околокомпьютерную газетенку - страницы пестрят похожими на заклинания названиями сетевых технологий: Internet! Java! World Wide Web! Virtual Reality!..

Reality? Вот оно, ключевое слово - реальность! Именно реальность - хотя и “виртуальная” - встает за экраном монитора. Это верно даже для “одиночного” компьютера и тем более верно для компьютера, подключенного к всемирной сети. И здесь, как мне кажется, кроется корень популярности и интереса к компьютеру. В небольшом ящике, стоящем у вас на столе - целая реальность, мир, который вы можете открывать, и которым вы можете управлять, который вы можете творить. Ведь возможность открывать и творить - безусловно, одна из самых привлекательных вещей для человека, во всяком случае человека образованного, к коим мы хотели бы себя причислить. В “реальной” реальности возможности эти ограничены расстояниями, материальными затратами, отсутствием времени, недостатком таланта и т.д. В виртуальной реальности компьютера, разумеется, есть свои ограничения, но рамки возможного неизмеримо шире. Несколько нажатий на клавиши - и события в вашем, казалось бы, “неуправляемом” и “своенравном” электронном ящике идут по созданному вами плану. Вы испытываете захватывающее чувство творца, доступное лишь художникам, композиторам, актерам - только Богом данного таланта не требуется, достаточно лишь немного логического мышления. Конечно, совсем без таланта не обойтись, и полный бездарь или лентяй ничего не добьется и в виртуальной реальности, но все-таки уже не нужно быть гением, чтобы творить. Причем, если вы подключены к сети, то весь мир сможет оценить ваше творчество. Например, этот опус едва ли бы опубликовали в научном журнале, а поместить его в сети и, тем самым, “виртуально” опубликовать, ничего не стоит.

Итак, реальность и необычайно расширенные возможности творить - вот, по-видимому, принципиальные привлекательные черты компьютерного дела сегодня. О виртуальной реальности уже можно говорить, как об особой субкультуре, со своими идеалами, принципами, жаргоном (до языка он пока не дотягивает) и стилем общения. Как соотносится творчество в виртуальном мире с миром реальным? Не следует думать, что плоды виртуальной деятельности имеют лишь виртуальную ценность. Не говоря уже о программистах-профессионалах, получающих за свои виртуальные творения вполне реальную зарплату, многое из созданного “на клавишах” эстетически ценно и шедевры компьютерных мастеров заставляют задуматься о возникновении нового вида искусства со своей эстетикой. Есть и своя компьютерная этика, возник уже и забавный термин для нее - английское слово “netiquette”, образованное слиянием слов “net” - сеть и “etiquette” - этикет.

Хотя, конечно, виртуальная реальность - неотъемлемая часть реального мира, все же многие адепты всемирной сети рассматривают ее именно как реальность альтернативную. Будучи делом рук увлеченных энтузиастов, сеть предоставляет зачастую примеры научного благородства и свободы, немыслимые в “заорганизованном” мире по эту сторону экрана. Яркий пример - многочисленные программные продукты и целые программные комплексы (такие как, например, операционная система Linux), созданные авторами в свободное от основной работы время и распространяемые совершенно бесплатно, исключительно из любви к братьям по компьютерному сообществу. Можно ли представить себе людей, производящих, скажем, телевизоры и раздающих их бесплатно? Доходит даже до экстремизма: некоторые сетевики воруют коммерческие программные продукты и начинают распространять их бесплатно, оставаясь, конечно, анонимными, т.к. такая деятельность противоречит законодательству (а называется она на слэнге сетевиков “Warez”).

Также сеть предлагает свою особую модель общения (для адептов “альтернативности” она - лучше и правильней, чем способ общения в реальном мире, для людей более умеренных - просто иная). Уже упоминавшаяся операционная система Linux интересна не только тем, что создали ее из некоммерческих интересов, но и тем, что многие создатели никогда не видели друг друга в лицо. Они живут в разных странах мира, разделены расстояниями, финансовым положением, возрастом, но это не мешает им работать (творить!) вместе, общаясь электронной почтой. Электронная почта - e-mail - удивительным образом сочетает в себе оперативность телефонного звонка с некоторой “обезличенностью” (и, добавим, существенно более низкой, по сравнению с телефоном, ценой) письма, создавая совсем особый, не существовавший ранее, вид корреспонденции. А ведь e-mail - это еще не все. Всемирная “доска объявлений” Usenet позволяет задать интересующий вас вопрос или предложить тему для дискуссии буквально всему (виртуальному) миру, а системы телеконференций типа Internet Relay Chat позволяют болтать в реальном масштабе времени (кстати, часто на совершенно незначительные темы) с коллегами из других стран, не отрываясь от монитора. Это приводит к интересному психологическому эффекту. Чувствуешь, что мир (уже не виртуальный, а настоящий!) стал теснее и ближе. Можно пообщаться с другом из, скажем, Австралии, совсем не ощущая расстояния, а какой-нибудь мэтр интересующей вас науки уже не абстрактная фигура - ему можно запросто послать письмо с вопросом.

Вместе с этой, безусловно положительной, функцией сближения и сплачивания можно усмотреть и некоторую опасность в стремительно развивающейся компьютерной сети. Увлекшись виртуальной реальностью, очень легко забыть о реальной. Подобно наркоману, погружающемуся в “виртуальный” мир своих видений, адепт телекоммуникаций ныряет в глубины сети, где интересно и приятно, а раз так - зачем из них выныривать? Не случайно увлеченного программиста так же трудно оторвать от монитора, как наркомана от его сигареты с “травкой”. Не грозит ли нам появление нового вида наркомании? Пока антисоциальные последствия “компьютеромании” невелики, но в самом ближайшем будущем взломы банковских, а то и военных компьютерных систем, совершенные забывшимися “хакерами” могут представлять серьезную опасность для всего человечества. Есть о чем подумать психологам и социологам. Да и правоохранительным органам…

Итак, виртуальная реальность, с ее свободным творчеством, непринужденным общением и опасностью превращения в наркотик - вот к чему привела компьютерная революция сегодня. Каковы перспективы этой революции? Станет ли сеть единым и единственным средством общения? Или (как пугают фантасты) зародившийся в сети вирус в один “прекрасный” день погубит цивилизацию? По-видимому ни то, ни другое не произойдет. Пафос любой революции мало-помалу сводится на нет рутиной эволюции. Уже сегодня промышленные гиганты находят в сети новый, небывалый по возможностям рынок. Дальнейшая коммерциализация компьютерных технологий, хотя и сулит стремительный технический прогресс, может оказаться гибельным для того “вольного духа” братьев-программистов, о котором мы говорили. Когда сеть окончательно превратится в электронный рынок “товаров народного потребления” и арену рекламной борьбы (а такая тенденция имеется; не у нас, конечно), места для бесплатных проектов может и не остаться. Да и “компьютеромания” будет взята под контроль. Рискну предположить, что аномальный интерес к компьютерам поутихнет, и сеть превратится в одну из привычных областей человеческой деятельности, каковой она, по большому счету, и является.

Изобретение компьютера и компьютерных сетей дало человеку в руки мощнейший инструмент для творчества. Пока человек еще не “наигрался” новым инструментом и не раскрыл всех его возможностей, революция продолжается. Когда же возможности эти будут хорошо изучены (и если хватит благоразумия не использовать мощь нового инструмента во вред), ЭВМ потеряет статус “любимой игрушки”, но не исчезнет, а займет свое достойное место в инструментарии цивилизации. Сетевые “заклинания” исчезнут с газетных полос. До следующей революции.