Почему html не язык программирования
Перейти к содержимому

Почему html не язык программирования

  • автор:

HTML — не язык программирования, и это плюс!

Подпишись на наш телеграм-канал TechRocks WEB-разработка?

Перевод статьи «HTML is not a programming language and that’s the best thing about it».

Я люблю HTML. Чем больше я его узнаю, тем сильнее утверждаюсь в мысли, что это гениальное творение рук человеческих. А больше всего мне в нем нравится то, что он не является языком программирования.

Языки программирования — отстой. Они постоянно сбоят (я клянусь, я всегда сразу пишу свой JavaScript идеально, а он все равно умудряется сбоить).

И что еще хуже — чаще всего в результате падает вся программа! Лучше уж карточный домик складывать на мосту в ветреную погоду.

А вот (для контраста) посмотрите, как прекрасен HTML:

Это красивый, семантический HTML5. Он заботится о доступности. Содействует удобочитаемости. Не забывает о стилизации. Еще и поисковым роботам помогает.

Если старый браузер не знаком с HTML5, он просто посчитает элемент nav старым добрым div, и все будет работать.

Если разработчик или пользователь с редактором кода (например, WordPress-бэкендер) напишет nax вместо nav, это все равно сработает.

Давайте посмотрим другой пример:

 
HTML HTML is an acronym for HyperText Markup Language. It was created by Tim Berners-Lee in 1989.

Не все знают о существовании элемента details, так что я покажу, как результат выглядит в современных браузерах:

Я не программировал это поведение (это сделали разработчики браузера). Я лишь описал содержимое документа и доверил браузеру отобразить его как можно лучше. И я считаю, что это очень, очень круто.

И это будет работать также и в старых браузерах. Да, не будет никакой интерактивности, но контент отобразится, а это самое главное.

Сохраняйте спокойствие и прекращайте программировать

Я не хочу программировать. Мне часто приходится это делать — в тех случаях, когда одного HTML недостаточно для описания того, что должен делать мой сайт. Как и у многих из нас, мой обычный день крутится вокруг фронтенд-фреймворков JavaScript. Некоторые из них мне очень нравятся.

Но когда я задумываюсь о конечном пользователе, я понимаю, что наихудшее, что я могу для него сделать, — это запрограммировать что-нибудь.

Каждый раз, когда я самостоятельно пишу программу, я будто мысленно подписываю странный документ:

«Настоящим подтверждаю, что привношу на этот сайт нестандартное поведение, снимая с браузера ответственность за обеспечение надежной работы сайта для каждого пользователя. Я делаю это, полностью осознавая несовершенство своих знаний по части веб-технологий, а также осознавая наличие ограничений в моих реализациях, временных и технических, которые невозможно оценить. Я понимаю, что то, что я делаю, в какой-то момент и в каких-то ситуациях может сломаться. Но у меня нет выбора, и я обещаю не облажаться».

С другой стороны, когда я использую HTML и веб-стандарты, я полагаюсь на общее знание опытных разработчиков браузеров и десятилетия дебатов о том, как сделать веб отличной платформой.

Вот почему глубокое знание HTML имеет безграничную ценность: с его помощью вы обеспечиваете пользователю качество, а только это и важно в конечном счете.

Гибкость

Одно из лучших произведений, которые мне довелось прочитать в этом году, — «Resilient Web Design» Джереми Кейта. Там рассказывается, как из-за XHTML 2.0 мы чуть не потеряли один из самых важных аспектов HTML:

«[XHTML 2.0] также должен был реализовать драконовскую XML-модель обработки ошибок. Если в XML-документе встречается хоть одна ошибка — атрибут, не взятый в кавычки, или пропущенный закрывающий слэш — парсер должен немедленно остановиться и отказаться отображать что бы то ни было».

Слава богу, мы к этому не пришли.

«XHTML 2.0 умер, не родившись. Его теоретическая чистота была отвергнута людьми, которые создавали сайты для жизни».

Я ведь говорил: нормальные люди не хотят программировать.

Сложен ли HTML?

Конечно, чтобы понимать, насколько великолепен HTML, нужно его знать. Я имею в виду по-настоящему знать.

Семантика, доступность, SEO, браузерная совместимость и дефолтные стили, новые теги, устаревшие теги, специфические атрибуты, касающиеся языка и времени, формы, оптимизация производительности, метаданные, медиаресурсы…

Даже без учета генерируемого фреймворками «супа из тегов» есть существенная разница между просто хорошей и отличной HTML-разметкой.

Было бы ошибкой считать, что HTML (и CSS) — легкая часть веб-разработки. Проблема в том, что чтобы это понять, нужно хорошо изучить эти языки.

