Выбрать главу

Синопсис концепции Тима Брея сводится к простой истине: код на серверной стороне выглядит восхитительно, код на стороне клиентской — приближается к катастрофе. Обосновывает свою позицию программист-философ следующим образом.

Server-side Programming:

— Все технологии отшлифованы десятилетиями интенсивных разработок и являют собой сегодня упорядоченный мейнстрим, объединённый важной характеристикой: независимо от языка программирования, среды, фреймворка и библиотек серверные программы универсально ориентированы на HTTP: они этот протокол понимают, умеют на нем общаться и создают на его основе API.

— Универсальность серверному программированию обеспечивает всеобщее признание схемы использования шаблонов проектирования Model-View-Controller (MVC, модель – представление — контроллер). Несколько портят картину языки PHP и Spring («Кое-кто ещё пытается писать на них важные приложения, но их давно уже никто не принуждает к такому выбору»).

— Существует большое число языков программирования, пригодных для создания серверных приложений, которые с лёгкостью справляются с главным трендом 2014 года — масштабируемыми системами.

Ну и так далее. Картина, одним словом, замечательная. Совсем другой коленкор — 

Client-side Programming:

— Главная причина кошмара, связанного с написанием программ, которые исполняются не на сервере, а на клиентском оборудовании, кроется в одном слове — mobile! В самой мобильности, ясное дело, нет ничего предосудительного — чудовищна лишь современная реализация этого понятия. А именно: для того чтобы создавать по-настоящему универсальный мобильный клиент, программисту требуется писать три разных кода — для Web, для iOS и для Android. Перейти от одного к другому автоматически не получается, нужно именно что писать три разных программы.

— И iOS, и Android по гамбургскому счету — ужасные операционные системы хотя бы потому, что нужно пользоваться ужасными языками — Java или Objective-C. К ним можно привыкнуть, их можно принять на веру, с ними можно примириться и даже — полюбить, но это всё — от безвыходности. Эта любовь сродни любви заложника к захватившему его террористу (стокгольмский синдром). Можно, конечно, писать приложения на HTML5, но это такой же паллиатив, особенно на фоне возможностей, существующих для server-side программирования. 

— Цикл обновления на мобильных платформах чудовищный. В случае с iOS речь идёт о днях, на Android — о часах. Тим Брей предлагает сравнить процедуру обновления с приложениями, основанными на браузерах (несколько секунд), чтобы понять критичность этого недостатка мобильных экосистем («Вы обнаружили в своём приложении баг, который ведёт к потере данных, нарушению целостности пользовательского аккаунта и подрыву безопасности клиента? Sucks to be you — хреново быть в вашей шкуре!»).

— Мобильному «железу», с которым приходится работать, хронически недостаёт памяти, мощности ЦПУ и заряда батареи. 

— Количество формфакторов на рынке приближается к бесконечности, и с каждым днём ситуация становится ещё хуже.

— Как ни банально это звучит, заработать программисту на мобильных приложениях очень и очень сложно: «Apple постоянно говорит о миллиардах и миллиардах долларов, которые они выплачивают в своём App Store программистам, почему же тогда я лично не знаю ни одного, кто бы зарабатывал серьёзные деньги на мобильных приложениях?»

— Ну и далее по мелочам: JavaScript sucks, браузерные API suck, CSS sucks, а все вместе сводится к уже прозвучавшему — Mobile sucks! А вместе с ним — suck и всё клиентское программирование. 

Из всего сказанного Тим Брей делает сакраментальный вывод: 2014 год продолжит оставаться для серверного программирования стабильной, отлаженной и приятной средой; что касается клиентского программирования, то сказать ничего определённого невозможно, потому что рамках существующих экосистем выхода не заметно.

Попробую оценить эту реплику профессионала с позиции профана, то есть того самого бедолаги, расположенного с клиентской стороны баррикады, ради которого стараются Тим Брей и его соратники. Слово «пользователь» происходит от глагола «пользоваться», а это действие, как вы понимаете, не предполагает заглядывания под капот. Вот моя машина, я в неё сел и поехал. Я хочу только одного — чтобы в ней ничего не ломалось и мне было в ней комфортно. Как там внутри у моей машины всё устроено, какие технологические процессы были задействованы, какие уникальные разработки использованы, меня как пользователя не интересует в принципе. Соответственно, и страдания Тима Брея как программиста мне фиолетовы. В конце концов, если программист этим занимается — значит ему либо интересно, либо выгодно.