Хотя ИТ и воспринимается как нечто однородное, фактически, это просто попытка объединить несколько различных, порой противоположных по логике использования направлений, под один знаменатель.
Тем не менее, у всех составляющих ИТ есть некоторая общая тенденция поведения и развития. Обычно, она состоит из следующих аспектов:
- Распределение основных вычислений между клиентом и сервером;
- Распределение точки монетизации (за что именно идёт оплата);
- Использование старой технологии, но по-новому.
Иллюзия развития
Для начала определимся, что есть развитие: это теоретическая разработка с последующим практическим использованием какого-то нового, ранее не существовавшего подхода, который позволяет решать новый класс задач, которые нельзя было решать ранее.
На мой взгляд, ИТ, как явление, уже давно не развивается, а лишь улучшает то, что уже есть. Практически все технологии, что применяются сегодня были разработаны почти 50 лет назад и далее только обрастали подробностями и улучшениями.
Хочу обратить внимание на тот факт, что мы говорим о чём-то новом и принципиальном, а не о том, что раньше не могли сделать, а сегодня могут.
Взять, скажем, нейросети: первые попытки смоделировать мозг червя были предприняты, кажется, ещё в 70-х годах, но вычислительных мощностей того времени было просто не достаточно. Не удивлюсь, если окажется, что и сегодня их не хватит.
Простой пример технологического развития
Наверное, проще всего говорить про то, что доступно и понятно каждому - про наш дорогой и всеми горячо любимый веб.
Этап первый - появление технологии
Не стану вдаваться в историю, просто появился способ хранить текстовую и визуальную информацию и предоставлять к ней доступ. В основу легла уже существовавшая на тот момент концепция XML (по сути, способ организации документов), система гиперссылок, позволявших переходить от одного документа к другому, а также существовавший в определённом виде способ доступа по сети.
Этап второй - развитие
Довольно быстро появилось желание развить технологию: добавились формы ввода, специализированные сервера доступа (они, как и браузеры, были и на первом этапе, но то были, скорее, черновые технологии), возможность управлять отображением вывода (CSS). Затем добавился и javascript, позволявший открывать окошки с подтверждениями и немного автоматизировать процесс.
Этап третий - признание
Веб получил широкое распространение; все компании считают своим делом иметь свой сайт, да даже отдельные пользователи пытаются создать свою веб-страничку (соцсети появятся немного позднее). Появляются новые производители браузеров, включая приложение на несколько вкладок, позволяющих одновременно держать в памяти несколько страниц и переключаться между ними. Появляются, в том числе, и довольно революционные технологии, позволяющие тесно интегрировать браузер с возможностями операционной системы (привет, мелкомягкие; безопасность? нет, не слышал).
Импульс получает встраивание прочих данных на страницы: java-апплеты, технология Flash, неопределённые объекты (ныне почти не используются) и многое другое. Активно развивается JS и CSS, предоставляя всё новые и новые возможности интерактивности и вёрстки.
Php и подобные языки полностью вытесняют простые cgi-скрипты, которые ранее использовались для обработки форм. Добавляются шаблонизаторы, которые, в том числе, уже могут применяться на стороне клиента (но это ещё не популярно).
Версия html плавно эволюционирует со 1.1 по 4+, расширяя свои возможности
Этап четвёртый - html 5
Начиная с этого момента можно констатировать, что веб перешёл в полноценное функционирование. Веб-браузер становится вполне автономной медиасистемой, поддерживающей, практически, любое использование: медиаконтент, работа с графикой или звуком, поддержка взаимодействия с устройствами и многое другое.
Компании более не нуждаются в собственных персональных страничках, набитых скучными и бессмысленными текстами о том, какие они молодцы (это уже давно никто не читает): ссылка на соцсети, посадочная страница - этого, почти всегда, достаточно, т.к. существующие платформы позволяют перекрыть 90% всех возможных потребностей (для кого-то - все 100) по предоставлению и продвижению себя в сети.
Клиент-серверная модель, также, претерпевает изменение: значительная часть вычислений перемещается на сторону клиента (этому способствует рост вычислительных мощностей оборудования клиентов), происходит отказ от поддержки старых браузеров в пользу только новых (полная поддержка для всех версий становится слишком трудоёмкой).
Этап пятый - грядущее
Распределённый веб (привет, блокчейн и распределение); ставка на новый старый способ предоставления информации (пользователь предпочитает соцсети или тематические форумы с поиском вместо многочисленных сайтов), хотя там ставка делается только на текст, изображения, видео и аудио.
А что под капотом?
Кратко пробежав по истории развития веба - давайте глянем, как он менялся с точки зрения разработки.
Изначально, большая часть вычислений производилась на стороне сервера. И это касалось не только обработки запросов на управление данными, но и, в том числе, на формирование документа, который будет отображаться.
Сегодня за это отвечают, по большей части, ферймворки (React, Vue, Angular). Однако ничего нового они не делают. По сути, они используют шаблонизаторы (вроде mustache), но на свой лад, добавляя своё способ оптимизации и ускорения.
Получается, в целом, неплохо, однако, нередко возникает задача, не особо хорошо поддерживаемая фреймфорком. Тогда начинают появляться костыли и обходные решения, во вреймфорк втягиваются дополнительные инструменты и библиотеки, позволяющие решать нерешаемые задачи без необходимости углубляться в исходники самого фреймфорка. Получается, надо сказать, не всегда хорошо, но приемлемо.
Было-стало
Рассмотрим, как было раньше и как стало сейчас.
Например, форма заказа в интернет-магазине, требующая предварительной авторизации.
В прошлом на такую страницу нельзя было попасть, т.к. сервер генерировал доступную страницу и, если в куках не было свежего идентификатора клиента - страницу эту было получить невозможно.
Сегодня получить доступ к странице, теоретически, возможно: все исходные коды загружаются и доступны к редактированию, только это ничего не даст, т.к. все действия, в любом случае, проходят дополнительную проверку на серверной стороне (работы прибавилось, зато стало красивее и удобней).
В прошлом всё было крайне просто и примитивно: задачей было предоставить возможность заполнить форму; автозаполнения тоже не было.
Сегодня - стильно, модно, молодёжно; всё плавно исчезает и появляется. Мигает, подсвечивает, указывает на ошибки, проверяет формы до отправления формы, а не после.
В прошлом доступ к странице управлялся либо на уровне веб-сервера (nginx, apache), либо благодаря SSI и аналогов (позволяет генерировать веб-страницу средствами веб-сервера, собирая её из частей по правилам), либо благодаря (или совместно) с языками серверной пост-обработки (вроде php). Часть html-разметки могла быть сгенерирована на стороне сервера и передана клиенту для последующей вставки в документ.
Сейчас за управление всего приложения отвечает фронтенд - код, написанный исключительно для пользователя. Иногда появляется SSR (генерация части разметки на стороне сервера), но это не то, чтобы частое явление. Сервер более не отвечает за то, что видит пользователь, он только обрабатывает запросы и контролирует возможность их выполнения.
Обобщение эволюции веба
Как было сказано ранее, развитие многих систем велось в распределении вычислительных мощностей между центром и клиентами. Чем мощней становились терминалы, тем больше задач им передавалось, оставляя на долю сервера лишь то, что невозможно делегировать.
То же самое касается и монетизации: когда связь центра и клиентов слабая и приходится передавать ПО целиком - используется продажа лицензии на использование; с усилением связи - торгуется право доступа (подписка). Существуют и гибридные схемы (вроде аренды времени мощностей итп).
И пример веба это полностью подтверждает.
С другой стороны, налицо путь к упрощению: выяснилось, что все эти уникальные стилизации и украшательства, закруглённые уголки модальных окон и подсветки тени кнопок на формах большой роли не играют (приятно посмотреть, но это не обязательно). Дизайн соцсетей меняется крайне редко и медленно, ища свою форму и ориентируясь на пользователя, который в нём разбирается, а большая часть новых возможностей - скрыта от пользователя на стороне сервера и касается больше аналитики, прогнозирования и составления социальных портретов и связей.
Те, кто двигают веб
Развитие веба (как и любой другой технологии) производится лентяями. Обычно это выглядит так: о, мне нужно решить такую вот задачу, готовое искать лень или лень разбираться, можно ли готовое приспособить под мою задачу - напишу своё. Как пример - миллион библиотек для построения графиков. Что отрицать, я и сам одну такую написал (мне было интересно, да и тащить в проект чужой код не хотелось).
Среди множества решений всегда появляются удачные, которые, в последствии, не только заимствуются в других библиотеках но и даже переходят в язык (скажем fetch в дополнение к XMLHttpRequest для JS).
И как по мне, то именно этот альтруизм и желание поделиться своей библиотекой, разработанной для нового решения (возможно дублирующего) существующей задачи и является той движущей силой, которая его продвигает. Эволюция в чистом виде.
Заключение
И всё же, вы, наверное, заметили, что развитие по спирали бывает расширяющимся или сужающимся: либо на каждом витке технология становится шире, либо уже (до тех пор пока не сомкнётся в точку и не исчезнет).
Опыт наблюдения показывает, что все технологии (не только ИТ), которые нынче ушли - по форме напоминали веретено: зарождение, развитие, затухание и исчезновение. Пример - строительство пирамид.
Не скажу за весь ИТ, но если говорить про веб - есть странное ощущение, что середина уже пройдена. Это тем страннее, что несмотря на огромный потенциал веба (считай, браузеров) и широчайшие возможности, они практически не были использованы (звук, графика, работа с оборудованием). Есть, конечно, вероятность что мы, как говорится, вышли на плато, хотя это никак не конфликтует с идеей веретена.
А вы как считаете, в каком месте ИТ находится сейчас?