Журнал д-ра Добба, Январь-Февраль 1996, N 1(13)

Верной дорогой идем, товарищи?

"Эффективность программного продукта обратно
пропорциональна красоте пользовательского интерфейса".

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

Лет эдак десять назад компьютеры были покрупнее, но послабее. Сейчас практически у каждого на столе стоит компьютер, о котором тогда и мечтать-то не могли. Жесткий диск в 40 Мбайтов тогда был вершиной технического прогресса (а винчестер - тем более). Оперативная память в 1 Мбайт на СМ-1420 была предметом зависти коллег, которые работали на СМ-4 с 256 Кбайтами. Но, тем не менее, все это работало и достаточно прилично. СМ-1420 вполне сносно "тянула" UNIX на 8-10 терминалах. И графика была при необходимости, и даже векторная. Куда же уходит вся эта мощь, которую мы приобрели за последние годы? Правильно, на обеспечение GUI – Графического Интерфейса Пользователя, idea fix последних лет. Это он, "жрет" почти все ресурсы наших компьютеров, это он заставляет пользователя с 8 Мбайтовой RAM чертыхаться перед экраном, когда программа еле шевелится. Причем пользователь сидит за компьютером один, в гордом одиночестве. Если бы их было двое или трое, они бы давно подрались. А стоит ли овчинка выделки?

Основные идеи при разработке GUI – ориентация на неподготовленного пользователя, унификация интерфейса, WYSIWYG. Неподготовленные пользователи и 10 лет назад нормально работали, если им писали нормальные программы. Хорошо, если один из десяти знал, что он работает в UNIX или RSX-11. Остальные об этом даже не подозревали. Однако работали и были вполне довольны. Сейчас каждый пользователь знает, что он работает в Windows или OS/2, однако, вряд ли эффективность его работы сильно выросла.

Теперь хорошо, если хотя бы один из 10 знает все кнопки, которые "вылупились" у него на экране. Унификации интерфейса как не было, так и нет. Посмотрите хотя бы на keyboard shortcuts для распространенных команд - они во всех программах разные, а елозить мышью по коврику, чтобы сделать Cut&Paste - не очень эффективно. А нужен ли для всех программ WYSIWYG? Сомневаюсь. Итак, что же нам дает GUI по большому счету?

Знаете, в последнее время я заметил, что все больше и больше профессионалов вообще отказывается от графического интерфейса и работает в текстовом режиме. Один из моих знакомых поведал мне, что пользуется Windows 95 для того, чтобы распознавалась и подключалась вся его аппаратура (вот он, долгожданный Plug-and-Play), а потом выходит в Norton Commander в текстовый режим и работает дальше, как нормальный человек. Многие могут возразить: профессионал - это профессионал, а пользователь - это совсем другое дело. Мне кажется, что это большая ошибка. Если умный человек хочет сам чинить свой автомобиль, он купит себе инструмент, которым пользуется автомеханик. Не очень умный же пойдет в магазин и купит самый красивый набор с надписью типа "Professional Tool Set - Everything You'll Ever Need to Repair Your Damn Саг - No Kidding", а потом будет долго думать, почему у него ничего не получается. Так и с пользователями. Они покупают красивую игрушку и долго думают, почему она, такая симпатичная, так странно работает. А потому! Все хотят сделать компьютер с программным обеспечением, чтобы уж совсем неподготовленный пользователь его не боялся. Так сделайте его мягким, плюшевым и круглым. И чтобы программы были, как комиксы. И вместо клавиатуры - джойстик. Узнаете - Sega Mega Drive. Мечта пользователя. Только что он на нем делать будет?

Большинство фирм по производству программного обеспечения занято большую часть времени пользовательским интерфейсом. То, что лежит под ним, их волнует гораздо меньше. Все соревнуются: у кого лучше помойка (Trash Can) получится. Помойки получаются изумительные: положил - достал, опять положил. Прогресс! Вот и получается, что наконец-то в 1995 году фирма Microsoft "изобрела" вытесняющую многозадачность (как будто ее до этого не было).

А что такое виртуальная память в Windows или OS/2? Первая просто говорит: Out of memory, во второй начинаются чудеса, понять которые практически невозможно "неподготовленному пользователю". А ведь виртуальная память или есть, или ее нет, как "свежесть" у осетрины. Если она есть, и есть место на диске, тогда вы никогда не должны видеть, что у вас не хватает памяти. А все остальное к виртуальной памяти никакого отношения не имеет.