JavaScript — сложный. Это каждый знает, но откуда? А оттуда: прежде чем вы добьетесь, чтобы код заработал, вам придется иметь дело с бесчисленными красными ошибками, блокирующими весь проект. И только после болезненного дебаггинга ваш код запустится правильно.

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

Когда вы первый раз пишете JavaScript, это бардак какой-то. Когда вы впервые пишете HTML, вы чувствуете себя гением веба.

И только со временем и опытом приходит понимание, что вы не гений: гении — те, кто создал HTML. Именно они дали вам прекрасный инструмент, а чтобы научиться действительно хорошо с ним работать, потребуется много практики и терпения.

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

Кризис идентичности языков веба

То, как мы называем разные вещи, имеет значение. Когда систематически недооценивают части проектов, касающиеся HTML/CSS, это очень огорчает тех, кто знает о важности этих частей. Больно слышать, когда говорят, что фронтенд-разработчики «не заботятся о CSS», ведь расположение пикселей на экране это практически определение нашей профессии.

Возможно, если назвать HTML языком программирования, некоторые люди, наконец, сочтут его стоящим внимания? Было бы наивно не осознавать предвзятость и даже некоторый сексизм, связанный с этим вопросом. Типа, HTML/CSS — это же часть представления, а значит… женское занятие?

С другой стороны, я понимаю, что когда HTML называют языком программирования, многих (включая меня самого) это раздражает. И не потому, что я считаю, будто языки программирования лучше, чем HTML. Напротив! Потому что я не хочу, чтобы HTML был языком программирования.

Мы просто что-то создаем

На своих курсах я часто использую термин «язык разработки». Не замечал, чтобы это выражение часто использовалось в английском. На французском мы говорим «langage de développement», и я думаю, это прекрасно (and I think that’s beautiful — отсылка к концовке популярных мемов, — прим. перев.).

Этот термин может стать собирательным для HTML, CSS и JS — и при этом никого не бесить.

Из Кембриджского словаря:

«Разработка: изобретение или создание чего-либо».

Кажется, что дебаты о том, являются ли HTML и CSS языками программирования, будут длиться вечно. Но суть в том, что они используются (порой — наряду с JS) для «создания чего-либо», и этот факт никто не оспаривает.

Какая разница, программируете вы или нет? Важно только качество того, что вы создаете.

Я считаю, что мы просто должны вернуть не-программированию его крутость.

Все о языке программирования html

#

HTML — это аббревиатура, происходящая от английских слов HyperText Markup Language, или “язык гипертекстовой разметки”. Формально html — не язык программирования. Он не использует функции, операторы и прочие атрибуты для создания полноценных программ. Гипертекст работает через теги. С их помощью он сообщает интернет-браузеру, какой элемент нужно показать на экране и где его можно найти. Но разберемся во всем по порядку.

Сферы применения языка html

Гипертекстовая разметка предназначена для разработки сайтов. Через нее на веб-страницы добавляются тексты, таблицы, изображения, видеоролики и другие объекты. Кроме того, на html можно создать простейшие формы для сбора данных — например, поля для ввода текста или таблицы с выбором одной из предложенных опций.

Рассматриваемый язык (будем все же говорить так, несмотря на формальности) — профессиональная область знаний для вебмастеров, seo-специалистов, интернет-маркетологов. При этом для всех владельцев сайтов — в том числе директоров и менеджеров коммерческих компаний — будет не лишним понимание основ html.

Когда не стоит применять html

Для полноценного форматирования страниц сайтов — смены шрифтов, обозначения отступов и редактирования прочих параметров обычно используют не html код, a CSS. Это отдельные файлы, в которых на специальном языке прописываются правила — как и во что браузер должен “покрасить” каждый элемент заданной через html структуры.

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

#

Активные формы для сбора обрабатываемых данных, как и пользовательские скрипты, обычно пишутся на JavaScript. Этот язык программирования обладает значительно большим количеством функций, чем html, и с его помощью проще обеспечить безопасность передаваемой информации.

История языка

Гипертекст появился на рубеже 80-х и 90-х годов как стандартизированное средство для быстрой верстки web страниц, и изначально включал в себя лишь 18 базовых элементов. В первые годы существования язык разметки активно развивался. Уже к 1999 году появилась версия html 4.01, содержащая множество новых возможностей в сравнении с первыми спецификациями.

Актуальная версия html — 5.3, действует с конца 2018 года.Она поддерживается большинством браузеров. Сайты, использующие устаревший синтаксис, могут отображаться некорректно в современных программах.

