ailev.ru

Обсуждение

В архиве: 10 комментариев.

Читать и комментировать в ЖЖ ↗

Имя не сохранено · 17 марта 2010

Комментарий

У меня возникла мысль, что для универсального моделера нужен перьевой ввод. Типа это критичный момент для интерфейса. Вообще я моделерами лет 15 назад заинтересовался, но с тех пор не встретил ни одного, который мог бы использовать. А сейчас мне пришло в голову почему - потому что они основаны на мышке. Я работаю рукой. А мышка - это типа как ручка длинной в метр, изготовленная из гибкого пластика. Такой ручкой неудобно писать. И совершенно неудобно моделировать. Поэтому я рисую картинки на бумажке, а потом пишу код в текстовом редакторе. Это не очень удобно по ряду причин. Хотелось бы больше работать в моделере. Соответственно, задумался о интерфейсе моделера - я имею в виду не сам ГУЙ, а комплексный подход к интерфейсу человек - моделер. Пока осознал два пункта: 1. Агентский интерфейс - чтобы можно было гибко программировать под свои нужды (что-то типа mood-oriented interface :)) 2. перьевой ввод - это персонально для меня, кому-то может и мультитач сойдет. Мне важно чтобы была очень координация между тем что я вижу, тем что рисуется и движениями кисти/пальцев. Т.е. тут лучше всего планшет совмещенный с дисплеем, хотя теоретически может сойти и отдельный графический планшет. А дальше можно уже сочетать сие с, к примеру, code-buble парадигмой, которая мне видится удобной для управления ассоциациями между элементами моделей. Собственно мне кажется критическим фактором является управление ассоциациями между элементами моделей - типа убрать/добавить и т.д. Мышкой это делать неудобно. Я тут могу провести аналогию между обычным принцелом (мышка), оптическим прицелом (планшет) и лазерным целеуказателем (дисплей с перьевым вводом/планшетом). ЗЫ Подумалось, что требования такие же как у художников :). Т.е. моделирование == искусство :).

Анатолий Левенчук · 17 марта 2010

Комментарий

Я вот буквально вчера тоже думал на эту тему: квадратики и стрелочки удобней рисовать пером, а не протыкивать вытаскиванием стенсилов или промышкивать а ля ручкой. Мышка также -- это последовательный ввод, как одним пальцем лупить по клавиатуре. Даже пальцами над экраном получается много выше скорость за счет десятипальцевости. Одним пальцем нажать, чтобы получить гало, а другим выбрать в этом гало нужный пункт -- вот какой должен быть интерфейс. Ну, или нажать пером, а пальцем выбрать, тут все равно. Про агентский интерфейс мне непонятно, обычно так не говорят про mood-oriented...

Ответ на комментарий

Имя не сохранено · 17 марта 2010

Комментарий

Под агентским интерфейсом имеется в виду следующее. Обычно программы экспортирую АПИ для их расширения: плагины либо скрипты. Но они не всегда удобны для написания программ. Удобнее агентский подход: т.е. я пишу программу агент, которую внедряю внутрь моделера, и она там координирует работу компонентов. В принципе, это тоже самое, что и просто плагины, только АПИ структурирован для агентского программирования, т.е. как набор взаимодействующих агентов. Пример. Допустим есть два параметра которые можно варьировать. Но в каком-то случае, эти параметры могут быть связаны фиксированным соотношением. Таким образом, мне приходится двигать два движка вместо одного, и еще заботится о том, чтобы выдержать это соотношение (что может быть непросто). Хочется переложить это на компьютер. Однако ждать очередной версии софта, или программировать самому слишком геморно. Хочется иметь удобный АПИ, чтобы быстро набросать код, который установит связь (ограничение т.е.) между двумя параметрами. А это уже и есть муд-ориентед. Т.е. к примеру сначала я установил связь между двумя парметрами, а через полчаса - между тремя другими, ну и т.д. Через некоторое время у меня образовалась библиотека таких скриптиков. Но тут важно, чтобы не тратить много времени на билды, запуски отладчиков и т.д. Чтобы все это можно было сделать, пока не прошло настроение :). А для этого мне кажется должен быть агентский АПИ.

Ответ на комментарий

Имя не сохранено · 17 марта 2010

Комментарий

Можно даже так описать. Есть два параметра A и B. Я добавляю строчку: A == B. Вот и все программирование :). Через некоторое время, например добавляю А+С <= 2. Ну или A == sin(B). Или F(A,B)==0. И т.д.

Ответ на комментарий

Имя не сохранено · 17 марта 2010

Комментарий

Еще пример, почему хочется агентский подход. Допустим есть фотошоп. Допустим я хочу работать в хитром цветовом пространстве. Т.е. нужно для каждой точки изображения перевести ее в это пространство, применить какой-то фильтр или операцию и вернуть обратно в фотошоповское пространство. Если я это сделаю в виде скрипта то он будет работать очень-очень медленно. Если в виде плагина - то долго разрабатывать. Но можно сделать такой плагин, который будет для таких операций на лету генерить эффективный машинный код, и выполнять его, не прерывая исполнения самой программы (фотошопа т.е.). А это уже агентский подход - т.е. мы запускаем агентов внутрь хост-программы и они там работают непосредственно с внутренностями. Т.е. расширяем функциональность изнутри.

Ответ на комментарий

Анатолий Левенчук · 17 марта 2010

Комментарий

Как я понимаю, Alan Kay ровно про это и говорит, как про "верстку" и отказ от "приложений". Интерфейс и программа сливаются в одно целое (как в Smalltalk сливаются язык и IDE: в спецификацию языка входит IDE).

Ответ на комментарий

Анатолий Левенчук · 17 марта 2010

Комментарий

Ну да, именно так это и подразумевается в системах, где вместо "оконных интерфейсов" рабочая поверхность и верстка элементов интерфейса на ней. Это не агентский подход, это отказ от приложений и верстка интерфейса (в терминологии Алан Кея).

Ответ на комментарий

Анатолий Левенчук · 17 марта 2010

Комментарий

Не агентский подход. Алан Кей говорит, что пользователю должна быть прямо с уровня интерфейса доступна вся программа. Он просто перекомпоновывает эту программу (вместе с другими) под свои нужды, выводя на рабочий стол то, что ему нужно -- хоть кусками кода, хоть кнопками и формами, хоть графическими языками. А поскольку программа рефлексивна, то все компилирование интерфейсных решений идет на лету и не выключая выполнения программы.

Ответ на комментарий

Имя не сохранено · 17 марта 2010

Комментарий

Да это все близко к смолтоковским идеям, сверх-позднему связыванию, рефлексивности и проч. Но я бы сказал, что агентский подход - менее радикальный и по другому структурирован: там есть защита от чужого кода (потенциально бажного или даже вредоносного). А меньшая радикальность проявляется в том, что "чужой" код допускается, но в ограниченном кол-ве мест. Но это уже детали реализации. В общем и целом, это безусловно тоже, про что и Алан Кей говорит, но детали другие в силу того, что я привык иметь дело с другими языками, со смолтоком я плохо знаком.

Ответ на комментарий

Анатолий Левенчук · 17 марта 2010

Комментарий

Идеи Алана Кея не привязаны к Смоллтоку, у него в FONC ровно те же идеи, а язык совсем другой (и даже не язык, а мультиязыковая среда).

Ответ на комментарий