Как стать автором
Обновить

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. напоследок, хочу сказать, что хотел бы увидеть на Хабре подобную статью, но написанную человеком более компетентным, чем я.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.