Отдельно стоит упомянуть XHTML — гипертекстовый язык, основанный на синтаксисе XML. Он схож со стандартным html, но предъявляет более строгие правила к написанию кода. Например, все спецсимволы в нем (&, <> / и другие) прописываются в виде сущностей — например, “&amp”.

Как работает html

Когда пользователь вводит адрес сайта в соответствующую строку, браузер посылает запрос к серверу. В качестве ответа сервер отправляет html-документ, который расшифровывается браузером. Передаваемый файл содержит как отформатированный через теги текст, так и гиперссылки на дополнительные документы — изображения, видео, стили и скрипты. Браузер последовательно выгружает всю полученную информацию. Пользователь видит страницу уже в готовом виде. Открыть исходный код можно кликнув правой кнопкой мыши в области просмотра сайта и выбрав в меню пункт “Просмотр кода страницы”.

#

Гипертекст выступает “каркасом” сайта, его общей схематической картой.

Основная единица html — тег. С помощью тегов задаются конкретные элементы страницы. Так

обозначает текстовый абзац, а — изображение.

Тэги бывают одиночными и парными. После открывающего тега

всегда должен идти закрывающий —

. То же самое относится к контейнерам (div), заголовкам (h1-h6), таблицам (table) и другим объектам. Но, например, для разрыва строки —
, закрывающая метка не требуется.

Часто теги сопровождаются атрибутами, через которые элементам на странице присваиваются дополнительные параметры — цвет, размер, расположение на экране. Так, чтобы выровнять текст по правому краю, к метке p нужно добавить атрибут align со значением right.

Похожим образом на страницу добавляются ссылки.

Тег img также сопровождается атрибутами.

В примере задаются ширина и высота изображения, а также текст, который появится на экране, если браузер не сможет загрузить картинку.

Кавычки и знак равно — стандартный синтаксис для указания значений атрибутов.

Опечатки в html коде приводят ошибкам в отображении страницы. Если тег будет прописан неправильно, браузер просто не сможет определить, какой фрагмент нужно отобразить на экране. Но регистр написания тегов значения не имеет. Записи и воспринимаются браузером одинаково.

Базовая структура страницы и ее элементов

HTML документ состоит из заголовка и основного тела. Заголовок обозначается парным тегом . Внутри него размещаются все служебные метки и элементы. Вот основные из них:

  • title — название страницы;
  • description — краткое описание контента;
  • кодировка страницы;
  • ссылки на файлы со стилями;
  • java-скрипты, например, счетчики аналитики.

Непосредственно демонстрируемый пользователю контент размещается внутри тега . Все элементы — абзацы, таблицы, изображения и пр. последовательно прописываются в теле страницы.

HTML документ может также содержать неотображаемые комментарии. С их помощью веб разработчик может пояснить назначение конкретных элементов в коде или указать другую важную информацию. Синтаксис комментария выглядит так:

В начале документа всегда указывается его тип — и открывающий тег .

Базовая страница с заголовком и текстом будет выглядеть так:

Содержание тега title отображается в названии вкладки браузера.

Мета-тег description используется поисковыми системами. По нему поисковые роботы определяют содержание страницы, а текст тега выводится в описании сайта в результатах поиска.

Совместимость языков

#

Чаще всего html применяется совместно со следующими технологиями.

  1. PHP Инструмент для создания веб-приложений и служебных скриптов. На нем пишутся различные формы для сбора данных, счетчики аналитики и другие элементы страницы. PHP также используется для обработки сессии cookies, загрузки и интерпретации файлов, работы с базами данных.
  2. JavaScript. Язык программирования, приложения на котором легко встраиваются в html — как сами по себе, так и в виде ссылки на отдельный файл. Скрипты на JS делают сайт интерактивным. Пользователи могут загружать собственные посты и файлы, отправлять сообщения, получать оповещения о новых событиях и т.д.
  3. Ajax Предназначен для асинхронной работы с сервером, в том числе для обновления данных на странице без перезагрузки.

Плюсы и минусы html

Гипертекст обладает рядом весомых преимуществ, за счет которых остается актуальным средством разработки даже в 2022 году.

  1. Универсальность. Сейчас сайты на html, за редким исключением, одинаково отображаются во всех браузерах — от Microsoft Edge и Mozila FireFox до Safari и Google Chrome.
  2. Простота использования. Структура html понятна даже для новичка в программировании. К тому же браузеры не сильно “придираются” к синтаксису, в отличие от компиляторов других языков, где каждая точка должна быть на своем месте.
  3. Интегрируемость. В сочетании с CSS, PHP и JavaScript гипертекстовая разметка превращается в полноценный инструмент для разработки сайтов разной сложности, в том числе интернет-магазинов и новостных порталов.
  4. Поддержка. За обновление и развитие стандартов языка html отвечает Консорциум Всемирной Паутины (W3C).
  5. Готовые шаблоны и фреймворки. Сейчас вебмастерам доступно большое количество инструментов для создания сайтов на html — как небольших плагинов, так и масштабных фреймворков.

