Является ли HTML языком программирования / Хабр
В последнее время всё чаще и чаще различные интернет ресурсы устраивают холивары на тему: является ли HTML языком програмирования или нет. Как водится, аргументов в пользу обеих точек зрения приводят немалое количество, поэтому я решил поставить для себя точку в этом ненужном споре.
Определение языка программирования
Язы́к программи́рования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.
Так сказано в Википедии, и большинство остальных ресурсов либо полностью употребляет это определение, либо вольно излагает его без потери смысла. Рассмотрим поподробнее составные части определения ЯП:
- Формальный язык — это множество конечных слов (строк, цепочек) над конечным алфавитом.
- Знаковая система — это система однообразно интерпретируемых и трактуемых сообщений/сигналов, которыми можно обмениваться в процессе общения. Иногда знаковые системы помогают структурировать процесс общения с целью придания ему некой адекватности в плане реакций его участников на те или иные «знаки». В качестве примера знаковой системы обычно приводят язык (как в письменной форме так и, в случае естественных языков, в форме речи).
- Компью́терная програ́мма — последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины.
- Ле́ксика — совокупность слов того или иного языка, части языка или слов, которые знает тот или иной человек или группа людей.
- Синтаксис — сторона языка программирования, которая описывает структуру программ как наборов символов (обычно говорят — безотносительно к содержанию). Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.
- Сема́нтика в программировании — дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей. В качестве инструментов построения таких моделей могут использоваться различные средства, например, математическая логика, λ-исчисление, теория множеств, теория категорий, теория моделей, универсальная алгебра. Формализация семантики языка программирования может использоваться как для описания языка, определения свойств языка, так и для целей формальной верификации программ на этом языке программирования.
- Язы́к — знаковая система, соотносящая понятийное содержание и типовое звучание (написание).
Более простым языком это может быть изложено так:
Язык программирования — множество заранее определенных, однообразных и понятных исполнителю (читай: интерпретатору/компилятору/компьютеру/программисту) инструкций, предназначенных для записи последовательно с целью их исполнения неким устройством, являющимся частью вычислительной машины.
Вот так громоздко и некрасиво получилось, зато без сложных слов. Мы вернемся к этому определению чуть позже.
Виды языков программирования
Часто употребляют также разделение на низкоуровневые и высокоуровневые языки. Эти виды отличаются «толщиной прослойки» между процессором и программистом. Говоря простыми словами — в низкоуровневых языках каждая инструкция представляет собой одну или небольшое число процессорных команд, а в высокоуровневом языке каждая инструкция это большой набор процессорных команд.
Рассмотрим поближе определения разных типов по версии Википедии:
- Аспе́ктно-ориенти́рованное программи́рование (АОП) — парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули.
- Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.
- Процедурное программирование — программирование на императивном языке, при котором последовательно выполняемые операторы можно собрать в подпрограммы, то есть более крупные целостные единицы кода, с помощью механизмов самого языка[1].
- Логи́ческое программи́рование — парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.
- Объе́ктно-ориенти́рованное программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.
- Функциона́льное программи́рование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).
- Мультипарадигма́льный язы́к программи́рования — как правило, язык программирования, который был разработан специально как инструмент мультипарадигмального программирования, то есть изобразительные возможности которого изначально предполагалось унаследовать от нескольких, чаще всего неродственных языков.
- Эзотерический язык программирования — язык программирования, разработанный для исследования границ возможностей разработки языков программирования, для доказательства потенциально возможной реализации некой идеи (так называемое «доказательство концепции», англ. proof of concept), в качестве произведения программного искусства[en], или в качестве шутки (компьютерного юмора).
Императивный и декларативный подход
Все языки программирования делятся на две группы: декларативные и императивные.
Программа на императивном языке программирования с математической точки зрения представляет собой общее решение поставленной задачи, иными словами, ответ на вопрос «как делать?». Это последовательность команд, которые должен выполнить исполнитель.
Программа на декларативном языке программирования является сочетанием формализованной в рамках языка программирования задачей и всех необходимых для её решения теорем, проще говоря, ответ на вопрос «что делать?». Конкретную последовательность выполняемых действий выполняет компилятор, или чаще интерпретатор – программа, в реальном времени выполняющая код программы без его преобразования в машинный код.
Полнота по Тьюрингу
В теории вычислимости исполнитель (множество вычисляющих элементов) называется тьюринг-полным, если на нём можно реализовать любую вычислимую функцию. Другими словами, для каждой вычислимой функции существует вычисляющий её элемент (например, машина Тьюринга) или программа для исполнителя, а все функции, вычисляемые множеством вычислителей, являются вычислимыми функциями (возможно, при некотором кодировании входных и выходных данных).
Название пошло от Алана Тьюринга, который придумал абстрактный вычислитель — машину Тьюринга и дал определение множества функций, вычислимых посредством машин Тьюринга.
Другими словами язык является полным по Тьюрингу, если любая вычислимая функция, которая Вам нужна, может быть записана на этом языке и решена его исполнителем.
Не полные по Тьюрингу языки также существуют, но так как их создают в основном в академических целях, то они малоизвестны и широко не применяются.
Ответим на несколько вопросов:
HTML — это язык?
Да. Он имеет свойства, присущие языкам.
HTML — соответствует определению языка программирования?
Да. Он имеет синтаксис, семантику, лексику, он является языком и попадает в категорию декларативных языков программирования.
HTML — является Тьюринг-полным языком?
Нет. Проще говоря на HTML можно совершить только некоторую ограниченную совокупность действий, интерпретируемых браузером.
Можно ли называть HTML языком программирования?
В зависимости от контекста — да, можно. Но при этом следует помнить, что с таким же успехом можно назвать ЯП и CSS и XML и SQL.
Другими словами данные языки формально могут быть названы языками программирования, но только с определенной долей скептицизма и с полным понимаем того, что эти языки не удовлетворяют всем требованиям.Является ли HTML языком программирования?
Нет. Задача обычного языка программирования в обработке данных, а задача HTML в отображении данных. Он не является языком программирования и на нем нельзя произвести вычислений.
Вывод: Мы можем назвать HTML языком программирования только в контексте формальной полемики. На деле он является языком гипертекстовой разметки и ни чем больше. Но читатель должен понимать, что если нет четко прописанных стандартов, то никто не запрещает сделать язык, идентичный по синтаксису с HTML, но интерпретируемый совершенно по другому таким образом, чтобы он был полным по Тьюрингу.
что это такое за язык разметки гипертекста
Перед тем как начать говорить об истории и развитии языка HTML, давайте ответим на вопрос, что это такое и для чего он создан. HTML — это язык разметки гипертекста. И хотя от многих можно услышать, что это язык сетевого программирования, на самом деле это не так. Подчеркнем, что это формат разметки, который используется для того, чтобы сформировать веб-документ из контента разного типа.
История HTMLСтандарт SGMLИстория языка разметки HTML начинается в 1986 году, когда Международная организация по стандартизации приняла стандарт SGML, который давал возможность выстраивать системы разметки любых разновидностей текста. Цель создания этого языка заключалась в том, чтобы размеченный текст можно было просматривать и редактировать про помощи разных программ на различных платформах. SGML нельзя назвать готовой системой для разметки текста, поскольку она определяет только правила записи элементов разметки. Технология SGML оказала влияние на множество разработок в компьютерной среде, но сам язык не стал сильно распространен.
Появление и развитие HTMLБританский ученый Тим Бернерс Ли в 1991 году, взяв за основу SGML, разработал технологию передачи гипертекстовой информации через сеть интернет и назвал ее HTML, что значит Hyper Text Markup Language (язык разметки гипертекста).
Первое время HTML соответствовал всем особенностям идеологии языка SGML. Позднее, в 1993 году была разработана новая версия HTML, которая называлась HTML 1.2. В этой версии использовалось более сорока тегов, из которых три тега были не рекомендованы к применению, поскольку они указывали на физические параметры текстового документа, тем самым противореча принципам SGML. Но эта версия по-прежнему была ориентирована на структурную и логическую разметку документа, хотя некоторые теги все же отчасти показывали, как страница будет выглядеть физически.
Серьезные изменения технология HTML получила в 1995 году, когда разработкой этого языка занялась компания W3C, которая представила версию языка 2.0, а позже и 3.0, ставшую настоящим прорывом. Современные версии HTML во многом основаны именно на третьей версии языка.
HTML — что это за форматОсновным элементом в этом языке разметки являются теги. Теги представляют собой парную (как правило) конструкцию, которая нужна для того, чтобы задать определенные свойства тексту либо каким-то другим информационным данным, находящимся внутри этой конструкции. К примеру, если в тексте мы вставим следующую конструкцию — [b]Я учу HTML [/b], то надпись «Я учу HTML» будет выделена жирным шрифтом. А если мы напишем текст, окружив его конструкцией [font color=»red»]…[/font], то получим текст красного цвета.
HTML редакторыА теперь поговорим о наиболее распространенных редакторах для работы с HTML.
Adobe Go Live CSЭто универсальная программа для профессионального создания и администрирования веб-сайтов. Удобство программ такого уровня заключается в том, что многие процессы в них автоматизированы, что существенно облегчает и ускоряет процесс работы с HTML-кодом. К примеру, благодаря функции интеллектуального поиска и замены можно легко и быстро заменить определенные теги либо атрибуты на нужных страницах. Также преимущество этого редактора заключается и в том, что он позволяет оптимизировать код, который составлен в других программах, удаляя излишние теги и пробелы.
Notepad ++Это неплохой по функционалу текстовый редактор, применять который можно как улучшенную замену стандартного блокнота, а также использовать его как редактор для HTML-страниц. Он поддерживает работу с макросами, проверяет правильность кода и позволяет устанавливать дополнительные плагины. Это приложение особенно будет удобно для новичков, поскольку обладает очень простым и понятным управлением. При этом программа работает с хорошим быстродействием и затрачивает минимум ресурсов ПК.
AptanaЭто достаточно мощное средство для работы с CSS, HTML и JavaScript. Если установить дополнительные плагины, то этот редактор позволяет работать и с другими языками сетевого программирования. У этого приложения очень широкие функциональные возможности, которые позволяют как создавать небольшие лендинг-страницы, так и верстать более серьезные веб-проекты.
404: Страница не найдена
Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы извиняемся за любые неудобства.
Что я могу сделать сейчас?
Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:
Поиск- Узнайте последние новости.
- Наша домашняя страница содержит самую свежую информацию о Java-разработке.
- Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, TheServerSide.com.
- Если вам нужно, свяжитесь с нами, мы будем рады услышать от вас.
Просмотр по категории
Архитектура приложения
- Прочная связь между законом Конвея и микросервисами
Хотя закон Конвея — это концепция, которой уже несколько десятков лет, некоторые утверждают, что спешка отрасли по внедрению микросервисов заставляет ее принимать …
- Как выжить, когда царит развитие Waterfall
Несмотря ни на что, методология Waterfall поддерживает бесчисленное количество команд разработчиков программного обеспечения. …
- Необработанный, но растущий потенциал банковского обслуживания без ядра
Несмотря на то, что концепция банковского обслуживания без ядра все еще является новой концепцией, она демонстрирует большой потенциал для освобождения банков от жестких программных систем, которые. ..
Качество ПО
- Тестовые фреймворки и примеры для модульного тестирования кода Python
Модульное тестирование является важным аспектом разработки программного обеспечения. Команды могут использовать Python для модульного тестирования, чтобы оптимизировать преимущества Python…
- Атрибуты эффективной стратегии тестирования базы данных
Команды должны внедрить правильную стратегию тестирования базы данных для оптимизации результатов. Изучите эффективные атрибуты тестирования базы данных…
- Обновления Java 20 Project Loom готовят почву для Java LTS
Java 20 повторно инкубирует две функции масштабируемости Project Loom, что делает их главными кандидатами на то, чтобы стать стандартом в сентябрьском выпуске Java …
Облачные вычисления
- Как работает маршрутизация на основе задержки в Amazon Route 53
Если вы рассматриваете Amazon Route 53 как способ уменьшить задержку, вот как работает этот сервис.
- 4 рекомендации, чтобы избежать привязки к поставщику облачных услуг
Без надлежащего планирования организация может оказаться в ловушке отношений с облачным провайдером. Следуйте этим …
- Подходит ли вам облачная стратегия?
Стратегия, ориентированная на облачные технологии, имеет свои преимущества и недостатки. Узнайте, как избежать рисков и построить стратегию, которая …
Безопасность
- Microsoft и Fortra получили судебный приказ о срыве Cobalt Strike
Microsoft, Fortra и Центр обмена и анализа медицинской информации объявили о получении судебного постановления в попытке …
- 5 угроз безопасности ChatGPT на предприятии
Независимо от того, находится ли ChatGPT в руках киберпреступников или невежественных конечных пользователей, возникают новые риски безопасности.
- Основные тренды и темы RSA Conference 2023
Джек Поллер из Enterprise Strategy Group излагает свой выбор, чтобы получить максимальную отдачу от конференции RSA 2023, от основных докладов до . ..
ПоискAWS
- AWS Control Tower стремится упростить управление несколькими учетными записями
Многие организации изо всех сил пытаются управлять своей огромной коллекцией учетных записей AWS, но Control Tower может помочь. Услуга автоматизирует…
- Разбираем модель ценообразования Amazon EKS
В модели ценообразования Amazon EKS есть несколько важных переменных. Покопайтесь в цифрах, чтобы убедиться, что вы развернули службу…
- Сравните EKS и самоуправляемый Kubernetes на AWS
Пользователи
AWS сталкиваются с выбором при развертывании Kubernetes: запустить его самостоятельно на EC2 или позволить Amazon выполнить тяжелую работу с помощью EKS. См…
Является ли HTML языком программирования?
спросил
Изменено 1 год, 7 месяцев назад
Просмотрено 273 тыс. раз
210
голосов
В нынешнем виде этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подкреплены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, снова открыть, посетите справочный центр для получения инструкций.
Закрыт 11 лет назад.
Заблокировано . Этот вопрос и ответы на него заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия.
Я думаю, вопрос не требует пояснений, но мне интересно, можно ли считать HTML языком программирования (очевидно, «L» означает язык).
Причина вопроса более прагматична — я составляю резюме и не хочу выглядеть дураком, когда перечисляю такие вещи, как HTML и XML, по языкам, но не могу понять, как их классифицировать.
9
507
голосов
Нет, HTML не является языком программирования. «М» означает «Разметка». Как правило, язык программирования позволяет вам описать какой-то процесс выполнения чего-либо, тогда как HTML — это способ добавления контекста и структуры к тексту.
Если вы хотите добавить больше алфавитного супа в свое резюме, не классифицируйте их вообще. Просто сложите их в большую кучу под названием «Технологии» или как вам угодно. Помните, однако, что все, что вы перечисляете, является справедливой игрой для вопроса.
HTML настолько распространен, что я ожидаю, что почти любой специалист по технологиям уже знает его (хотя и не такие вещи, как CSS и т. д.), так что вы можете подумать о том, чтобы не перечислять все инициализмы, с которыми вы когда-либо сталкивались. Я склонен рассматривать резюме, в котором перечислено слишком много вещей, как подозрительные, поэтому я задаю больше вопросов, чтобы отсеять вещи, которые не должны быть перечислены. 🙂
Однако, если ваш опыт работы с HTML включает серьезные элементы веб-дизайна, включая Ajax, JavaScript и т. д., вы можете рассказать об этом в разделе «Опыт».
18
80
голосов
ДА, декларативный язык программирования.
Вы действительно хотите перечислить самые важные вещи, которые вы знаете, связанные с работой, на которую вы претендуете, в своем резюме. Если вы перечисляете ASP.NET, но не перечисляете HTML, даже если это несколько очевидно, есть много менеджеров и/или типов HR, которые предполагают, что вы не знаете HTML, поскольку его нет в списке. У меня это случалось со мной раньше.
Обновление. Некоторые говорят, что нет, это не язык программирования, и вы можете не согласиться со мной в этом, но независимо от резюме, это ЯВЛЯЕТСЯ языком программирования. Вы заставляете HR-специалистов просматривать ваше резюме еще до того, как его увидит менеджер по найму. Если менеджер говорит, что вам нужно знать HTML, а его нет в разделе «Языки программирования», тогда сотрудник отдела кадров может не принять во внимание ваше резюме, думая, что вы его не знаете, потому что его нет в списке.
Обновление от 08.06.2012. Любая инструкция, предписывающая компьютеру что-то сделать, является языком программирования. Так что даже после всех этих лет я все еще остаюсь при своем ответе. HTML — это язык программирования. Что-то, что не является языком программирования, было бы XML.
38
53
голосов
Нет, подсказка в букве М — это язык разметки.
4
33
голосов
На каком-то уровне Крис Пичман прав. SQL не является полным по Тьюрингу (по крайней мере, без хранимых процедур), но люди будут указывать это как язык, TeX является полным по Тьюрингу, но большинство людей считают его языком разметки.
Сказав это: если вы просто подаете заявку на работу, не аргументируя формальную логику, я бы просто перечислил их все как технологии. Такие вещи, как .NET, не являются языками, но, вероятно, также будут перечислены.
3
21
голосов
«М» означает «Наценка». Это «язык разметки», а не язык программирования. Некоторые люди не согласятся с этим, но я считаю, что если в нем отсутствуют логические конструкции (условное ветвление, итерация и т. д.), то это не совсем язык программирования.
Что касается резюме, я бы предложил поместить HTML и XML в раздел вроде «Технологии». У меня обычно есть такой раздел, где я перечисляю такие вещи, как программное обеспечение для контроля версий, ОС, для которых я разработал, системы сборки и т. д.
1
20
голосов
Нет, HTML не является языком программирования. По этой причине это называется «разметкой».
Если вы хотите сказать, что HTML — это язык программирования, вы могли бы также включить такие вещи, как текстовые документы, поскольку они тоже основаны на ML или «языке разметки».
Проще говоря, HTML определяет содержание!
3
18
голосов
Думаю, не совсем язык программирования, а именно то, что говорит его название: язык разметки. Мы не можем программировать, используя только чистый HTML. Но просто аннотируйте, как представить контент.
Но если вы рассматриваете программирование как указание компьютеру, как представлять содержимое, то это язык программирования.
2
17
голосов. , который подразумевает тезис Черча-Тьюринга, представляет собой набор всех вычислимых по Тьюрингу функций.
По этому определению HTML не является языком программирования, даже декларативным. Это, как объяснили другие, язык разметки.
Но людей, просматривающих ваше резюме, вполне может не волновать такое формальное отличие. Я бы последовал хорошему совету, данному другими, и перечислил бы его в разделе типа «Технологии».
6
15
голосов
Я думаю, что это определенно имеет место в резюме. Знание HTML является ценным, и действительно многое нужно знать, что касается вопросов совместимости между браузерами и стандартов, которым следует следовать.
Я бы не стал указывать HTML в разделе «языки программирования» рядом с C# или чем-то подобным, но стоит отметить ваш опыт.
13
голосов
Нет — в IT существует большое предубеждение против веб-дизайна; но в этом случае «настоящие» программисты находятся на довольно твердой почве.
Если вы проделали большую работу в области веб-дизайна, вы, вероятно, использовали JavaScript, поэтому вы можете записать это в графу «языки программирования»; если вы также хотите перечислить HTML, то я согласен с ответом, который предлагает «Технологии».
Но если вы не нацелились на агентов, которые пытаются поставить галочки, а не найти вам хорошую работу, голый список вещей, которые вы использовали, на самом деле не выглядит так уж хорошо. Вам лучше перечислить проекты, над которыми вы работали, и подробно описать технологии, которые вы использовали в каждом из них; это демонстрирует, что у вас есть реальный опыт их использования, а не просто то, что вы знаете несколько модных словечек.
11
голосов
Я обхожу эту проблему тем, что в моем резюме нет раздела «языки программирования». Вместо этого я обозначаю его просто как «языки», а в конце добавляю HTML и CSS. Я бы предпочел облегчить жизнь рецензентам, чтобы они могли видеть, соответствуют ли мои требования всем их требованиям.
Только дураки будут игнорировать кандидата, потому что он или она указали HTML в графе «языки», а не какой-либо другой ярлык, тем более, что отраслевого стандарта нет. А кто хочет работать на дураков?
2
9
голосов
Ну, L для языка, но это не подразумевает язык программирования. В конце концов, английский или французский тоже (естественные) языки! 😉
Как было сказано выше, поместите их в вспомогательный раздел, технология кажется хорошим термином.
(Глядя на свое собственное резюме, которое давно не обновлялось) Я создал раздел под названием «Языки», так что не могу ошибиться… 😀
Я добавил «(X)HTML и CSS , XML/DTD/Schema и SVG» в конце раздела, четко разделенные.
На французском языке у меня есть раздел «Языки» (программирование и разметка) и еще один «Языки» (французский/английский). В английской версии я озаглавил оба слова «Языки», что, как мне кажется, выглядит неуклюже, хотя контекст поясняет это. Я должен найти лучшую формулировку.
9
голосов
HTML никоим образом не является языком программирования.
Языки программирования имеют дело с «функциями обработки» и т. д. HTML просто имеет дело с визуальным интерфейсом веб-страницы, где фактическое программирование обрабатывает обработку. PHP например.
Если кто-то действительно разбирается в программировании, я действительно не понимаю, как люди могут ошибочно принимать HTML за настоящий язык программирования.
4
7
голосов.