Ну и раз у нас сегодня пошла такая пьянка, напишу-ка я и насчёт программирования немного.

Сегодня утром обнаружил свежую осмысленную статью Джоэла Спольски (Спольского? Та же хрень, что и с Чонтофальски; anyway…), посвящённую перспективам развития веб-приложений. Так, для справки: Джоэл — программист (руководил разработкой MS Excel), предприниматель, израильский десантник и кибуцник, а главное — отличный эссеист на околокомпьютерную тематику. У него вышла пара книжек, и блог его читают, наверно, миллионы. Правда, последнее время он пишет мало (кроме как о своём гешефте), но вот, наконец, разродился.

(тут я, стесняясь, ставлю кат. Кто читает по RSS, не судите строго — уж больно много букв получилось!..)

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

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

Однако переход к веб-приложениям мне кажется слабым. Вот он фантазирует, что кто-нибудь разработает сейчас мегаплатформу, которая будет обеспечивать единообразие и простоту взаимодействия приложений, написанных с её использованием.

Imagine, for example, that you’re Google with GMail, and you’re feeling rather smug. But then somebody you’ve never heard of, some bratty Y Combinator startup, maybe, is gaining ridiculous traction selling NewSDK, which combines a great portable programming language that compiles to JavaScript, and even better, a huge Ajaxy library that includes all kinds of clever interop features. Not just cut ‘n’ paste: cool mashup features like synchronization and single-point identity management (so you don’t have to tell Facebook and Twitter what you’re doing, you can just enter it in one place). And you laugh at them, for their NewSDK is a honking 232 megabytes … 232 megabytes! … of JavaScript, and it takes 76 seconds to load a page. And your app, GMail, doesn’t lose any customers.

But then, while you’re sitting on your googlechair in the googleplex sipping googleccinos and feeling smuggy smug smug smug, new versions of the browsers come out that support cached, compiled JavaScript. And suddenly NewSDK is really fast. And Paul Graham gives them another 6000 boxes of instant noodles to eat, so they stay in business another three years perfecting things.

And the NewSDK people ship a pretty decent word processor and a pretty decent email app and a killer Facebook/Twitter event publisher that synchronizes with everything, so people start using it.

And while you’re not paying attention, everybody starts writing NewSDK apps, and they’re really good, and suddenly businesses ONLY want NewSDK apps, and all those old-school Plain Ajax apps look pathetic and won’t cut and paste and mash and sync and play drums nicely with one another. And Gmail becomes a legacy.

Прошу прощения за длинную цитату, но жалко резать — хорошо пишет. Так вот. Это всё очень бла-ародно, как говорится, но есть нюанс. Даже несколько нюансов. Во-первых (но далеко не в-главных), компьютеры сейчас стали слишком хороши, и закон Мура ослабевает в практическом смысле: всё меньше желающих менять комп, если и старый справляется с имеющимися задачами. Большинству нужно смотреть кино и редактировать фотки — для этого сойдёт и машина пятилетней давности. Некоторые добрались до видео, но и тут нынешние машины справляются. Игры по-прежнему двигают прогресс, но они по большей части завязаны на видео-карты. Новых, ещё неокомпьютеренных, людей с каждым годом всё меньше, да они и не купят high-end железа в любом случае. И вряд ли можно рассчитывать, что кто-то станет покупать новую машину только потому, что сайт-на-платформе-имени-Спольски у него тормозит.

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

Точнее, отчасти верю, конечно. Если говорить всё о том же вебдваноле, уже и сейчас есть несколько больших и маленьких библиотек или тулкитов для разработки AJAX-приложений: The Yahoo! User Interface Library, Google Web Toolkit, наконец, Prototype.js (я не занимаюсь ajax-разработкой, поэтому привёл для примера то, что на слуху). Но я сильно сомневаюсь, что возможно появление некоего большого проекта, который поначалу нефункционален, а через несколько лет вдруг процветёт и все будут на него молиться. Будут (и сейчас уже есть) центры притяжения — тот же Гугл, то же Яху, тот же Facebook — вокруг которых будут расти и развиваться сообщества разработчиков. Не исключено, что появится новый сильный игрок, и предложит свою систему, которая в итоге всех заборет. Но одного технического преимущества тут явно не хватит: всё на виду, и потому всё хорошее будет содрано и улучшено в мгновение ока. Главное — это сильное и работящее сообщество.

В любом случае, как бы там ни было в конце, закон Мура в Сети играет куда меньшую роль. Это висту вы можете писать шесть лет (или больше — когда они начали?..), никому не показывать, а потом выкатить с фанфарами и надуванием щёк, потеряв половину обещаных фич по дороге. На вебе не то, что шесть, два года — огромный срок. То, что мы пишем сейчас, через два года будет уже никому не интересно. Дай бог, чтоб было интересно хотя бы на тот момент, когда мы писать закончим. И то, что Джоэл кивает на Google Mail и предсказывает, как тот устареет — чепуха! Он уже сейчас не привлекает внимания. Когда GMail вышел, он сделал маленькую революцию. Что вы, что вы, смотрите, какой AJAX! (Тогда и слово-то это только появлялось.) Смотрите, сколько места! (А сейчас на Яндекс.Почте в пять раз больше дают без вопросов.) Конечно, он устарел. У него есть свои пользователи, и сейчас их уже не надо туда заманивать-переманивать сверхновыми технологиями, они уже там. И конечно, через пять лет AJAX будет совсем не тот, что сейчас. А может, все пересядут на Flex или Silverlight или на что-то вовсе пока неведомое. Но чтобы сделать успешное веб-приложение, нужно сделать его работающим сейчас, потому что через три года, когда, наконец, процессоры ускорятся и каналы расширятся, оно уже никого не заинтересует.

Аналогичная ситуация и на стороне сервера (помните, у веб-приложений две стороны!). Конечно, не всегда есть смысл сильно оптимизировать — проще поставить пару лишних серверов, пусть жрут электричество. Но всё равно нельзя позволить себе писать то, что откровенно тормозит — всё должно летать, иначе просто никто не придёт на ваш сервис. Ха! Мы тут, на Я.Ру, хоть и располагаем ресурсами могучей компании, но всё равно — ночей не спим, думаем, как бы повысить производительность. Лучше не дописать пару фич, чем снизить скорость отдачи страничек. Опять-таки, хватай, пока горячо: если мы сейчас не заманим всех в наши сети, через год уже, наверно, будет поздно.

Да, уже много лет скорость работы программиста куда важнее скорости работы программы. Но веб-приложения в корне отличаются от десктопных. И не в том даже дело, что вебовские передаются по тормозным сетям и исполняются в тормозных браузерах. Вырастет, всё вырастет. Разница в том, что десктопные приложения пишутся для завтрашнего дня — когда ещё они дойдут до пользователя. Вебовские же попадают к юзеру в ту минуту, когда ты ставишь последнюю скобку в коде. А завтра будет новый день, и пора выпускать следующую версию.

Advertisements