[Перевод] HTML — язык программирования. Убедите меня в обратном
Примечание от переводчика: переводчик считает, что провокационный заголовок совершенно не раскрыт и не доказан в статье. Имейте это в виду при прочтении. Перевод был мотивирован желанием поделиться со статьей с русскоязычной аудиторией.
На самом деле, HTML — самый важный язык вычислений, из когда-либо созданных. Недооценивайте его на свой страх и риск.
HTML ОБМАНЧИВ. На первый взгляд он кажется простым. И тривиальный HTML действительно прост. Используя всего несколько тегов вы можете написать свое имя на веб-странице, изменить его размер, добавить «просто великолепен» жирным или курсивом, а для тех, кто застал золотые времена, — даже заставить текст мигать или плавно двигаться по экрану.
Поскольку HTML выглядит простым и не имеет формальной условной логики или Тьюринг-полноты, его часто отбрасывают как нечто, не относящееся к языкам программирования. «Это не настоящий код, это просто разметка» — знакомая фраза. Я хорошо знаком со строгой красотой командной строки: от автоматизации скриптов до обучения LLM. Но недооценивать HTML — это ошибка.
HTML — самый значимый язык вычислений, программирования или чего-либо еще, из когда-либо созданных. Каждому другому языку программирования пришлось столкнуться с тем, как HTML за последние 30 с лишним лет переосмыслил саму суть вычислений. Сегодня множество «настоящих» языков программирования занято тем, что автоматизирует создание все бо́льшего количества HTML.
Когда критики отказывают HTML в статусе языка, они демонстрируют непонимание, что такое язык программирования на самом деле. Язык — это не просто набор инструкций, которые оставляют собеседнику лишь одну возможную интерпретацию. Язык — это нечто большее, богаче и сложнее. Как и человеческая речь, HTML — это диалог. Он удивительно хорошо адаптируется к контексту. Он может принимать разные формы на любом устройстве: от настольного браузера или экрана электронной книги до мобильного приложения или программы экранного чтения для незрячих (при условии, что устройство предназначено для работы с гипертекстом).
HTML каким-то образом одновременно является и бумагой, и печатным станком электронной эпохи. Это и то, как мы пишем, и то, что мы читаем. Это самый демократичный и самый глобальный язык компьютеров. Это среда, которую мы используем, чтобы связываться друг с другом и публиковать свои мысли для всего мира. Супер-логично, что HTML был разработан как библиотека — архив, каталог, сеть связей — для всех цифровых знаний.
Как и многие читатели моего возраста, я впервые столкнулся с HTML в 1994 году, в те захватывающие времена, когда браузер Netscape открыл веб для гораздо большей аудитории. В моем случае доступ к интернету был только на нескольких компьютерах в моей школе — дома компьютера у меня не было, не говоря уже о модемном подключении, —, но я быстро стал самопровозглашенным экспертом по навигации в этом новом и странном пространстве, которое создали Тим Бернерс-Ли и его коллеги.
Старший друг показал мне, как он создал свою домашнюю страницу. Там были анимированные GIF-изображения с надписью «в разработке», интерактивный «Магический шар», а также пара фотографий, пожирающих весь доступный битрейт. Поскольку у меня не было электронной почты, он добавил на свой сайт текстовое поле, где я мог отправлять ему сообщения, строго пояснив, что поле предназначено «только для ТИМА». Он публиковал свои ответы прямо на сайте, чтобы я (и, теоретически, кто угодно) мог их прочитать, когда я снова получу доступ к компьютеру. В те времена это считалось вполне приемлемой формой информационной безопасности для таких малозначимых ресурсов.
Идея о том, что можно создать что-то веселое для своих друзей, но при этом это может случайно обнаружить кто-то из любой точки мира, была просто опьяняющей. Как и сам язык. Тогдашний HTML в сыром виде был прост для понимания даже новичками. Вам не требовался курс по формальной логике, чтобы понять, что большинство тегов нужно открывать и закрывать (как скобки в математических выражениях или обычных предложениях), чтобы они работали как задумано. А еще не нужно было быть подростком-сорванцом, чтобы разглядеть потенциал в том, что происходило, когда HTML «ломался».
Чтобы изучить любой язык программирования, нужно научиться его отлаживать. Но неверная команда в Python, как правило, приводит к ошибке, которая не позволяет коду выполняться, в отличие от того, что происходит с HTML — когда ошибка не просто сбивает с толку, но и приводит к невообразимым результатам, превосходя своим масштабом даже намерения создателей. С HTML мы все становимся Докторами Франкенштейнами.
Один из моих любимых сайтов всех времен — это Embroidery Troubleshooting Guide (Руководство по устранению неисправностей вышивки). Сегодня он доступен только через Internet Archive, если, конечно, у вас нет локальной копии, как у меня. В верхней части страницы он выглядит как типичный, хотя и несколько устаревший, сайт для малого бизнеса. Но если вы начнете прокручивать его вниз, сразу заметите нечто странное. Текст, выровненный по центру и чередующийся между красным и синим шрифтами Arial, постепенно увеличивается, а фразы заставляют текст переноситься или обрываются на полуслове, заполняя экран, как Алиса, пытающаяся протиснуться через все более узкие двери в Стране Чудес.
Если вы откроете исходный код (какие еще программы позволяют так легко просматривать исходники, как это дает сделать сайт?), вы быстро поймете, что пошло не так. Каждая строка выровненного по центру текста начинается с тегов или
, которые не закрываются. Каждый такой тег —, а он только устанавливает относительный размер, не абсолютный, являясь частью семантической гибкости языка веба — наращивает предыдущий, создавая прогрессивно увеличивающиеся матрешки. Тег, предназначенный для определения иерархии текста, выходит из-под контроля и сеет хаос. А то, что сам текст описывает, как и почему может порваться нить в станке, делает это стихотворением.
Примечание переводчика: если будете смотреть верстку этого сайта через DevTools, сразу идите в раздел Sources и смотрите в (почти) оригинальный HTML. Верстка из раздела Elements генерируется браузером, а он пытается починить сломанную верстку, как может, и додумывает теги.
Сам по себе Embroidery Troubleshooting Guide был бы достаточно умным примером концептуального искусства. Но, открыв исходник, скачав файл и заменив инструкции по устранению типичных проблем с вышивкой на любой текст, который вам нравится, вы можете сделать это произведением искусства, принадлежащим лично вам. Я люблю вставлять туда свою любимую поэзию, выводя ее из контекста и заставляя себя читать ее новыми глазами.
Такие «сломанные» сайты переворачивают великое достижение семантического HTML. По мере своего развития семантический HTML все больше отделял структуру от представления: вместо тегов , которые строго указывают на необходимость отображения текста курсивом, мы используем теги
, чтобы обозначить акценты (или
, чтобы указать название книг или фильмов и так далее). Эти элементы могут отображаться как курсив на экране компьютера, но восприниматься с другой интонацией экранным диктором. Embroidery Troubleshooting Guide берет семантический тег и заставляет его делать нечто неожиданное. Те же строительные блоки, которые позволяют одному сайту адаптироваться под экран маленького телефона или огромного телевизора, могут сделать сайт фактически недоступным для отображения. И это восхитительно.
Я ценю полезность систем управления контентом и сложных сайтов, генерирующих HTML динамически, но есть что-то приятное в создании сайтов из простых HTML-файлов, которые можно редактировать вручную. Я до сих пор так редактирую свой собственный сайт, приводя его в порядок, чтобы видеть каждый тег, раздел и разрыв абзаца. Мне даже нравится редактировать свои собственные электронные книги, превращая PDF-файлы в аккуратно отформатированные HTML-EPUB, которые никогда не будут опубликованы — моя личная библиотека самодостаточных сайтов. Во время пика пандемии редактирование этих файлов и их стилей вручную стало настоящим бальзамом для души.
В конечном итоге, даже несмотря на то что HTML стал областью профессионалов, его не удастся ограничить. Именно это вызывает тревогу у многих программистов, заставляя их порой отчаянно пытаться сохранить реальный барьер между инженерами-программистами и веб-разработчиками. Но те, кто пишет на HTML, знают, что иерархии созданы для того, чтобы их разрушать. Все, что для этого нужно — это тег, который не закрывается там, где вы этого ожидали.
То, что другие программисты могут сказать с презрением, любители HTML принимают с открытым сердцем: каждый может это сделать. Будь то с помощью сложных фреймворков или очень простых инструментов, обещание HTML состоит в том, что мы можем строить, создавать, программировать и делать все, что захотим.
Переводчик: как видите, это просто своеобразное признание в любви к HTML. Ставь палец вверх, если не согласен со статьей;, а если согласен со статьей, тем более ставь палец вверх, лойс, подписку или что у вас там сейчас есть в 2025 году.