Re[5]: True Unix GUI
От: McSeem2 США http://www.antigrain.com
Дата: 04.04.06 01:38
Оценка: 81 (14) +4 -1
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Проблема в том, что сегодняшний мейнстримовый гуй я оцениваю не очень хорошо. Более того, у меня есть впечатление, что "что-то где-то пошло не так" (об этом я писал в своей статье, ссылка на которую есть в первом сообщении этого топика). И то, что все делают практически одно и то же, не дает мне надежды на какое-то выправление ситуации


Я согласен насчет "что-то где-то пошло не так". Подтвержением этому является прежде всего тот факт, что объем работы по созданию GUI находится приблизительно в квадратической зависимости от некого условного объема функциональности. Скажем, если количество неких функций в GUI программе возрастает вдвое, то объем кодирования возрастает вчетверо (ну это несколько утрированно и усредненно). Причем, по сравнению с пресловутым unix-way, это не просто больший объем работы (остающийся все равно O(N)), это именно квадратическая зависимость, поскольку в более-менее реальном приложении с GUI число взаимосвязей между функциями является именно квадратичным (для справки — O(N*N/10) это то же, что O(N^2)). Что-то есть неправильное в самой изначальной идее. Что конкретно — не знаю, но возможно — стремление к профанации населения.

Взять хоть тот же clipboard. В реальности, кроме текста и картинок, даже в винде ничего толком не работает — попробуйте вставить колонку из Exel в существующую колонку таблицы в Word. Copy-Paste по умолчанию банально не работает даже в очень родственных программах, не говоря уже о таких далеких, как IE и Word. Механизмы согласования содержимого clipboard — это миф, не работают они толком. Почему? Потому что в идеале надо бы обеспечить именно квадратичное число взаимосвязей. MS Word должен знать, что существуют такие программы, как Excel, IE, Acrobat и 256K прочих, чтобы максимально корректно обрабатывать данные. При этом MS Word — очень продвинутый редактор. MS Outlook Web Access — находится вообще на уровне каменного века — чтобы вставить кусок текста туда, надо как правило это делать через notepad.
Как мне скопировать в clipboard список файлов из проекта Visual Studio (просто имена файлов)? Как мне найти нужный файл в том же проекте? Как мне скопировать текст из сообщения из MessageBox? Такие несуразности можно приводить до бесконечности. Это я не к тому, что MS делает плохие программы, а к тому, что сделать хорошие — невозможно в принципе, в силу ущербности самой идеи — количество возможных взаимосвязей становится таково, что их невозможно даже перечислить, не то, что реализовать.
А сколько усилий все это стоит! Наверное миллионы человеко-лет. Соотношение усилия/результат явно далек от адекватности, причем на 3-4 порядка. Получается какая-то совершенно дутая штука этот GUI.

В любой технической сфере деятельности невозможно обойтись без редукции сложности. Если я хочу спроектировать сложное электронное устройство, то я уже не работаю на уровне отдельных транзисторов — на этапе развитя микроэлектроники произошла (и происходит) редукция сложности — я уже работаю на уровне функциональных чипов.

В GUI — все на уровне каменного века (все эти бесконечные OnTextChanged — 10 контролов, у каждого по 10 обработчиков, получаем 100 функций). Мой любимый пример — диалоги versus конфиг-файлы. Усилия программиста с конфиг-файлами — это фактически тривиальный парсер, причем чаще всего некий готовый. При этом совершенно стандарным текстовым редактором и стандартными файловыми средствами обеспечивается функциональность, которая виндовым диалогам и не снилась — поиск, copy/paste, backup. Налицо очень значительная редукция сложности без ущерба функциональности. При программировании диалогов все это напрочь отсутствует (никакого механизма — все вручную). Когда отсутствует регулярная редукция сложности — это очень нехороший симптом. Это говорит о том, что данный путь скорее всего заведет в тупик по сценарию финансовых пирамид — рост в геометрической прогрессии и коллапс.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.