Apr. 9th, 2014

akuklev: (ДР Цертуса 2011)
Благодаря CSS3 в вебе стало возможно рисовать адекватные элементы управления:
- во-первых есть flexbox-model как в XULе, Swing'е и т.д., т.е. можно рисовать скейлящиеся диалоговые окошки;
- во-вторых благодаря border-image-style и поддержке векторной графики в форме SVG есть возможность делать кнопкам и прочим квадратным элементам масштабонезависимый фон. Благодаря поддержке шейдеров можно делать элементам идеальные тени и блики.
- наконец-то CSS3 хотя бы в теории поддерживает использование переносов по умному алгоритму (как в ТеХе и Кварк-Экспрессе),
- кроме того, силами одного только CSS3 и современных шрифтов можно рендерить MathML и прочую нетривиальную статическую типографику так, чтоб смотрелось не хуже ТеХа (ессно, если ручками указаны все типографские параметры формулы, в то время как ТеХ их в основном вычисляет сам).

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

Благодаря свежепоявившемуся React.js стало наконец возможно делать в вебе нормальные FRP-интерфейсы, свинг и прочая нервно курят в сторонке, XULовский XBL уходит в далекое каменновековое прошлое. В купе с первым пунктом можно нафигачить клёвых библиотек интерактивных компонентов типа таблиц, деревьев, пуллдаунов всяких клёвых. Нехватает только возможности заменить ими стандартные без хаков.

Ну и остается важнейшая проблема: для программирования пользовательского интерфейса (который stateful по природе своей) требуется язык программирования, удобный для модуляризации и инкапсуляции сложного состояния*, обладающий элегантной поддержкой транзакционной памяти, actor model и dataflow-программирования и т.д., благодаря scala.js такой язык уже почти появился. Работать можно, хотя синтаксис Scala.Rx оставляет желать лучшего и интероперабельность с React.js пока тоже в зачаточном состоянии.

Чего ещё осталось желать UI-программисту?** Ура, ура, ещё капельку и можно будет чистенько-элегантненько писать охрененные UI!

______
* Ещё для качественных UI надо уметь энфорсить инварианты изменяемого состояния, а на эту тему бывает на данный момент только Idris, конфлуэнция которого со Скалой предвидится лишь в очень далёком будущем.
** В общем, желать, конечно, ещё есть чего. Например того, чтобы рендеринг самодельных и встроенных компонентов был унифицирован. Для этого надо выделить core presentational language (XSL:FO, проапдейченный до CSS3) и редуцировать до него все встречающиеся комплексные и семантические компоненты на уровне React.js. С другой стороны, динамический React изрядно забивает на semantic web и доступность контента для незрячих, в то время как state of the art на эту тему отличен: всё что нужно для semantic web реализуется через microdata, всё что можно на данном этапе сделать для доступности материала для людей с ограниченными возможностями реализуется через семантические элементы HTML5 + стандарт ARIA. Необходимо внедрить в подход React совместимость с Aria и доработать HTML5-стандарт так, чтобы как можно больше расхожих семантических библиотечных компонентов пользовательского интерфейса были стандартизированы. Ну и напоследок, уродливый и совершенно непригодный для описания реактивной динамики векторный формат SVG должен быть заменён на превосходные Reactive Metapost + TikZ extensions. В таком комплекте это будет похоже на окончательное решение интерфейсного вопроса.
akuklev: (ДР Цертуса 2011)
В детстве я читал жесточайше отцензуренную версию «Кондуита и Швамбрании». Узнало об этом только вчера случайно от [livejournal.com profile] zabolekar. Пока сегодня страдал в обед от болящей головы (не выспался + погода меняется), вчитался в различия. Ох мне. Надо целиком перечитывать. К тому же, моё восприятие за 15 лет, прошедших с первого прочтения, изрядно изменилось.

December 2016

S M T W T F S
    123
456789 10
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 18th, 2025 07:50 pm
Powered by Dreamwidth Studios