Чи є HTML мовою програмування

Останнім часом все частіше і частіше різні інтернет ресурси влаштовують холівари на тему: чи є HTML мовою програмирования чи ні. Як водиться, аргументів на користь обох точок зору призводять чимала кількість, тому я вирішив поставити для себе крапку в цьому непотрібному суперечці.
 
 Визначення мови програмування.
 Мова програмування формальна знакова система , призначена для запису комп'ютерних програм. Мова програмування визначає набір лексичних, синтаксичних і семантичних правил, які задають зовнішній вигляд програми і дії , які виконає виконавець (комп'ютер) під її управлінням.
 
Так сказано в Вікіпедії , і більшість інших ресурсів або повністю вживає це визначення, або вільно викладає його без втрати сенсу. Розглянемо детальніше складові частини визначення ЯП:
 
     
Формальна мова — це безліч кінцевих слів (рядків, ланцюжків) над кінцевим алфавітом.
 Знакова система — це система одноманітно інтерпретуються і трактованих повідомлень / сигналів, якими можна обмінюватися в процесі спілкування. Іноді знакові системи допомагають структурувати процес спілкування з метою надання йому якоїсь адекватності в плані реакцій його учасників на ті чи інші «знаки». Як приклад знакової системи зазвичай призводять мова (як у письмовій формі так і, в разі природних мов, у формі мови).
 Комп'ютерна програма — послідовність інструкцій, призначених для виконання пристроєм управління обчислювальної машини.
 Лексика — сукупність слів тієї чи іншої мови, частини мови або слів, які знає той чи інший людина або група людей.
 Синтаксис — сторона мови програмування, яка описує структуру програм як наборів символів (зазвичай кажуть — безвідносно до змісту). Синтаксису мови протиставляється його семантика. Синтаксис мови описує «чистий» мову, в той же час семантика приписує значення (дії) різним синтаксичним конструкціям.
 Семантика в програмуванні — дисципліна, що вивчає формалізації значень конструкцій мов програмування за допомогою побудови їх формальних математичних моделей. Як інструменти побудови таких моделей можуть використовуватися різні засоби, наприклад, математична логіка, λ-числення, теорія множин, теорія категорій, теорія моделей, універсальна алгебра. Формалізація семантики мови програмування може використовуватися як для опису мови, визначення властивостей мови, так і для цілей формальної верифікації програм на цій мові програмування.
 Мова — знакова система, що співвідносяться понятійний зміст і типове звучання (написання).
 
