
— 千里之行,始于足下 (Древняя китайская поговорка, иногда приписываемая Лао-цзы)
Моя первичная задача - научится делать веб-приложения (см. чего я хочу), но те кто думал, что я начну со всяких html-хуемель и тем более javascript-хуескрипт - глубоко ошибается. И первое и второе - хуйня. Html - просто хуйня, там нечем заниматься, javascript - хуйня, которая просто не влезает мне в мозг.
Веб приложения, как и не веб приложения - это в первую очередь GUI, а веб приложения - UI в большей степени, потому что больше там ничего и нет (действительно, убери из веб-приложения UI, и останется ровно нихуя, а это уже сервер-сайд). Но я никогда не делил программистов на классы, для меня есть только хорошие программисты и вся хуйня типа фрондендщиков, iOS и прочий сервер-сайд.
Соответственно, мне нужна технология создания UI. И из прошлой жизни у меня есть некоторый опыт в UI. Самое достойное (а по моему мнению революционное, что я видел в этой области) был проект F3 (Form Follows Function). Проект F3 сделал чувак по имени Christian Oliver, и вы про этот проект скорее всего нихуя не знаете. Но вещь получилась довольно крутая не только по мнению вашего покорного слуги но и чуваков из Sun, которые поддержали проект и обозвали его JavaFX. После этих слов вы, возможно подумали что знаете о чем я, но опять вряд ли.
F3 изначально был довольно интересный язык, с декларативными биндингами в том числе и к вычисляемым данным, и он просуществовал недолго. Язык переименовали в JavaFX Script (и к Java этот язык имеет еще меньше отношения чем JavaScript). Потом язык успешно похерили по каким-то своим стратегическим убеждениям, которые редко приводят к сохранению или появлению хороших вещей. Кстати говоря JavaScript появился в том уебищном виде в котором вы его знаете, тоже бладгодая исключительно “стратегическим” (маректинговым) решениям, а не потому что кто-то хотел сделать хороший язык, те кто не в курсе - могут почитать краткую историю создания.
Как бы там ни было - основная проблема в UI - это отбражать состояние приложения (естественно предполагается что это состояние меняется во времени), и модифицировать это состояние, реагируя на действия пользователя. Звучит все довольно просто, да и на самом деле все просто, что подтверждается большим количеством долбоебов, способных делать UI любого прилождения на любом языке программирования. Вообще в мире программистов обывателей считается что UI - это самое простое. Это же там не “алгоритмы”, где наниматель требует каких-то типа знаний, и не многпоточное программирование, где расплата за долбоебизм наступит гораздо быстрее чем при программировании UI. Проще, наверное, только программировать базы данных (потому что долбоеб программирующий БД редко доходит до момента, когда его приложение становится востребовано и наполняется реальными данными в количестве достаточном для того чтобы его долбоебизм вышел на поверхность и утопил проект).
Эту проблему и пытаюстся решить современные веб-фреймворки, типа Redux, Cycle.js и прочих. Мне же они не подходят, поскольку я стар и количество пиздеца которое у меня не работает и количество обращений к гуглу бъет по моим нервам так что я так и не смог сделать простейшего приложения с помощью любого из них. И если некоторые выглядят концептуально достойно (Cycle.js мне нравится на уровне архитектуры), но то количество кода которое приходится писать и проблемы которые я имею блягодаря JavaScript и всего стека, вызывют у меня стойкое отвращение к походу вместе со всеми этими решениями.
В общем программировать UI не сложно в том смысле, что нужен какой-то высокий уровень квалификации (как я уже говорил UI часто отдают неквалифицированным людям), а сложно в том смысле что приходится следить за большим количеством мелких событий, которые происходят при том или ином изменении состояния а так же действий пользователя. Это не сложно, но очень муторно и долго - это как подметать оживленную улицу и убирать на ней мусор. Мне как и многим хотелось бы заставить этим заниматься робота. Вот с этой проблемы я и начну. С проблемы уборки улицы, вернее синхронизации состояния и UI.