From Novosibirsk, Russia? Our tiny company is looking for current or future rock-star developers.

Showing posts with label usability. Show all posts
Showing posts with label usability. Show all posts

February 04, 2009

Совместимость

Название этой операционной системы, созданной маленькой компанией в конце 80-х и установленной сегодня на 8% компьютеров мира, программисты под Mac и iPhone регулярно вспоминают, набирая префикс NS у названий системных классов.

Nextstep 1.0 появилась в 1989 году после трех лет разработки, имела полностью объектно-ориентированное API с архитектурой model-view-controller, имела ядро Mach и была Unix’ом. Теперь она называется Mac OS X. За прошедшие 20 лет дизайн её API, теперь именующимся Cocoa, мало изменился: всё те же NSApplication, NSView, NSDocument успешно лежат в основе сегодняшних красивых анимированных Mac-приложений. Исходники GNUstep, реализующего Nextstep API 1993 года, можно в наши дни читать вместо (недоступных) исходников Cocoa.

Пользовательский интерфейс Nextstep включал богатый drag’n’drop между приложениями, Dock, инспекторы, общесистемные сервисы, позволяющие приложениям пользоваться услугами друг друга, и «бандлы» — директории, выглядящие как файлы для пользователя и содержащие приложение со всеми зависимостями, которое достаточно просто скопировать на жесткий диск для установки. Всё это знают и любят сегодняшие пользователи маков.

Как относятся в Apple к совместимости? Плохо. Первую революцию они сделали в 2001 году с выходом Mac OS X: старые приложения теперь могли запускаться только в приложенной виртуальной машине, эмулирующей Mac OS 9 (при этом, естественно, выглядели неприглядно и медленно работали). В 2005 году эмулятор почил с выходом OS X 10.4 (итого: 4 года на портирование старых приложений).

Для портирования людям был дан Carbon — C API, почти повторяющее API старой Mac OS 9. Carbon-приложения всегда оставались нежеланными гостями на компьютере: look’n’feel интерфейса OS X, как истинно объектно-ориентированной ОС, реализован в коде Cocoa (да, там можно изменить поведение стандартных элементов управления, просто унаследовавшись от них). Carbon представлял собой еще одну реализацию примерно того же самого интерфейса.

Вторую революцию Apple сделала в 2007 году: Carbon объявлен устаревшим и не будет поддерживать 64-битные приложения. Кадр года: Adobe переписывает Photoshop на Objective C. Называется, а вам слабо такое устроить?

Что приобретено взамен совместимости? Общий уровень приложений платформы: они все обновляются и соответствуют современным стандартам. Это работает по спирали: от более высокого качества приложений увеличиваются ожидания пользователей («никто не запустит программу без большой красивой иконки»), от высокого уровня ожиданий растет качество приложений. Apple создала платформу, в которой качество является более значимым (по сравнению с другими платформами) конкурентным преимуществом, и от этого создатели приложений больше инвестируют в качество.

Вернемся к Nextstep и заметим, что Cocoa является примером архитектуры, которая работает настолько хорошо, что её не нужно менять. Совместимость — не препятствие, так что эксперимент довольно чистый.

Зато NeXT/Apple серьезно относятся к преемственности навыков пользователя. Метафора пользовательского интерфейса Nextstep/OS X не меняется уже 20 лет. Внешний вид окон OS X не меняется 8 лет. Интерфейс приложений развивается эволюционно; Photoshop переписали, но выглядит и работает он так же; вышла новая версия iWork, но она только местами отличается от старой.

Что происходило всё это время в параллельном мире? 1989 год — релиз Nextstep 1.0 — вышла Windows 2.0 без перекрывающихся окон. 1995 год — вышла Windows 95, прощай, все старые навыки. 2001 год — вышла Window XP, теперь вы не узнаете свою панель управления. 2002 год — Microsoft выпускает .NET Framework 1.0, Desktop-приложения на котором до сих пор никто не пишет. Кстати, писать Desktop-приложения вообще не на чем: MFC — поганое уродство, всё остальное до жути низкоуровневое (Win32 API отличается от Cocoa как ассемблер от Питона).

2007 год — вышла Windows Vista, прощайте, привычки, теперь всё в новом месте. Зато спиздили еще чуть-чуть гуйни мака, сделали мигающий экраном костыль для безопасности приложений (на маке privilege elevation в приложениях к этому моменту уже много лет как нормально ненавязчиво работало). Вышел Office 2007, его нужно изучать заново. 2009 год — Microsoft в Windows 7 меняет Taskbar на Dock и хвалится этим достижением в блоге. Кстати, Office 2007 Ribbon Bar будет доступна всем приложениям, теперь вам придется заново изучать не только офис.

Зато вы всё еще можете запускать DOS-приложения на Windows Vista. Реймонд Чен в своём блоге высоко воспевает культуру совместимости в Microsoft. Но стоит ли она выпуска инвалидских продуктов? Всё дело в крупно-корпоративном рынке, которому его старые приложения ценнее качества ОС. Возможно, во времена Windows 95 совместимость была необходима и для пользователей: графические интерфейсы стали массовыми именно после Windows 95, и имей она проблемы, этого могло просто не произойти.

Мораль раз: знайте, когда устранять совместимость, иначе она помешает конечному пользователю.