Більш простою мовою це може бути викладено так:
 
 Мова програмування — безліч заздалегідь визначених, одноманітних і зрозумілих виконавцю (читай: інтерпретатору / компілятору / комп'ютера / програмісту) інструкцій, призначених для запису послідовно з метою їх виконання якимсь пристроєм, що є частиною обчислювальної машини. Також мова програмування повинна володіти рядом особливостей: інструкцій має бути обмежене число, і всі їх повинні знати; інструкції повинні вибудовуватися певним чином для отримання певних результатів, і всі повинні про це знати; повинні існувати правила написання інструкцій і всі повинні їх знати; кожна конструкція мови повинна однозначно співвідносити те що написано з тим, що було потрібно позначити.
 
Ось так громіздко і негарно вийшло, зате без складних слів. Ми повернемося до цього визначення трохи пізніше.
 
 Види мов програмування.
 
Часто вживають також поділ на низькорівневі і високорівневі мови. Ці види відрізняються «товщиною прошарку» між процесором і програмістом. Говорячи простими словами — в низькорівневих мовах кожна інструкція являє собою одну або невелике число процесорних команд, а в високорівневої мовою кожна інструкція це великий набір процесорних команд.
 
Розглянемо ближче визначення різних типів за версією Вікіпедії :
 
     
Аспектно-орієнтоване програмування (АОП) — парадигма програмування, заснована на ідеї поділу функціональності для поліпшення розбиття програми на модулі.
 Структурне програмування — методологія розробки програмного забезпечення, в основі якої лежить уявлення програми у вигляді ієрархічної структури блоків. Запропоновано в 70-х роках XX століття Е. Дейкстрой, розроблена і доповнена Н. Віртом.
 Процедурне програмування — програмування імперативною мовою, при якому послідовно виконувані оператори можна зібрати в підпрограми, тобто більші цілісні одиниці коду, за допомогою механізмів самої мови [1].
 Логічне програмування — парадигма програмування, заснована на автоматичному доказі теорем, а також розділ дискретної математики, що вивчає принципи логічного виведення інформації на основі заданих фактів і правил виводу. Логічне програмування засноване на теорії та апараті математичної логіки з використанням математичних принципів резолюцій.
 Об'єктно-орієнтоване програмування (ООП) — парадигма програмування, в якій основниміконцепціямі є поняття об'єктів і класів. У разі мов з прототіпірованії замість класів використовуються об'єкти-прототипи.
 Функціональне програмування — розділ дискретної математики і парадигма програмування, в якій процессвичісленія трактується як обчислення значень функцій в математичному розумінні останніх (на відміну від функцій як підпрограм в процедурному програмуванні).
 мультипарадигмальной мова програмування — як правило, мова програмування, який був розроблений спеціально як инструментмультипарадигмального програмування, тобто образотворчі можливості якого спочатку передбачалося успадкувати від декількох, найчастіше неспоріднених мов.
 Езотеричний мова програмування — мова програмування, розроблений для дослідження кордонів можливостей розробки мов програмування, для доказу потенційно можливої ​​реалізації певної ідеї (так зване «доказ концепції», англ. proof of concept), в якості твору програмного мистецтва [en], або як жарт (комп'ютерного гумору).
 
 Імперативний і декларативний підхід
 
Всі мови програмування діляться на дві групи: декларативні і імперативні .
 
Програма на імперативний мові програмування з математичної точки зору являє собою спільне рішення поставленого завдання, іншими словами, відповідь на питання «як робити?». Це послідовність команд, які повинен виконати виконавець.
 
Програма на декларативному мовою програмування є поєднанням формалізованої в рамках мови програмування завданням і всіх необхідних для її вирішення теорем, простіше кажучи, відповідь на питання «що робити?». Конкретну послідовність виконуваних дій виконує компілятор, або частіше інтерпретатор — програма, в реальному часі виконує код програми без його перетворення в машинний код.
 
 Повнота по Тьюрингу.
У теорії вичіслімості виконавець (безліч що обчислюють елементів) називається Тьюринг-повним , якщо на ньому можна реалізувати будь-яку обчислювана функція. Іншими словами, для кожної обчислюваної функції існує обчислює її елемент (наприклад, машина Тьюринга ) або програма для виконавця, а всі функції, обчислювані безліччю обчислювачів, є обчислювана функція (можливо, при деякому кодуванні вхідних і вихідних даних).
Назва пішла від Алана Тьюринга , який придумав абстрактний обчислювач — машину Тьюринга і дав визначення безлічі функцій, вичіслімих допомогою машин Тьюринга.
Іншими словами мова є повним по Тьюрингу , якщо будь-яка обчислювана функція, яка Вам потрібна, може бути записана на цій мові і вирішена його виконавцем.
 
 
 
 Чи не повні по Тьюрингу мови також існують, але так як їх створюють в основному в академічних цілях, то вони маловідомі і широко не застосовуються.
 
 Відповімо на кілька питань:
 
     
HTML — це мова? Так. Він має властивості, притаманні мовам.
 HTML — відповідає визначенню мови програмування? Так. Він має синтаксис, семантику, лексику, він є мовою і потрапляє в категорію декларативних мов програмування.
 HTML — є Тьюринг-повною мовою? Ні. Простіше кажучи на HTML можна здійснити тільки деяку обмежену сукупність дій, інтерпретованих браузером.
 Чи можна називати HTML мовою програмування? Залежно від контексту — так, можна. Але при цьому слід пам'ятати, що з таким же успіхом можна назвати ЯП і CSS і XML і SQL. Іншими словами дані мови формально можуть бути названі мовами програмування, але тільки з певною часткою скептицизму і з повним розуміємо того, що ці мови не задовольняють всім вимогам.
 Чи є HTML мовою програмування? Ні. Завдання звичайного мови програмування в обробці даних, а завдання HTML у відображенні даних. Він не є мовою програмування і на ньому не можна провести обчислень.
 
 
 Висновок: Ми можемо назвати HTML мовою програмування тільки в контексті формальної полеміки. На ділі він є мовою гіпертекстової розмітки і ні чим більше. Але читач повинен розуміти, що якщо немає чітко прописаних стандартів, то ніхто не забороняє зробити мову, ідентичний по синтаксису з HTML, але інтерпретується зовсім інакше таким чином, щоб він був повним по Тьюрингу.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.