В последнее время всё чаще и чаще различные интернет ресурсы устраивают холивары на тему: является ли HTML языком програмирования или нет. Как водится, аргументов в пользу обеих точек зрения приводят немалое количество, поэтому я решил поставить для себя точку в этом ненужном споре.
Определение языка программирования
Язы́к программи́рования - формальная знаковая система , предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия , которые выполнит исполнитель (компьютер) под её управлением.Так сказано в Википедии , и большинство остальных ресурсов либо полностью употребляет это определение, либо вольно излагает его без потери смысла. Рассмотрим поподробнее составные части определения ЯП:
- Формальный язык - это множество конечных слов (строк, цепочек) над конечным алфавитом.
- Знаковая система - это система однообразно интерпретируемых и трактуемых сообщений/сигналов, которыми можно обмениваться в процессе общения. Иногда знаковые системы помогают структурировать процесс общения с целью придания ему некой адекватности в плане реакций его участников на те или иные «знаки». В качестве примера знаковой системы обычно приводят язык (как в письменной форме так и, в случае естественных языков, в форме речи).
- Компью́терная програ́мма - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины.
- Ле́ксика - совокупность слов того или иного языка, части языка или слов, которые знает тот или иной человек или группа людей.
- Синтаксис - сторона языка программирования, которая описывает структуру программ как наборов символов (обычно говорят - безотносительно к содержанию). Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.
- Сема́нтика в программировании - дисциплина, изучающая формализации значений конструкций языков программирования посредством построения их формальных математических моделей. В качестве инструментов построения таких моделей могут использоваться различные средства, например, математическая логика, λ-исчисление, теория множеств, теория категорий, теория моделей, универсальная алгебра. Формализация семантики языка программирования может использоваться как для описания языка, определения свойств языка, так и для целей формальной верификации программ на этом языке программирования.
- Язы́к - знаковая система, соотносящая понятийное содержание и типовое звучание (написание).
Язык программирования - множество заранее определенных, однообразных и понятных исполнителю (читай: интерпретатору/компилятору/компьютеру/программисту) инструкций, предназначенных для записи последовательно с целью их исполнения неким устройством, являющимся частью вычислительной машины. Также язык программирования должен обладать рядом особенностей: инструкций должно быть ограниченное число, и все их должны знать; инструкции должны выстраиваться определенным образом для получения определенных результатов, и все должны об этом знать; должны существовать правила написания инструкций и все должны их знать; каждая конструкция языка должна однозначно соотносить то что написано с тем, что требовалось обозначить.
Вот так громоздко и некрасиво получилось, зато без сложных слов. Мы вернемся к этому определению чуть позже.
Виды языков программирования
Часто употребляют также разделение на низкоуровневые и высокоуровневые языки. Эти виды отличаются «толщиной прослойки» между процессором и программистом. Говоря простыми словами - в низкоуровневых языках каждая инструкция представляет собой одну или небольшое число процессорных команд, а в высокоуровневом языке каждая инструкция это большой набор процессорных команд.
Рассмотрим поближе определения разных типов по версии Википедии :
- Аспе́ктно-ориенти́рованное программи́рование (АОП) - парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули.
- Структу́рное программи́рование - методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.
- Процедурное программирование - программирование на императивном языке, при котором последовательно выполняемые операторы можно собрать в подпрограммы, то есть более крупные целостные единицы кода, с помощью механизмов самого языка.
- Логи́ческое программи́рование - парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.
- Объе́ктно-ориенти́рованное программи́рование (ООП) - парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков с прототипированием вместо классов используются объекты-прототипы.
- Функциона́льное программи́рование - раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).
- Мультипарадигма́льный язы́к программи́рования - как правило, язык программирования, который был разработан специально как инструмент мультипарадигмального программирования, то есть изобразительные возможности которого изначально предполагалось унаследовать от нескольких, чаще всего неродственных языков.
- Эзотерический язык программирования - язык программирования, разработанный для исследования границ возможностей разработки языков программирования, для доказательства потенциально возможной реализации некой идеи (так называемое «доказательство концепции», англ. proof of concept), в качестве произведения программного искусства, или в качестве шутки (компьютерного юмора).
Императивный и декларативный подход
Все языки программирования делятся на две группы: декларативные и императивные .
Программа на императивном языке программирования с математической точки зрения представляет собой общее решение поставленной задачи, иными словами, ответ на вопрос «как делать?». Это последовательность команд, которые должен выполнить исполнитель.
Программа на декларативном языке программирования является сочетанием формализованной в рамках языка программирования задачей и всех необходимых для её решения теорем, проще говоря, ответ на вопрос «что делать?». Конкретную последовательность выполняемых действий выполняет компилятор, или чаще интерпретатор – программа, в реальном времени выполняющая код программы без его преобразования в машинный код.
Полнота по Тьюрингу
В теории вычислимости исполнитель (множество вычисляющих элементов) называется тьюринг-полным , если на нём можно реализовать любую вычислимую функцию. Другими словами, для каждой вычислимой функции существует вычисляющий её элемент (например, машина Тьюринга) или программа для исполнителя, а все функции, вычисляемые множеством вычислителей, являются вычислимыми функциями (возможно, при некотором кодировании входных и выходных данных).Название пошло от Алана Тьюринга , который придумал абстрактный вычислитель - машину Тьюринга и дал определение множества функций, вычислимых посредством машин Тьюринга.
Другими словами язык является полным по Тьюрингу , если любая вычислимая функция, которая Вам нужна, может быть записана на этом языке и решена его исполнителем.
Не полные по Тьюрингу языки также существуют, но так как их создают в основном в академических целях, то они малоизвестны и широко не применяются.
HTML (от англ. HyperText Markup Language - язык гипертекстовой разметки) - стандартный язык разметки документов в сети интернет. Является, по сути, главным и единственным языком для построения веб-страниц, который умеет вмещать скрипты и элементы других языков: Java, php, CSS и др.
Хотя теоретическую часть изучения этого языка можно познать за какие-то 2-3 месяца, практические навыки обычно разрабатываются всю жизнь, ведь это один из самых динамичных языков программирования, который постоянно развивается, дополняется и модернизируется, тем самым принуждая веб-программиста улучшать свои навыки.
Любой пользователь может в реальном времени узнать, на каком языке написана страница в сети: нужно кликнуть ПКМ по пустому пространству и выбрать "Просмотр кода страницы" - языки страницы будут находиться в теге
Чтобы понять, HTML 5, нужно разобраться в том, чем является язык XHTML...
XHTML - подобный языку HTML язык разметки веб-страниц, чаще всего используемый для построения сложных веб-приложений, но обладающий намного более сложным синтаксисом и чувствительностью к ошибкам. Когда говорят о важности структуры документа, то всегда упоминают XHTML, а не HTML.
Изучение XHTML не займет намного больше времени, чем изучение HTML, однако его эффективность на фоне появления нового языка - HTML 5 - заметно падает.
Когда умные ребята, которые всю жизнь изучали языки веб-программирования, поняли, что постоянное метание между простым для глаза HTML и сложным, но правильным XHTML просто надоедает - они решили создать нечто универсальное, что-то, что будет содержать синтаксические разметки и того и другого языков, при этом не будет терять качества. Так и был создан HTML 5, который официально находится в стадии разработки, но, по сути, является рабочим стандартом (англ. HTML Living Standard).
Прежде чем приступить к изучению чего-то и трате своего времени, нужно определиться с целями. Если цель - сверстать пару страниц или сделать сайт-визитку, то вряд ли потребуется даже покупка учебников: хватит одного-двух месяцев усердной работы с использованием интернет-ресурсов по изучению HTML и CSS (Таблицы каскадных стилей - язык описания внешнего вида документа), и сайт будет готов.
Если же человек хочет заняться веб-программированием и познать тонкости ручной верстки, то времени он потратит примерно в 10-15 раз больше. Дабы понять синтаксис всех языков типа SGML, нужно будет изучить сначала XML (язык структурирования веб-документов со сложным синтаксисом), потом заняться изучением HTML 5 и попутно (так как эти два языка неразлучны) заняться изучением CSS, а в конце "залить" все это хорошим Java.
Многие ошибочно предполагают, что для успешной разработки веб-ресурсов требуется знать 1-2 языка. Это не так. Знание такого малого количества языков делает веб-программиста "неповоротливым" - неспособным мыслить креативно.
Чтобы преуспеть в веб-программировании, требуется сила воли. Ну, и следованием советам не помешает.
Начинать изучение языков программирования стоит с теории этих языков - сначала будущему "верстальщику" нужно разобраться в концепции этих языков, в их функциях, узнать, в между HTML и XML и т.д.
В процессе изучения необходимо использовать медиа-ресурсы: сегодня существует множество образовательных сайтов, на которых информация представлена в удобоваримом виде, а, следовательно, изучение языка будет приносить не только пользу, но и удовольствие.
Практика. После изучения "теоретической базы", нужно незамедлительно приступать к практике - блокнот или редактор типа Notepad++ должен быть открыт на компьютере 24 часа в сутки.
Язык программирования - так же, как английский или французский - не будет развиваться, если его не практиковать.
Я решил уделить больше внимания новичкам, желающим приобрести знания в области сайтостроения. На это меня подтолкнула моя преподавательница, которая допускала уж очень много ошибок в методичках к лабораторным работам. Я бы с удовольствием бы глянул на тот ресурс, с которого была взята учебная инфа, и оставил бы там пару строк своего мнения. Но сейчас не об этом. В своей первой лекции я расскажу о том
Из чего состоит структура HTML-документа
Тег
сообщает о том, что начинается структура html-документа,
— что заканчивается. Между тегами
хранится в большей части информация для браузера и поисковых систем. В тегах
Теперь немного поясню. Все теги (тэг — элемент языка разметки гипертекста ) делятся на два типа «одиночные» и «закрывающиеся». Кроме того теги заключаются в следующие символы < и > , именно они отличают тег от обычного текста html . Рассмотрим несколько самых простых «одиночных» тегов:
— тег, который отвечает за перенос на новую строку, в том месте, где установлен данный тег. Рассмотрим код с использованием этого тега.
А это мой первый сайт.
Результат можно посмотреть .
— тег, который рисует горизонатльную линию. Этот тег относится к блочным элементам, линия всегда начинается с новой строки. Имеет 5 атрибутов:
- align — Определяет выравнивание линии. Может принимать значение left, center, right.
- color — Задаёт цвет линии.
- noshade — Рисует линию без трехмерных эффектов.
- size — Задаёт толщину линии.
- width — Задаёт ширину линии.
Код с использованием тега
:
А это мой первый сайт.
Визуальный пример находится .
Ещё один «одиночный» тег — это . Данный тег спользуются для хранения информации предназначенной для браузеров и поисковых систем. Поисковые системы обращаются к метатегам для получения описания сайта, ключевых слов и других данных. Разрешено использовать неограниченное число метатегов, все они должны находится между и . Параметры любого метатега имеют вид «имя=значение», который определяется ключевыми словами content , name или http-equiv . Т.к. метатеги предназначены для машин, никакого визуального изменения они не вносят, поэтому я приведу лишь исходный код:
Эта строка говорит о том, что создатель страницы считает, что на странице используется кодировка UTF-8. В HTML5 всё стало проще, для того, чтобы указать кодировку, достаточно лишь следующей строки:
Cуществуют и другие одиночные теги (,
,