При всех плюсах, гипертекст обладает рядом недостатков..

  1. Ограниченные возможности. На чистом html можно написать только небольшие статичные сайты с простым дизайном. Для расширения доступного функционала нужно подключать скрипты и плагины на других языках.
  2. Необходимость постраничной проработки. Гипертекст не предполагает создания общей логики всего сайта. Даже шапка и футер прописываются отдельно на каждой странице.

Заключение

HTML — универсальное средство для разработки каркаса веб страницы. С его помощью на сайт добавляются тексты и мультимедийные объекты, создаются шаблоны верстки. Главный плюс гипертекстового языка — простота и универсальность синтаксиса. Сайты на html легко дорабатываются и модифицируются.

HTML, как правило, работает в связке с CSS, PHP и JavaScript. Вместе эти инструменты позволяют разрабатывать полноценные площадки с интерактивными пользовательскими функциями и сложными интерфейсами.

Почему HTML 5 не считают языком программирования?

Mikael

Потому что HTML5 — это не язык программирования, а язык разметки веб-страницы. Даже несмотря на то, что по сравнению с HTML 4.1 он стал намного семантичнее за счет новых тегов. Классический язык программирования это всегда скриптовые языки.

Условно говоря, если проводить аналогию с примером из жизни: html-разметка — это скелет человека; css — кожа, одежда, прическа и обувь; а javascript — это то, что человек делает (ходит, говорит и т.д.)

Так вот язык программирования всегда описывает, что сущность умеет делать, а вот какая она и из какого скелета состоит к языку программирования не относится.

HTML — язык программирования?

Внимание! Всё нижеизложенное является ИМХО’м автора.
Является ли HTML языком программирования?
Очень часто вижу я этот спор на просторах интернета, и, разумеется, большая часть спорщиков (кстати, обычно более опытных) считает, что нет, но доводом, как максимум, является неполнота по Тьюрингу. Но разве язык программирования обязан быть Тьюринг-полным? Нет, конечно, он должен быть полным по Тьюрингу, иначе кто им будет пользоваться? Но давайте обратимся в Википедию:

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

Компьютерная программа — последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины.

Исходя из вышенаписанного, я делаю вывод, что если я «создам» язык, содержущий 2 команды:
1) Hello_world — вывести «привет, мир»
2) Hello_hello_world — вывести «привет-привет, мир»

то это будет язык программирования! Да, он не делает ничего полезного. Но, комбинируя эти команды, можно получать разный результат, например:
Программа 1:
Hello_world
Hello_world

Вывод:
привет, мирпривет, мир

Программа 2:
Hello_world
Hello_hello_world
Hello_world

Вывод:
привет, мирпривет-привет, мирпривет, мир

Что-то я отошел в сторону. Итак, мы разобрались, что полнота по Тьюрингу хоть и является важной вещью, но не влияет на то, является ли язык языком программирования, простите за тавтологию.

Еще, я бы хотел сделать копипаст отсюда:

html — не исполняемый код.
браузеры его не исполняют, а обрабатывают, получая информацию о том, как должны располагаться элементы на странице.

Вот это уже интересно.
Я бы хотел привести в пример Haskell. Если мы запустим его интерпретатор(он, насколько я помню, входит в состав GHC), и подгрузим туда код с функциями факториала и чисел Фибоначчи (я очень оригинален, правда?), то он их обработает и будет ждать команду от пользователя. Заметили? Я употребил слово «обработает». Теперь интерпретатор «знает» как должен будет выглядеть результат, если пользователь введет с клавиатуры factorial(3). Браузер же обрабатывает код и, основываясь на нем, сразу же показывает результат пользователю. Да, в нем нет такой интерактивности, но разве код на HTML подразумевает, что пользователь будет давать браузеру какие-то команды?
К чему я это веду. Тот файлик (с кодом на Haskell) не содержит ничего выполняемого. Он только описывает функции (здравствуй, декларативный язык!), но мы ведь не скажем, что Haskell — не язык программирования в этом случае.

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

P.S. напоследок, хочу сказать, что хотел бы увидеть на Хабре подобную статью, но написанную человеком более компетентным, чем я.

  • языки программирования
  • html

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *