Статьи
Размышления об интерфейсе |
Вообще-то программист не должен заниматься интерфейсом. Это вне его профессиональной сферы. Как сказано в рассказе Вячеслава Рыбакова "Сказка об убежище": "Вне собственной профессиональной сферы человек имеет право лишь оценивать чужие планы, но не предлагать собственных, лишь оценивать чужие действия, но не действовать. Иначе мир превратится в хаос. Хаос безответственности."
Но так уж получается в России, что у нас много программистов-одиночек, и поэтому они должны быть мастерами на все руки, а ведь это почти невозможно. Умные люди, как например создатели ReGet нанимают дизайнеров для проектирования интерфейса. Для ReGet дизайн придумывала студия Артемия Лебедева. В результате пользоваться ReGet, в отличие от FlashGet очень удобно. Можете в этом сами убедиться.
Итак, интерфейс. Во-первых он должен быть удобным, во-вторых красивым. Может быть, следует поменять местами приоритеты, но тут уж мнения индивидуальны. Да, это третий пункт: люди разные, и интерфейс должен быть гибким и настраевымым, но желательно чтобы элементы управления были унифицированы, чтобы пользователю не приходилось привыкать к каждой новой программе, чтобы он как можно меньше думал. У людей и так полно своих проблем. Вообще, это американский подход - интуитивность интерфейса. Одна американских из книг по дизайну сайтов так и назвается: "Не заставляйте меня думать".
Так получается, что интерфейс - это отдельная программа, которую зачастую проектируют другие люди. Тут встаёт проблема: как отделить код интерфейса от функциональной логики? Интерфейсный код должен быть прозрачным, открытым, чтобы он мог настроить его для себя. Как ни крути, но всё в настройках предусмотреть не возможно. В идеале, интерфейсом должна управлять другая программа, так как он должен быть привязан к пользователю, а не к бизнес-процессам, как функциональная логика. Для обеспечения переносимости, программа для управления интерфейсом должна быть внешняя, специфичная для платформы. Так как элементы интерфейса унифицированы, то эта программа должна быть универсальная. В то же время, каждый дизайнер хочет, чтобы его детище выделялось стилем. Значит, программа для управления интерфейсом должна поддерживать стили для каждой программы в отдельности. Так как требуется независимость и универсальность, то есть три выхода: либо эта программа интерпретирует скрипт, либо это часть операционной системы, либо бинарный код подгружается динамически.
Операционные системы предоставляют стандартный набор элементов интерфейса. В X Windows существуют даже множество менеджеров окон, которые могут придавать элементам интерфейса произвольный стиль. Но есть у них и минусы - во-первых, сложная реализация, во-вторых, даны слишком базовые элементы интерфейса без возможности расширения, в-третьих, отсутствие многоплатформенности.
Индивидуальный динамически подгружаемый интерфейсный модуль - опять-таки потеря многоплатформенности и универсальности. Да и накладно это с точки зрения места на диске.
Третий выход - интерпретатор скрипта, такой подход используется в Java и Tcl. Лидер среди СУБД - Oracle использует Java для создания интерфейса к своим базам данных. Составная часть Tcl - Tk как раз и есть та самая программа, отвечающая за графический интерфейс Tcl скриптов. Так же предоставляет богатые возможности для расширения через подключение библиотек, при этом предоставляя свои средства для вывода графики и текста, это обеспечивает многоплатформенность. Интерфейс Tk по уровню намного выше, чем традиционные API Windows или X Window, поэтому намного меньше усилий затрачивается для создания интерфейса, однако, сохраняется гибкость, легко придать приложению стильный вид. В Tk уже давно созданы и отлажены различные сложные стандартные элементы управления. Заслуживает внимания модуль tktable, который намного гибче любого табличного элемента управления в Delphi, FoxPro или Excel.
Так как в Tcl есть хороший механизм управления событиями, то Tk очень удобно стыкуется с ним. При этом Tcl выполняет функцию как бы прослойки между функциональной логикой и интерфейсом. На Tcl с помощью Tk удобно создавать графическую оболочку для программ управляемых из командной строки.
Вобщем, Tk достоин того, чтобы попробовать писать на нём программы.
автор: Юрий "Yurez" Горбачев
Юрий "Yurez" Горбачев |