Мораль два: нет так быстро всё меняется в ай-ти; команды под руководством великих людей создают технологии, живущие десятилетиями.

Мораль три: культура качества — ценнейшая штука для любой платформы; без неё корпорации не способны выпускать хорошие продукты, даже если на рынке есть образцы для подражания.

December 16, 2006

Notable events and December's blog of the month

За прошедшее время произошло несколько важных событий.

Мы стали или скоро станем авторами самых серьёзных средств разработки для Tcl (стали), Python (скоро) и Ruby (на горизонте). Открытый проект Dynamic Languages Toolkit нашей компании принят в состав eclipse.org. Сейчас ознакомиться с ним можно на www.eclipsedltk.org, но скоро мы переезжаем.

Вы можете добавить в DLTK свой любимый язык; мы окажем вам необходимую помощь и поддержку. Где любители Lisp и Haskel?

Доклад про Dynamic Languages Toolkit принят на EclipseCon 2007, а значит, нас (в том числе и меня как докладчика) ждут в марте 2007 года в Калифорнии. Надеюсь, мы там окажемся.

Есть вещи, на которые достаточно взглянуть, чтобы понять, что вы созданы друг для друга. Так было с Macintosh. Теперь я хочу Segway. Сейчас я не готов расстаться с (по непроверенной информации) $4000, так что — в планах на ближайшие годы.

Я нашел мечту графомана. Её зовут WriteRoom, приложение для написания текста. Отличия от текстовых редакторов: Во-первых, нет концепции файлов; все созданные заметки попадают в меню. Во-вторых, не нужно вручную сохранять текст. В-третьих, название заметки — её первая строка; переименование еще никогда не было таким простым. В-четвертых, редактор можно развернуть на полный экран, чтобы ничто не отвлекало от написания.

Ничего принципиально нового, но мои писательские привычки изменились напрочь. Все посты в блог сначала пишутся во WriteRoom. Интересные мысли накапливаются там же. Я в принципе стал больше писать.

Если вы сидите под Windows, на сайте дают ссылку на некий клон — Dark Room.

Наконец, воспользуюсь случаем, дабы выбрать блог этого месяца. Это совместный проект Kathy Sierra и Dan Russel под названием Creating Passionate Users. Обязательное чтение для всех, занимающихся разработкой программ и/или проектированием интерфейсов пользователя. Каждая из редко появляющихся статей — шедевр.

Недавно я узнал, что в создании известного стодолларового ноутбука принимал участие Alan Kay. Человек, работавший в Xerox PARC и Apple, один из создателей объектно-ориентированного программирования. Его видеолекцию по пользовательским интерфейсам (1987 года) я с большим удовольствием посмотрел и всем рекомендую (могу записать на CD).

October 04, 2006

О глубоком сне, изогнутых клавиатурах и leap'ах

От постоянного использования клавиатуры на работе в запястье левой руки стали возникать неприятные ощущения. Пересел на Microsoft Natural Keyboard, и ощущения сразу исчезли. Так что изогнутые клавиатуры действительно делают своё дело, что бы там ни говорили.

Заодно научился работать на клавиатуре с нетрадиционным блоком дополнительных клавиш (которые посередине между основной частью и цифровой клавиатурой). Достаточно приучиться использовать Ctrl-C, Ctrl-V и Ctrl-X вместо Ctrl-Insert, Shift-Insert и Shift-Delete (что я и так уже сделал, ибо на маке применяются Command-C, Command-V и Command-X).

Кстати о Mac. Самым загадочным в его поведении был мгновенный выход из состояния hibernate (или его еще называют «suspend to disk»). (Как я уже говорил, обычного sleep, то есть suspend to memory, у него нет, видимо потому, что hibernate работает быстро.) Честное слово, если я бы не прочел Джефа Раскина и его описание загрузки Canon Cat, я бы не догадался.

Canon Cat при завершении работы сохранял образ экрана на дискете (вместе со всеми остальными данными). При включении этот образ загружался первым делом и выводился на экран. Остальные данные читались еще около 7 секунд, но большинству пользователей казалось, что компьютер загружается мгновенно. (Строго говоря, речь идет даже не о загрузке, а о чтении дискеты с данными, но в Cat эти действия почти эквивалентны.)

Так вот, в MacOS применяется хак имени Раскина. После открытия крышки изображение появляется мгновенно, но курсор еще секунды 2 не двигается.

А пользовательский интерфейс Canon Cat ныне существует в виде проекта The Raskin Center for Humane Interfaces по имени Archy (см. также описание Archy на Wikipedia). Archy представляет все данные, с которыми работает компьютер, в виде большого текстового документа. Основным способом навигации (перемещения курсора по нему) предлагается поиск, именуемый Leap. Вместо использования стрелочек или мыши вы нажимаете на клавишу поиска (Leap Forward или Leap Backward) и набираете текст.

Мораль: когда-то я попробовал Archy и решил, что его Leap слишком непривычно использовать. Но недавно я стал пробовать использовать Incremental Search в Eclipse для перемещения по файлу, и это действительно очень удобно и быстро. Неприятно только нажимать Ctrl-J и Ctrl-Shift-J (Archy использует левый и правый Alt, и это на порядок удобнее).