Свежий номер №49 (426) / Похвала глупости
 
Дата публикации: 28.12.2001

Юрий Ревич, revich@computerra.ru

Понятия-оппозиции, присутствующие в нашем мышлении, часто не вполне равнозначны с точностью «до наоборот»: например, если зло абсолютно, то добро всегда относительно. Это проявление второго закона термодинамики: известно, что чтобы что-то построить, надо приложить немало усилий, в то время, как разрушаться это «что-то» будет без всякого вмешательства, само. То же относится и к понятиям «ума» и «глупости» - например, если построение «искусственного интеллекта» есть задача пока еще даже не поставленная как следует (а все попытки ее сформулировать приводят лишь к редукции самого понятия «интеллект»), то задача построения «искусственной глупости» вполне решаемая, причем чаще всего решается она сама по себе, как побочный продукт ваших усилий создать что-то «умное». И в большинстве случаев попытки придать вашей программе элементы «ума» порождают как минимум не меньше проблем, чем преодолевают.

Так, введение с приходом Виндов в повседневную практику так называемых «длинных имен» файлов, есть, конечно, большой шаг вперед. Но если разобрать этот вопрос с точки зрения программы, которой приходится анализировать строку пути доступа к вашему файлу, начиная с корневого каталога, то возникает множество вопросов. Например, Word (и Wordpad, и многие другие программы) с настойчивостью, достойной лучшего применения, в режиме «Сохранить как...» Рис. 1будет прибавлять расширение, ассоциирующееся с известным им типом файлов, к изначальному имени. Попробуйте сохранить, к примеру, файл «program.asm», который представляет собой, разумеется, чистый текст, под другим именем в любой из этих программ, и вы получите монструозное образование типа «program.asm.txt», или, в лучшем случае, «program.txt» - в обоих случаях придется допереименовывать потом вручную. Что же касается вышеупомянутого анализа строки path, то вот результат взаимодействия программы «Диско Коммандер» с WordPad (рис.1) - причем подобное запинание на первом имеющемся пробеле в названии папки возникает только в случае попытки вызова WordPad, и никакой другой программы! Из-за этого мне пришлось даже провести масштабную акцию по переименованию папки «Program files» в просто «Program» - не отказываться же, в самом деле, от использования привычных и удобных во всех отношениях софтинок только из-за этой дурацкой феньки.

Другим типичным образцом «интеллектуальной глупости» могут служить поисковые системы. Каждый пользователь Интернета, без сомнения, может вспомнить множество примеров этому, но есть случаи и из ряда вон выходящие. На рис.2 приведен результат поиска изображений через Goodle по запросу «Владимир Каталов», который у самого Каталова вызвал нервный смех. А, между прочим, формально поисковик выполнил задачу абсолютно верно: на фото изображен темнокожий адвокат Дм. Склярова, а само это фото на «Компьюленте» размещено в контексте, где фамилия Каталова упоминается не раз.

Рис. 2

Еще замечательней случай, который прислал в редакцию сайта «Компьютерра-он-лайн» Марк Адаменко (рис.3). Я не поленился проверить - излишне говорить, что по адресу http://www.microsoft.com/ms.htm, на который попадаешь, кликнув по ссылке, среди англоязычного текста никакого «геморроя» не наблюдается. Так что это либо остроумная шутка программистов «Яндекса» (не исключено), либо весьма многозначительный глюк известного поисковика.

Рис. 3

И наконец, мой старый знакомый и сотрудник 1 по разработке приборов Петя Сторожев прислал мне замечательный пример весьма портящей ему жизнь фичи в Visual Basic’е. Дабы избавиться от него, он пошел даже на то, чтобы уговорить начальство на покупку последней лицензионной версии VB, но это не помогло. Дело в том, что одной из важных задач, которые приходится решать в процессе конструирования научных приборов, является анализ байтовых последовательностей - например, тех, что посылает в компьютер, скажем, устройство GPS. Соответствующий фрагмент текста контрольной программы приведен ниже:

Option Explicit

'-----------------------------------------------------------

Private Const HexValue1 As Long = &HFF
Private Const HexValue2 As Long = &HFF00
Private Const HexValue3 As Long = &HFF0000
Private Const HexValue4 As Long = &HFF000000

'-----------------------------------------------------------

Private Sub StartCmd_Click()

'-----------------------------------------------------------

Text1.Text = CStr(HexValue1)
Text2.Text = CStr(HexValue2)
Text3.Text = CStr(HexValue3)
Text4.Text = CStr(HexValue4)

'-----------------------------------------------------------

End Sub

//Результаты, которые появляются в текстовых окнах

Text1.Text=”255 ” //правильно
Text2.Text= ” -256 ” //!!!!!!! ???????
Text3.Text= ”16711680 ” //правильно
Text4.Text=”-16777216” //правильно

Налицо элементарная вещь: объявив когда-то при переходе от 16-битных систем к 32-битным тип Long, как знаковое четырехбайтное число взамен двухбайтного, программисты Микрософта забыли исправить интерпретацию шестнадцатого бита, как знака, а всего числа - как двоичного дополнения. В результате получается собачья чушь: число, скажем, 7FFFh будет интерпретировано, как положительное, а число на единицу большее - как отрицательное, и так вплоть до 010000h, когда вновь пойдут положительные числа. Слово «забыли» я употребляю предположительно: возможно, ими руководила некая неведомая нормальным людям логика. В любом случае все приведенные примеры доказывают, что процесс создания систем «интеллектуальной глупости» весьма прост - в отличие от систем «искусственного интеллекта».


1 (обратно к тексту) - Слов «сотрудник» стало в русском языке использоваться не совсем по назначению: часто его употребляют, как синоним слова «подчиненный», что, конечно же, неправильно.


Юрий Ревич (фотография) Юрий Ревич
revich@computerra.ru
 
Занимался проектированием измерительных приборов для научных исследований. Много раз бывал в научных морских экспедициях. Увлечения: политика, история, англо-американский детектив.


<< Yes, sir!
Все материалы номера
Юмор без границ >>