Я хотел бы знать о том, что делает Morphic особенным.
В чем разница между Morph в Morphic и NSView в Cocoa?
Ответы (3)
Morphic — это гораздо больше, чем NSView или любой другой графический класс, который просто позволяет повторно реализовать ограниченный набор функций. Morphic — чрезвычайно гибкий конструктор пользовательского интерфейса. Некоторые дизайнерские идеи, лежащие в основе Morphic, ясно показывают это намерение:
- Включена всеобъемлющая иерархия 2D систем координат. Они не ограничиваются декартовыми или линейными. Полезные нелинейные системы координат включают полярную, логарифмическую, гиперболическую и географическую (подобную карте) проекции.
- Отделение обработки систем координат от самих морфов. Преобразованию нужно только выбрать предпочтительную систему координат, вместо того, чтобы самостоятельно преобразовывать каждую точку, которую он рисует, в мировые координаты. Его метод
#drawOn:и расположение его подморфов выражаются в его собственной системе координат. - Полная независимость от свойств дисплея, таких как размер или разрешение. Понятия пикселя нет. Графический интерфейс мыслится на более высоком уровне. Весь графический интерфейс не зависит от разрешения в пикселях. Весь рендеринг сглажен.
- Разделение системы координат упрощает перемещение, масштабирование и вращение морфов.
- Все координаты являются числами с плавающей запятой. Это хорошо для разрешения абсолютно произвольных масштабов без существенных ошибок округления.
- Иерархия Morph не является иерархией форм. У морфов нет понятия границы или цвета. Не существует общей концепции выравнивания подморфов. Конкретный морф может реализовать их любым удобным для себя способом.
- Обработка морфических событий является гибкой и позволяет отправлять события произвольным объектам. Этот объект не должен быть подклассом Morph.
Предупреждение. Живая динамическая среда Smalltalk — это красная таблетка. Статические, замороженные языки никогда не будут для вас прежними ;-)
В двух словах: Morphic — это виртуальный мир, в котором вы можете непосредственно исследовать живые объекты (прямо как в реальном мире). Вы когда-нибудь смотрели на пользовательский интерфейс и...
- задаться вопросом: «Вау, это действительно круто! Как они это сделали?»
- kvetch "Лучше бы они сделали X вместо этого!"
В то время как эти мысли привели бы к боли и разочарованию в любой другой среде, не в Morphic.
Если вы хотите взорвать свой мозг, станьте богом в морфическом мире:
Запустите изображение Pharo и нажмите на фон (который на самом деле является «Миром»), чтобы вызвать меню мира:

Поднимите «ореолы» в одном из пунктов меню (Shift-Alt-щелчок на моем Mac):

Перетащите ореол «Взять» (вверху посередине) и бросьте его куда-нибудь в мире:

Наслаждайтесь своим пунктом меню, который теперь доступен везде, где вы этого хотите:

Серьезно, нажмите на нее и посмотрите, как откроется браузер!
У вас когда-нибудь была опция, которую вы всегда используете, которую поставщик похоронил на три уровня меню? Может ли это быть полезным?! Это проблеск силы живой среды с прямым графическим интерфейсом, такой как Morphic.
Если вам интересно, прочтите статью Джона Мэлони и Рэндалла Смита
Заголовок не соответствует вашему вопросу, поэтому я отвечаю на ваш вопрос, а не на заголовок.
Я читал о Morphic за последние два дня и пришел к выводу, что, по моему мнению, делает morphic особенным.
Morphic идеально подходит для живого кодирования. Это прямое сопоставление, при котором при изменении кода меняется вывод на экран. И/или если морфы на экране меняются (перетаскиваются), значения в коде меняются. Это круто в художественном исполнении!
Но Morphic стремится к более высоким абстракциям. Свойства морфов абстрагируются от кода. Примените SoC к файлу или выбрать серверную базу данных.
Я полагаю, что WebStorage и файл JavaScript - хороший вариант для хранения состояния живости свойств Morph, измененных в интерактивном режиме. Видите ли - программирование осуществляется через каждый Morph. Тогда коду нужно только обрабатывать события от щелчка и перетаскивания.
Цель исследования даже абстрагировала код. . Кодирование можно выполнить с помощью Morph, чтобы определить, что происходит при щелчке или перетаскивании. Морфы могут быть кусочками головоломки, как в Scratch.
Программа должна быть где-то скопирована в файл. Я не считаю кодирование в облаке безопасным. Таким образом, JS-файл является единственной альтернативой (если нет возможности настроить сервер), потому что файлы данных не разрешены локально, даже в той же папке, что и веб-приложение. Политика того же источника означает тот же сервер, а не ту же папку.
Когда приложение запускает файл Javascript (или веб-хранилище в первое место) настроит мир морфов. Пользователь взаимодействует с этим миром. Новое состояние можно сохранить в WebStorage и создать резервную копию путем загрузки.
Вы можете использовать Lively Kernel в качестве языка в файле или сохранить преобразовать данные в объект или что-то еще, что вам проще всего сгенерировать в виде файла для загрузки.
Так что же в этом особенного? Я не повторяю принятый ответ, но это мой вывод:
- Все, что вы видите на экране Morphic, является морфом.
- Дерево морфов называется миром.
- Координата, размерность и свойства каждого преобразования абстрагируются от кода в дерево.
- Исследование также направлено на абстрагирование кода.