А все эти новомодные средства визуального объектного программирования. Удивительная вещь. Обязательно попробуйте. Все просто, как три рубля. "Оттяни-урони", "оттяни-урони" и программа готова! Точнее не программа, а ее интерфейс. Любимая демонстрация - построение текстового редактора. Раз, два, три, четыре, пять, ничего не надо знать! Можно еще в редактор CD-Player включить. Только зачем все это нужно? Текстовых редакторов не хватает? Или CD-Рlауеr'ов? А попробуйте-ка написать нормальную программу, которая еще что-нибудь делает. Ага, вот вы и попались! Нормальный программист, конечно, напишет, но ему обьектное визуальное программирование не очень-то и нужно. А молодое поколение, "клоны Билла Гейтса"? Они будут ждать, пока им сделают соответствующие ОСХ и MFC. Тогда они их "оттянут и уронят" куда надо. Вот и все! Microsoft Windows и Visual Basic! Что еще нужно современному программисту?

Современное программное обеспечение напоминает BMW с двухцилиндровым мотоциклетным двигателем. Внутри - лепота: кнопочки, лампочки, дисплейчики. Только ездить нельзя. Если бы автомобилестроители делали так свои машины, они давно бы разорились. А поставщики программного обеспечения живут и процветают. Хотя есть нормальные движки - Unix, например. Дорого? Возьмите Linux. Тот же Unix, только бесплатно. Куда уж дешевле! Хотите кнопочек - их у нас есть. Запустите X-Window. Большинство возразит: "Это же сложно". Да, посложнее Windows будет. Но зато нормально "ездит". И вообще, почему для того, чтобы сесть за руль, надо учиться, а для того, чтобы сесть за компьютер - нет. А не начать ли делать автомобили для неподготовленного пользователя? Или книги для не умеющих читать? А чего им учиться. Для того чтобы сесть за компьютер, сейчас почти никто не учится. Прочитал книжку "Word за 5 минут" - и вперед. Надо и для водителей такие книжки писать: "BMW за 6 минут", "КАМАЗ за 10 минут". Прочитал, сел, поехал. Почему никто не додумался? А если читать не умеет, комиксы нарисовать. Ну, чем не пиктограммы?

Производители программного обеспечения стараются всех убедить, что пользователю все равно в чем работать, лишь бы он делал то, что ему нужно. Поэтому и получается, что когда он покупает автомобиль, все разузнает о его внутренностях. А когда речь идет о программном обеспечении, то внутренности никого не интересуют. А зря! Двигатель тоже не последняя вещь. А размеры программ! Это что-то страшное. Вроде бы весь пользовательский интерфейс берет на себя операционная система. И это хорошо. Парочка вызовов API- и готово. Так отчего же программа, которая выводит: "Привет, ребята!", тянет килобайтов на 50-60. Странно что-то. Скоро компакт-диска мало будет, чтобы программу записать. Если сейчас текстовый редактор дискет на 10-15 потянет в сжатом виде, то скоро и десяти компакт-дисков не хватит. Жутко становится. И это при наличии динамических библиотек!

А проблемы с локализацией? Лет эдак 8-10 назад казалось, что эта проблема будет вот-вот решена. Вроде бы, чего проще: сделал несколько файлов сообщений на разных языках, и в зависимости от потребностей пользователя подключай один из них. Это ведь уже было! Установил в UNIX переменную окружения language - и все. Даже сама операционная система начинала говорить на нужном языке (в том числе, на русском). Для большинства языков (8 бит на символ, написание слева направо) этого было достаточно. Куда все это делось и почему? Проблема как была, так и осталась.

Общеизвестно, что производительность системы определяется ее самым узким местом. Так вот, производительность современных компьютерных систем сдерживается не пропускной способностью дисковых интерфейсов, не тактовой частотой шины или временем доступа к памяти, а системным программным обеспечением. Большинство операционных систем не использует всех возможностей аппаратуры и при при этом тратит большую часть времени на реализацию GUI. Это все равно, что возить троих детей в школу на "Феррари" - по одному и со скоростью 30-40 км/ч. Хотя с виду очень красиво. Не пора ли об этом серьезно задуматься.

И вообще, оглядываешься назад и становится грустно, вперед мы шли или куда-то в сторону? Хотелось бы узнать мнение читателей.

Эдуард Тулупников

Главный редактор

Meetings/ModernOsFeatures/DrDobbs (последним исправлял пользователь eSyr 2009-11-28 17:10:32)