| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Флейм > Стоит ли считать HTML к языком программирования? |
| Автор: 4ell 10.12.2012, 22:36 |
| Забавная ситуация вышла у меня сегодня в моем учебном заведении. Не будем тыкать пальцами. С сегодняшнего дня к моему плану добавился предмет под названием "Компьютерные сети и их администрирование". Но как ни странно большая часть курса будет посвящена веб технологиям и нас будут "учить" пяти "языкам программирования":
Даже не знаю что и думать, либо я дурак, либо программистами стоит считать всех кто "написал" hello world на php. Ладно javscript, ладно php. Но ведь html, css, sql ну ни в какие ворота! |
| Автор: CompWorm 10.12.2012, 23:32 |
| html - с классической точки зрения не является языком программирования, а всего лишь сполобом разметки страницы. так написано во всех учебниках. это скорее интерпретируемые программой, в данном случае браузером, данные. с другой стороны можно впасть в заблуждение и подкопаться, что он представляет собой набор инструкций, задающих поведение программы-хоста, отрисовывающей страницу... такой подкоп неверен, ибо тогда любой конфигурационный файл можно считать программой, а если конфиг записан в XML Ошибка тех, кто так говорит заключается в попытке причислить "язык разметки" к скриптам, то есть "языкам сценария". сами по себе "сценарные языки" являются языками программирования, но в чём отличие их от классических ЯПов - это уже полемика на уровне религиозных воин... можно сюда ещё дотнет вспомнить с его байткодом и растянуть палемику на 100 страниц... вывод - препод неправ. пусть покажет хоть в одном издании где HTML - ЯП. |
| Автор: CompWorm 10.12.2012, 23:56 |
| жаль что развалили образование... нас вот учили цитатами с википедии в инсте проблема в том что в преподы часто берут зелёных выпускников и аспирантов, проплативших аспирантуру. мне вот сразу по окончанию инста предложили на бирже труда в преподы пойти. я не хотел, но обходной листок подписать таки надо было))) так я из этого учебного заведения еле выбрался - всеми правдами и неправдами не хотели отпускать и соглашались на всё! вместе с тем преподавательского образования у меня нет хрен знает чему их учить. был круче случай - в инсте один из наших постоянных прогульщиков прополз в аспирантуру и его там, как и всех на второй год запрягли преподавать)))) мы уссывались со смеху))))))))) я это к чему, 4ell - не наезжай на препода, время щас такое. сам учись |
| Автор: Данкинг 10.12.2012, 23:57 |
| А по javascript какие вообще сомнения могут быть? |
| Автор: CompWorm 11.12.2012, 00:03 |
стало любопытно, https://www.google.ru/search?q=%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0+%D1%8F%D0%B7%D1%8B%D0%BA+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F+HTML&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a - два каких-то самопальных без авторов и прочей атрибутики есть. возможно это они в свете HTML 5 так решили превознести его |
| Автор: 4ell 11.12.2012, 00:04 |
| JavaScript, php - языки программирования, не спорю. Думаю правильно будет сказать что на языке программирования можно написать программу. На оставшихся разве можно? CompWorm - статьи из википедии слово в слово под диктовку и у нас практикуется. Зато есть интернет, подобные форумы куча хорошей литературы, а если еще желание тогда вряд ли кто-то тебя остановит. Просто обидно что платишь деньги, причем не малые. А в итоге ни знаний, ни денег... |
| Автор: CompWorm 11.12.2012, 00:06 |
| Данкинг, там сомнения про css, html и SQL у автора, если я всё правильно понял... |
| Автор: Данкинг 11.12.2012, 00:16 |
| А, там ещё и SQL. А чё: раз language - значит, язык. |
| Автор: Фантом 11.12.2012, 00:18 | ||
Тогда полезно задуматься над вопросом, что такое программа. |
| Автор: CompWorm 11.12.2012, 00:31 | ||
я выше писал о классическом, можно сказать школьном, понимании программирования. в широком смысле ты даёшь очень скользкое определение. что по-твоему есть программа? особеено, когда речь идёт о javascript, lua, pawno итп )) если ты козырнёшь классическим "это набор исполняемых инструкций бла бла бла" то тогда любые данные можно считать "программой". пример: сравни например html файл и exe. и там и там некоторый исполнятор считывает заголовок, в случае html - тег <html> и какие-то заголовки, в случае exe - заголовок PE, понимает, что за формат ему попался и начинает выполнять инструкции, пока не достигнет точки выхода. |
| Автор: 4ell 11.12.2012, 00:34 |
| SQL - Structured Query Language язык запросов, но не язык программирования. Можно считать что по определению авторов он уже не ЯП. Фантом - да чтобы это определить нужно придумать другой язык, русский не совсем для этих целей подойдет. Хотя можно сделать ооочень длинное определение в котором определить кучу критериев. Так вот чтоб такого не делать, можно дать хотя бы приближенноe определение, можно например сказать что ЯП это формальный язык позволяющий записать алгоритм, который в последствии может быть выполнен на ЭВМ. Теперь смотрим на html. Встроенных средств для записи алгоритмов нет, css, sql - аналогично. Отсюда вывод. Можно конечно пойти дальше и начать спрашивать а что такое алгоритм. И продолжать эту игру с терминами можно до бесконечности. Еще, хочу добавить одну вещь, на языке программирования можно написать любой алгоритм, который только существует. Вот например алгоритм нахождения n-го числа фибоначчи. Напишите мне его на чистом html. Причем следует учесть что это не достаточный признак ЯП. |
| Автор: CompWorm 11.12.2012, 00:43 | ||||||
тебе придётся это сделать. препод не отступит наверняка так просто))) он тоже щас на другом форуме этот вопрос задал
чо?! блокнот! блокнот же есть чтобы записать код
код можно и на парте нацарапать гвоздём, а выполнить позже Добавлено через 5 минут и 16 секунд 4ell, я не просто так троллю. ты должен суметь понять и формализировать что конкретно я там неправильно написал. иначе борьба с преподом закончится эпик фейлом |
| Автор: 4ell 11.12.2012, 00:51 | ||||||
Ахах, блокнот, круто! Но если серьезно, то есть определенный минимум конструкций из которых можно построить язык полный, по Тьюрингу.
Спасибо, повеселили Добавлено через 6 минут и 38 секунд
ок, CompWorm ты не правильно интерпретировал сочетание "средства записи алгоритмов", я подразумевал специальные конструкции которые позволяют задавать определенный ход выполнения и изменение состояния исполнителя. |
| Автор: DviRUS 11.12.2012, 10:54 |
| Слава богу у нас таких "Учитилей" небыло... Тыкни пальцем чтоб знали своих героев... |
| Автор: Poseidon 11.12.2012, 14:01 | ||
Добавлено через 2 минуты и 28 секунд Кстати, по теме. По-моему html и SQL ну никак нельзя считать языками программирования. Таким макаром можно и rtf назвать языком программирования. Чем этот формат принципиально от html отличается? |
| Автор: LSD 11.12.2012, 14:26 | ||
http://en.wikipedia.org/wiki/Unrestricted_grammar являются полными по тьюрингу. Я не могу сходу сказать является ли HTML неограниченной грамматикой, но и утверждать обратное тоже не возьмусь. |
| Автор: Фантом 11.12.2012, 14:48 | ||||||||||
В таком случае какой-нибудь Фортран (FORmula TRANslator) вообще не язык. Впрочем, языками программирования в рамках такого определения являются только PL/1 и PL/M (поскольку PL - это "programming language").
В таком случае HTML является языком программирования. Это запись алгоритма отображения страницы в броузере.
Не такая уж это игра, из нее (при аккуратном подходе) следует довольно много интересных результатов. И, кстати, формальное определение алгоритма как раз существует, так что дальше двигаться необязательно
Вот последнее - это уже теплее. Т.е. язык программирования должен обладать полнотой по Тьюрингу. Однако в природе есть нечто, что принято называть "языками программирования", хотя тьюринг-полнотой они не обладают (редко, но такое встречается), и намного чаще встречается то, что является тьюринг-полным, но что не принято называть языком программирования. В частности, CSS3 и SQL со стандартными расширениями тьюринг-полны. Бывают и более изысканные случаи. Есть PostScript, который вроде бы тоже язык разметки. Однако он же - по сути дела, немного модифицированный Forth (который язык программирования). Полны по Тьюрингу оба. А что будет достаточным? Добавлено через 6 минут
"Обычный¨ HTML не является. А вот насчет HTML5 я тоже ничего сказать не берусь... |
| Автор: LSD 11.12.2012, 15:02 | ||
В чем принципиальная разница между "обычным" HTML и HTML5? |
| Автор: Akella 11.12.2012, 15:14 | ||
| HTML - это язык, но язык разметки думаю, что можно назвать это ЯП
а XML, SQL, XAML, JS интерпретируемых ЯП вагон |
| Автор: Фантом 11.12.2012, 15:14 |
В том, что я не берусь утверждать, что знаю последний. |
| Автор: Freyzer 11.12.2012, 15:38 | ||
Реално, впервые слышу, что хотел бы услушылать |
| Автор: bilbobagginz 11.12.2012, 17:46 | ||||
это как грицца
Если определять ЯП как обязательно полный по Тюрингу, то большинство DSL не пройдет. А если рассуждать не узко, то можно разделять яп на разные подгруппы (одно такое разделение описано в педивикии), Судя по такому определению и классификации, яп - набор инструкций для выполнения (не указано кем конкретно). Один из стандартных классов яп является семейство "декларативных ЯП" Можно рассматривать HTML как т.н. "domain specific" подгруппу XML, т.е. как "declarative markup" язык: язык описания документов компьютерными программами, понимающими этот язык (браузерами, например) А т.к. "декларативные маркап языки" являются подмножеством множества "языки программирования", можно сказать ergo:
т.е. "что и требовалось доказать" Ессно, знание HTML не является делом сложным, т.к. алгоритмики в нем практически нет (хотя размечать можно умнее и тупее, правильнее и кривее), и я не стал бы записывать знание ХТМЛ у себя в "рабословной по найму" (a.k.a. CV), и все же, понимание как этот HTML преобразуется в DOM, а из него в то что видно в браузере - тоже дело не всегда тривиальное ;) Мир всем. |
| Автор: LSD 11.12.2012, 18:10 |
Переформулируем вопрос: почему ты уверен что "обычный" HTML не является? Ты можешь это доказать или это умозрительные заключения? |
| Автор: Arantir 11.12.2012, 19:31 | ||||
Нету там разницы. HTML5 содержит теги, которые интерпретируются браузером во всякое видео/аудио, рисование и т.д. Сам по себе HTML5 не предоставляет возможностей для создания хоть каких бы то ни было "подвижных" систем (алгоритмов, что либо выполняющих), как и другие версии HTML. По-этому он и не язык программирования. И вообще, никогда таким HTML не станет. Концепция разделения труда древняя как мир и до сих пор не утратила актуальности. Разделение вывода (вида) и бизнес-логики. Вот на чем построен HTML. Дизайнеры могут работать с простым HTML, статическим выводом. А программисты могут работать со сложными серверными (и клиентскими, как JS) частями и не извращать дизайн своим математическим мышлением =) Это дает возможность делать каждую из этих частей максимально эффективно и качественно. По сути получается, что HTML не может быть языком программирования по собственной природе и цели своего существования. Его создали именно для того, чтобы языком он не был не программирования, а разметки. Как-то так... |
| Автор: Фантом 11.12.2012, 20:18 | ||
Доводилось видеть это в статьях и слышать от коллег по факультету (которые являются специалистами по этой части), насколько я помню, кто-то когда-то озаботился доказательством его тьюринг-неполноты. Точную ссылку сходу дать не берусь, это все-таки слишком далеко от области моих профессиональных интересов, но, если очень интересно, могу потрясти коллег. |
| Автор: 4ell 11.12.2012, 21:01 |
| Вопрос сложен, формально дать определение языку программирования врядли получится. Поскольку как уже говорили выше как бы мы не старались появляются исключения из правил. Например тот же пролог не является Тьюринг-полным. При этом неограниченные грамматики хоть полны по Тьюрингу, языками программирования не являются. Так же CSS3 + HTML не принято считать ЯП. Может быть стоит определить ЯП более интуитивно, наример считать языком программирования язык, который Предназначен для реализации на нем различных алгоритмов, и позволяет достаточно просто их записывать. |
| Автор: Фантом 11.12.2012, 21:43 | ||
Как раз является.
Рецепты из поваренной книги?.. |
| Автор: 4ell 11.12.2012, 21:55 | ||||
Упс... Правда, недоглядел. Но скажем языки пиксельных шейдеров уже не Тьюринг полные. Я это к тому что в природе такие языки есть.
Рецепты написанны на русском языке, который неформален. Но предположим у нас есть робот-повар, что нам мешает придумать язык для того чтобы было с одной стороны просто записывать рецепты а с другой стороны они интерпретировались роботом однозначно? |
| Автор: Фантом 11.12.2012, 22:19 | ||||
Конечно. Как уже упоминали выше, этим свойством обладают почти все DSL, что не мешает людям считать их языками программирования. Можно переписать поваренную книгу на эсперанто (в котором, как известно, нет ни одного исключения из правил, да и правил немного).
Ничего, причем этот входной язык вполне может оказаться некоторым (в т.ч. и достаточно широким) подмножеством какого-либо естественного языка. Впрочем, "пиджин инглиш" и так подойдет, без урезания. В конечном счете получается, что "язык программирования" - это то, что так называют (многие) люди. Никакого более удачного определения не придумать, поэтому в некотором смысле преподаватель был прав (во всяком случае, он далеко не единственный человек, считающий HTML языком программирования). |
| Автор: 4ell 11.12.2012, 22:32 | ||
И все же, html не описывает как рендерить страницу, он описывает что рендерить.
Все таки этот язык не принято причислять к языкам программирования, об этом пишут практически везде. Чтоб не быть голословным http://en.wikipedia.org/wiki/Programming_language#Definitions Добавлено через 4 минуты и 7 секунд Кстати, если человек только что изучил веб технологии и считает html ЯП. А человек который всю жизнь занимается программированием написал несколько книг и утверждает что он не является ЯП. Чье мнение более весомое? |
| Автор: Фантом 11.12.2012, 23:55 | ||||||
Декларативные языки программирования существуют.
Не спорю, но и примеры обратного, как я уже писал выше, найти несложно.
Ничье. Это только вопрос договоренности и привычек, ничего больше. |
| Автор: Arantir 12.12.2012, 00:15 |
| А меня учили, что программирование - это чтение данных, обработка данных и вывод данных. С этой точки зрения HTML - не язык программирования. С помощью HTML нельзя прочитать, обработать или выполнить данные. Этим занимается браузер, который написан как раз на языке программирования. А HTML выступает уже в роли самих данных. Можно сказать, что HTML - это просто такой формат сохранения данных. Точно так же, как PDF, DOC (MS World) и подобные. Добавлено через 7 минут и 43 секунды Откройте калькулятор в windows и попробуйте полностью реализовать его функционал на том, что вы считаете языком программирования Если получится - это действительно язык программирования. Если не получится - это лишь некоторый частный случай способов обработки данных. |
| Автор: Freyzer 12.12.2012, 07:14 |
| Стоит ли считать HTML к языком программирования вот как написанна тема, вот также HTML, язык программирования. Все время считал что это язык разметки. |
| Автор: LSD 14.12.2012, 12:11 |
| Я все таки не понимаю на чем основано утверждение что неограниченные грамматики полны по Тьюрингу. Т.е. XSLT считается тьюринг полным, а XML нет, хотя любой XSLT документ является и XML документом. |
| Автор: Freyzer 14.12.2012, 12:59 |
| Алгоритм, это хорошо но, перфокарта не позволит вывести интерфейс на экран. Может я ошибаюсь? |
| Автор: CompWorm 14.12.2012, 13:50 |
| Да при Тьюринге такого бардака не было |
| Автор: 4ell 14.12.2012, 20:49 | ||||
Тут то прикол в том что правила построения XML дополняются правилами XLST. Т.е. в принципе можно описать программу на xml например так:
по уродски конечно не продуманно, но факт что поверх самого XML можно придумать язык программирования, но исполнять то его будет не парсер xml! А специальный интерпретатор.
Диск с программой тоже не позволит вывести интерфейс на экран и что? Можно например вручную под микроскопом рассматривать этот диск и выписывать биты на листочек. Затем вручную разбирать машинные команды. |
| Автор: Samotnik 14.12.2012, 21:10 |
http://it.tut.by/325175 |
| Автор: ksnk 14.12.2012, 21:41 |
Давай тогда английский язык назовем языком программирования! А что? Все слова, которыми записываются программы традиционных языков - английские. |
| Автор: 4ell 14.12.2012, 21:53 | ||
Суть не в том чтобы объявить XML или английский языком программирования. Суть в том что добавив в них некоторые новые правила можно сделать их языками программирования. Добавлено через 1 минуту и 17 секунд Но дополнив язык, мы уже его изменили, т.е. это уже не тот прежний XML и не тот английский что был раньше. Это новый дополненный язык |
| Автор: Arantir 14.12.2012, 22:43 | ||
Разница между русским, английским, HTML и каким-нибудь C++ в том, что русский и английский можно использовать только для общения между людьми, HTML только разметки web-страницек, а C++ только для общения с ЕОМ. |
| Автор: CompWorm 16.12.2012, 13:25 | ||
ты 1С видел? |
| Автор: LSD 17.12.2012, 16:53 | ||
Можно и поверх HTML то же самое придумать, это не фокус. Вопрос в другом, почему неограниченные грамматики считаются Тьюринг полными? Как там происходит вычисления? |
| Автор: diadiavova 18.12.2012, 11:34 |
Я думаю, здесь в вопросе сабжа кроется два вопроса, которые целесообразнее было рассматривать поотдельности: 1. Считается ли хтмл ЯПом 2. Является ли он таковым На первый вопрос ответ более или менее очевиден. Большинство источников говорит, что это не ЯП, хотя есть и те, кто либо настаивает на том, что он таковым является, либо не, как минимум, не спорят с такой формулировкой. Причиной того, что язык не считается ЯПом, по всей видимости является то, что здесь тон задают программисты менстримовых языков. Для них в хтмл отсутствуют типичные для ЯПов конструкции( циклы, переменные и пр.), он слишком специализирован и вообще код больше похож на описание структуры данных, нежели инструкций, которые следует выполнять. В то же время, следует заметить, что среди приверженцев идеи о том, что это ЯП, далеко не все - лохи, что, в общем-то, продемонстрировала даже эта тема. Ответ на второй вопрос затруднителен в силу того, что формального определения языка программирования не существует, а когда возникала традиция называть тот или иной язык языком программирования, критерии были разными. В силу этого обстоятельства, как уже писал Фантом, сформулировать критерии ЯПа таким образом, чтобы им удовлетворяли все языки, считающиеся таковыми, а все не считающиеся были отсяны - вряд ли возможно. Прокомментирую несколько утверждений, прозвучавших в этой теме и кажущихся мне как минимум спорными. Попытку разделения языков, исходя из того, всё ли они могут, вряд ли можно считать состоятельной, поскольку этот критерий делит языки не на япы и неяпы, а на языки общего назначения (General Purpose) и предметно-ориентированные (Domain Specific) и совсем непонятно, почему последним отказывается в праве называться япами, тем более, что традиционно некоторые из них так называются. Полнота по Тьюрингу - так же довольно зыбкий критерий, поскольку если его применять, то автоматное программирование придётся перестать считать программированием, поскольку автомат не является полным по Тьюрингу. Наличие в языке алгоритмического инструментария - так же вряд ли надёжный критерий, поскольку в этом случае выпадают функциональное и логичекое программирование. Не менее спорным я считаю аргумент, указывающий на то, что языки, описывающие некую структуру данных, не являются языками программирования. Если взять любой объектно-ориентированный язык, то бОльшая часть конструкций этого языка описывает структуру данных. Алгоритм там только внутри метода, да и там есть место для структур данных( взять тот же json, e4x в яваскрипте, да и не только). И если забить в поисковик что-то типа "эквивалентность алгоритмов и данных", то можно найти немало интересного по этому вопросу. Ну и наконец, если взглянуть на то, как происходит обработка кода машиной, то мы увидим, что на первоначальном этапе происходит парсинг. Результатом парсинга является абстрактное синтаксическое дерево, а что есть это дерево, как не структура данных? Выходит, что любой язык описывает структуру данных, и языки, более ориентированные на описание структур( такие как хмл) вполне подходят для написания программ и даже существуют реализации такого подхода. Конфигурации. В конфигурацию обычно выводится та часть поведения программы, которую надо будет изменять во время исполнения, когда доступа к изменению кода не будет. При этом эффект должен быть таким же, как и от изменения программного кода. Достаточно ли этого, чтобы считать конфигурацию программой? Не знаю, но судить об этом так же категорично, как тут некоторые делали, не стал бы. Ну и наконец хтмл. Самое странное, что его по сей день некоторые называют языком разметки гипертекста. Когда язык получил название, это действительно был язык, описывающий форматированный текст с гиперссылками. С тех пор кагбе многое изменилось: в нём появились элементы управления для отправки форм на сервер; сценарии; стили; изображения ( в том числе анимированные); встроенные объекты с зачастую чрезвычайно сложным поведением, к тому же способные взаимодействовать с документом; встроенные языки( такие как svg например) и всякая прочая мультимедия. В настоящее время с помощью этого языка пишутся клиентские части сложнейших веб-приложений, которые порой уже теснять свои десктопные аналоги. И что, не смотря на всё это он таки остался тем, что заложено в его названии? Конечно, вы скажете, что скрипты и прочее пишутся на других языках, поэтому не считаются, ну, а как же тогда быть с тем же яваскриптом и прочими скриптовыми языками? Яваскрипту для работы нужны объекты DOM, ActiveX, XPCOM или ещё что-то, а сам по себе он не в состоянии даже взаимдействовать с пользователем. Или взять язык XSLT. Считается языком программирования и даже полным по Тьюрингу, но все его вычислительные возможности кроются в языке XPath и без него он - ноль без палочки. А хтмл, в отличие от двух предыдущих примеров, по крайней мере самдостаточен, а возможность расширения скриптами и объектами заложена в самом языке. ЗЫ ЛСД, хслт как язык программирования полон по Тьюрингу, но его синтаксис основан на контекстно-свободной грамматике, полнотой по Тьюрингу не обладающей. Это общая тенденция и характерно дя большинства япов. Применительно к грамматике полнота по Тьюрингу обозначает необходимый набор инструментов для её разбора: если для разбора к-с-грамматики достаточно автомата со стеком, то для тьюринг-полной грамматики этого мало. ЗЫЗЫ А вообще, надо в тему зазвать нашего главного специалиста по хтмл Иринузануду и как она скажет - так и будет |
| Автор: irinazanuda 18.12.2012, 12:15 |
| Однозначно--язык программирования и не надо бла-бла и камни в мой огород... с помощью этого ЯЗЫКА делается размётка и вёрстка... а так же чем я и занимаюсь гифками)))). раз можно писать код и вставлять разные картинки в него-- это уже свой стиль!!! , кроме того только для хтмл есть специальные правила и формулы, спец слова--тоесть отличный от других языков!!!! Все причиндалы, которыехарактеризующие принадлежность к языку есть!!! PS: Ну, и как всегда ДядяВова прав, Унибомб хороший, тему можно закрывать |
| Автор: Freyzer 20.12.2012, 07:15 |
| ? |