Intro.
Величина вектора эволюции в области свободных решений, открытых стандартов и протоколов всегда была высокой. А в последнее время его значение запредельно выросло, словно намекая нам на грядущую сингулярность. WEB-сервисы на новейших информационных технологиях растут каждый день как грибы. Шестерёнки прогресса крутятся, переламывая эволюционно-слабые решения. По сути дела, что-то начинать, делать свой стартап, без готовности развиваться, быть на волне прогресса - сегодня абсолютно бесперспективное занятие.
Миллионы идей возникают у людей каждый день. Тысячи из них доходят до реализации. Из альфа-стадии «вылезает» не более десятка. А из беты - и того меньше.
Затем «мёртворождённые» идут на свалку истории и остаются самые стойкие, приносящие реальные инновации. Воистину, лучший фильтр неполноценности - свобода.
Невыразимо скучно вспоминать, чем был интернет вчера. Сегодня, типичный пользователь-прогрессист уже привык к таким технологиям и инновациям, как AJAX, RSS/Atom, блоги, wiki, CSS, теги, чистые URLы, простому обмену медиа и очень больших файлов, подкастам, локализации и т.д.
Это уже не говоря о том, как в корне поменялось представление о WEB-разработке у программистов.
Каждая инновация (есть и исключения) - это, в принципе, лишь маленький фрагмент общей картины. Что значат «теги» в отрыве от всего остального? Да ничего. Как появился AJAX? Когда-то, давно-давно, в древнем 1995 году (с т.з. WEBа), Netscape внедрило в свой браузер с одноимённым названием поддержку Javascript - языка выполняющегося прямо в браузере клиента. Затем появился XML - язык разметки общего назначения. А уже потом - Asynchronous Javascript and XML (AJAX), технология, которая соединив в себя два элемента, громыхнула среди ясного неба классическо-наивного подхода к пониманию взаимодействия между пользователем и WEB-сервисом.
Интересно проследить (хотя-бы кратенько) эволюцию WEBa, а особенно представить, как всё-это будет выглядеть в будущем, что нас ждёт - тупик или революционный прорыв?
Называйте меня «просто WEB».
Страницы, склеенные и связываемые с другими страницами путём гиперссылок. Набор скленных страниц - сайт. Для того, чтобы добавить поддержку динамического контента - использование Server-side языков (то есть таких языков, которые выполняются на стороне сервера) и (всё чаще и чаще) баз данных. Пройдёмся по самым популярным решениям. Широкое использование CGI-протокола, глобальное распространение PHP (в основном с MySQL), меньше Perl, и гораздо меньше, но зато у сугубо солидных контор - ASP+MsSQL.
Из-за представления - WEB - это «страницы информации с гипертекстовыми ссылками», причём не только у пользователей, но и у программистов-криэйторов; как таковых, архитектурных паттернов WEB-программирования практически не существовало. Код смешивался с представлением, а использование классических концепций программирования (ООП, к примеру) с отсутствием таковых.
И всё работало (в меру) хорошо до тех пор, пока вследствии развития WEBа не был достигнут некоторый рубеж, после которого весь этот код оказался сложен в поддержке, тяжело-расширяем, полон возможных багов и дыр. Короче, всё докатилось до того, что разработчики встали на перепутье - традиционный подход упёрся в тупик, а это значило следующее:
1) Либо выкидывать весь старый код и писать заново по определённым парадигмам/паттернам и конвенциям.
2) Либо структурировать весь старый код, писать для него специальные «костыли», облегчающие работу программистам; добавить модульность для облегчения расширения.
Большинство, конечно, пошло по второму пути - самому простому. Как вывод - многочисленные уязвимости, «корявый» дизайн, переполненный багтрек и другое.
Первые же, впервые стали использовать при WEB-программировании событийно-управляемую (event-driven) парадигму, а также MVC (Model-View-Controller: Модель-Представление-Управление). Но об этом позже. А пока замечу, что как-то это всегда бывает, успех первых не мог не отразиться на кодах вторых - произошло проникновение концепций.
Итак, WEB рос, появлялись новые технологии и новые возможности. Стартапы изо всех сил боролись за пользователей, и как итог - внедряли новые технологии, появились WEB-приложения и WEB-сервисы, появился...
WEB 2.0
Его квинтэссенция: WEB - это платформа. Причём платформа не в расплывчатом смысле, а платформа, на которой обильно произрастают различные WEB-сервисы, а также WEB-приложения, использующие первых.
Фактически, WEB 2.0 - это прорыв в области взаимодействия сетевых объектов, например пользователей.
Термин WEB 2.0 часто критикуют за «нечёткое определение», но всё-же ряд общих черт у приложений выделить можно с разных точек зрения:
1.С социальной - объекты (пользователи) легко взаимодействуют друг с другом, обмениваясь (либо работая вместе над) информацией (не обязательно текстовой).
2.С информационной - наличие связей «many-to-many» (переход от таксономии к фолксономии), то есть один произвольный объект может иметь связи со множеством других объектов. Информация динамична и хранится в базах данных.
3.С интерфейсной - активное использование AJAX, либо вектор на плавный переход к нему.
Конечно, WEB 2.0 - это не заменитель простого WEBa, как вы уже догадались, скорее это - расширение. Расширение безусловно важное и весьма полезное для конечного пользователя.
Так например, сейчас сфера WEB 2.0 активно переманивает пользователей несложных приложений в самой среде операционной системы. Плюсы налицо: мультиплатформенность, отсутствие необходимости синхронизации данных (например между ноутбуком и КПК), более естественное взаимодействие с другими пользователями. Минусы, конечно, тоже есть, но в основном это касается пользователей из неразвитых областей (большая часть России).
Так как событийно-управляемая парадигма всё-же больше подходит для разработки прикладных графических приложений, то в сфере WEB 2.0 весьма укрепилась MVC (разделение модели (БД), управления, и представления), начиная от легендарного Ruby-on-Rails, заканчивая CakePHP, Turbogears и многими другими фреймворками.
По сути дела, для разработки качественного WEB 2.0 приложения не важен выбор серверного языка, важен выбор концепций и парадигм, правильное мышление.
Но полноте, WEB 2.0 - это настоящее, а что до будущего?
WEB 3.0
Наше ближайшее будущее. Фактически, если рассматривать WEB 2.0 с точки зрения инноваций, то это прошедший шаг. На сегодняшний день надо думать о WEB 3.0 и приближать его всеми возможными способами.
Итак, что всё-таки скрывается под WEB 3.0. Дальнейшая эволюция сети - да, это понятно, но что именно?
Хорошая компиляция особенностей (хоть и не без изъянов с моей т.з.) -
http://en.wikipedia.org/wiki/Web_3.0 Просуммируем на русском языке (с необходимыми пояснениями):
1. Преобразование WEB в базу данных. То есть представление данных в структурированных записях, опубликованных в таких универсальных форматах, как XML, RDF. Это ещё более упростит задачу интеграции данных, взаимодействия приложений и сервисов (SPARQL).
2. Реализация семантического WEBа. Для увеличения эффективности обмена информации между сервисами и приложениями. Для этого контент будет публиковаться не только в естественных для человека языках, но и в некотором стандартизированном формате, понятном для ботов, компьютерных программ. Семантический WEB - это пример слабого искусственного интеллекта (weak AI).
3. Реализация SOA. То есть Service Oriented Architecture - Архитектура, ориентированная на WEB-сервисы. Смотрите -
http://en.wikipedia.org/wiki/Service-oriented_architecture4. Трёхмерные интерфейсы. Стандартизация протоколов, обеспечивающих взаимодействие различных трёхмерных миров, которые будут включать в себя сервисы, приложения. Поддержка браузерами «погружений» в 3D. Предтеча всему этому - это, конечно, «
Вторая жизнь».
Архитектурный паттерн MVC, на мой взгляд, неплохо приживётся и в области WEB 3.0. Хотя... а почему-бы не представить чем будет...
WEB 4.0
Может и отдалённое будущее, но кто знает? Хотелось бы верить, что нет.
Итак, смоделируем ситуацию. WEB 3.0 успешна внедрена, появилось масса сервисов и приложений, использующих её идеи. У свободных программистов новая забава - написание квазиразумных веб-приложений. Тоже самое происходит и в области закрытого ПО - формируется довольно большой рынок «ботов». Конкуренция становится всё больше и больше, программы всё разумней и разумней. По всей видимости произойдут реальные подвижки в области обучения. Программы смогут «общаться» друг с другом, с сервисами, затем сами сервисы с бороздящими просторы интернета, ботами. Сеть - как она есть будет способствовать эволюционному развитию искусственного интеллекта. А потом наступит час Икс - реальный искусственный интеллект. Веб-сервисы начинают обходиться без людей, формируя информацию самостоятельно, боты тщательно обследуют WEB, понимая естественные языки. WEB начинает жить самостоятельно и независимо от человека, генерируя информационные потоки, создавая бесчисленные аватары в 3D-мирах, конкурируя с человеком на всех уровнях, в том числе научном. Бац. Сингулярность. Занавес.
«После тяжёлого дня физических тренировок Станислав пришёл домой и сел в кресло. На столе лежали ВР-очки, недавно выпущенная моделька. Их оправа венчалась аккуратными наушниками. Спустя некоторое время, он уже был «онлайн» - перейдя в знакомый мир медиа-потоков, глубоких кратеров и грибовидных зданий. Хотя были миры и другого типа - прямо как райские гущи, но боты их почему-то недолюбливают, кто знает отчего? Станислав вгляделся в мягко освещённые окна под шляпами зданий-грибов - сегодня в одном из них собиралась конференция разработчиков компактных телепортёров - кто знает, кто там живой, а кто электронный... Он подумал: «Но сейчас мне нужно другое - я чувствую, он здесь - этот бот далеко не уйдёт, и то, что он несёт в своём электронном нутре - вся информация будет моя»».
Приложение. Примеры WEB 2.0 сервисов и приложений.
1.
http://wikipedia.org2.
http://livejournal.com3.
http://del.icio.us 4.
http://www.ebay.com 5.
http://www.craigslist.org6.
http://www.skype.com 7.
http://www.google.com/adsense8.
http://netvibes.com9.
http://maps.google.com/10.
http://habrahabr.ru11.
http://digg.com/12.
http://www.backpackit.com/13.
http://www.basecamphq.com/14.
http://sourceforge.net15.
http://youtube.com/16.
http://imageshack.us17.
http://news.yandex.ru/export.html18.ещё примеры на
http://web2.ajaxprojects.com/