До сих пор я не знаю КЛЮЧЕВЫХ различий между этими тремя. Когда кто-то спрашивает меня об этом, я только говорю им, что C # - это язык программирования, HTML и XML - это языки разметки, а JavaScript и VBScript - это языки сценариев. Но какие ключевые отличия отличают их друг от друга?
38
Ответы:
Позвольте мне попытаться найти разделительную линию между этими тремя типами языка. Конечно, будут многочисленные исключения и контрпримеры, так как это только мое мнение.
Язык разметки используется для управления представлением данных, например, «представлять эти имена пользователей в виде списка маркеров или в виде таблицы».
Язык сценариев используется для посредничества между программами для генерации данных. Это особенно верно для языков сценариев оболочки, таких как bash, но если вы задумаетесь об этом, также Python или Perl возникли из-за необходимости выполнять задачи в UNIX без написания программы на C. Программа, которую вы контролируете большую часть времени на этих языках является переводчиком самого языка , который выполняет общие задачи для вас. Другими типичными программами, с которыми вы взаимодействуете, являются серверы баз данных или веб-серверы.
Возвращаясь к метафоре списка пользователей, на языке сценариев вы просите базу данных «дать мне все имена пользователей», а затем просите веб-сервер «отправить этот список пользователей этому запрашивающему».
Язык программирования используется для преобразования данных . Это достигается созданием инструкций процессора, которые перезаписывают входные данные в выходные данные; надеюсь, желаемый результат. Примерами преобразования данных являются вычисление суммы из числа сложений, или решение системы дифференциальных уравнений из набора условий, или запись и чтение из древовидной структуры согласованным образом с учетом последовательности возможных одновременных запросов. ,
Возвращаясь к метафоре списка пользователей, на языке программирования вы пишете, как просматривать таблицу записей, извлекать из каждой записи поле «имя» и возвращать их все запрашивающей стороне.
Обратите внимание, что языки сценариев являются подмножеством языков программирования, т. Е. Язык может быть как «сценарием», так и «программированием»: Python регулярно используется для «посредничества между программами», а также для «преобразования данных». Существуют и другие языки, такие как Java, которые редко используются для «посредничества между программами» не потому, что это невозможно, а потому, что они не предназначены для того, чтобы упростить это. Ключевая особенность языка сценариев заключается в том, что он может управлять другими программами, подобно тому, как сценарий дает подсказку актеру начать свою роль.
источник
Язык разметки - это язык, который используется для представления структурированных данных. Например, HTML позволяет указать, что некоторая часть документа является заголовком или какая-то другая часть является списком, по сравнению с простым текстовым документом.
Языки разметки не считаются языками программирования¹.
Разница с языками программирования не всегда очевидна. Например, XSLT является полным по Тьюрингу языком², но основан на XML, который является языком разметки.
Сама Википедия прилагает важные усилия, чтобы не квалифицировать XSLT как язык программирования или язык разметки. Он только говорит, что это декларативный язык, и что он использует «методы оптимизации, имеющиеся в функциональных языках программирования и языках запросов к базам данных».
Язык сценариев - это язык программирования, который интерпретируется, а не компилируется, что означает, что языки сценариев представляют собой подмножество всех языков программирования.
Не всегда очевидно, является ли язык программирования языком сценариев, как не всегда очевидно, является ли язык компилированным или интерпретированным. Например, PHP может быть скомпилирован в промежуточный байт-код³, а затем преобразован в машинный код JIT-компилятором, хотя он все еще рассматривается как язык сценариев⁴.
Смотрите также: Разделение мета-волос Стивена Лотта.
XML «XML не является языком программирования». См XML в 10 баллов .
² «XSLT - полный по Тьюрингу язык». См. XSLT в Википедии.
«HHVM компилирует Hack и PHP в промежуточный байт-код. Затем этот байт-код динамически преобразуется в машинный код x64 во время выполнения с помощью компилятора JIT (Just-in-Time) ». См. HHVM .
⁴ сценариев Языки в списке языков программирования по типу Википедии.
источник
TypeError
! Любой язык может быть реализован интерпретатором, каждый язык может быть реализован компилятором.Чтобы создать любой вид таксономии, вам нужно сначала задать себе несколько вопросов:
Как правило, когда кто-то слышит вопрос, подобный тому, который вы задали, ожидаемый ответ делает несколько предположений. Например, естественно предположить, что, поскольку все это языки, они должны образовывать иерархию в соответствии с более общей концепцией языка, или что они разделяют пространство всех языков, или что они являются подмножествами друг друга.
Языки программирования
К сожалению, ничего из вышеперечисленного, похоже, не соответствует действительности. Возможно, только у языков программирования есть определение, с которым большинство соглашается. Языки программирования - это языки, которые кодируют программы. Кодирование означает, что слово в языке может быть интерпретировано как программа (последовательность действий). Языки программирования являются подмножеством этих. Примеры некомпьютерных языков программирования: список покупок, интерпретируемый как указания для покупателя в супермаркете, ДНК, интерпретируемая путем транскрибирования пептидов, аналоговая музыкальная запись, служащая в качестве программы для магнитофона.
Таким образом, языки программирования являются теми, которые программируют компьютеры.
Скриптовые языки
Не четко определены Понятие этого термина открыто для толкования. Исторически сложилось так, что языки программирования, у которых не было компилятора для создания машинного кода, назывались так. По сегодняшним стандартам это поместило бы все популярные языки программирования без Ассемблеров в эту категорию. Даже так называемые низкоуровневые языки, такие как C, требуют времени выполнения с уже существующими процедурами, поэтому двоичные файлы, получаемые при компиляции программы на C, не являются полностью машинным кодом, но также время от времени обращаются к среде выполнения.
Языки разметки
Не четко определены Всякий раз, когда используется этот термин, представляется, что цель состоит в том, чтобы описать язык программирования с очень ограниченным словарным запасом, в основном используемый для создания визуального или звукового изображения. Может быть трудно увидеть XML как программирование чего-либо, но если вы посмотрите на разметку Man или TexInfo, вы увидите, что «специальные» символы на самом деле являются инструкциями интерпретатора.
Также возможно дать интерпретацию «программирования» для языка XML, что-то вроде этого:
Итог: это разделение на сегодняшний день не кажется очень значимым, оно может дать вам только некоторую интуицию относительно того, с каким языком вы столкнулись, но оно не даст вам точного определения.
источник
Все три понятия несколько перекрываются, поэтому вы можете получить бесконечные аргументы, является ли XSLT языком программирования или Python является языком сценариев или нет.
Язык разметки является языком , который представляет собой структурированные данные в текстовом формате , HTML является наиболее хорошо известен, но есть многочисленные форматы для различных целей, как SVG для графики, WSDL для описания веб - сервисы , интерфейсов, Resx для Resouce файлов. нетто и тд. Практическое правило заключается в том, что язык разметки не описывает процесс или алгоритм (как это делает язык программирования), а представляет собой чистые данные. Но это также фундаментальное CS понимание , что естьнет принципиальной разницы между кодом и данными. Некоторые языки разметки, такие как XSLT, имеют циклы и условные выражения, такие как «настоящий» язык программирования, а некоторые языки программирования, такие как Prolog, представляют собой почти чистые данные без процесса, указанного в коде. А Lisp настолько размывает строку, что рассматривает свой собственный код как структурированный формат данных.
Что касается различия между языком программирования и языком сценариев , это историческое различие , которое является почти устаревшим сегодня. В старые времена мы собирали автономные программы, написанные, скажем, на C, а затем у нас были языки сценариев, такие как сценарии оболочки или Word Basic, которые интерпретировались и предназначались для манипулирования другими программами и инструментами. Сегодня эта линия довольно размыта, поскольку у нас есть разные уровни компиляции и интерпретации (компиляция байт-кода, JIT-компиляция и т. Д.), А также различные независимые от языка API. Так что различие не так уж полезно.
источник
Язык разметки используется для описания данных, а не логики. Типичным их использованием является описание форматирования документа, например, для этого разработан HTML. Но иногда они также используются в качестве общих форматов данных, XML - это язык разметки, который часто используется только для описания данных.
Разница между языками программирования и языками сценариев очень нечеткая, оба имеют тенденцию к полноте, поскольку с ними можно решать любые вычислимые задачи. Есть несколько общих «подсказок», которые вы можете найти, чтобы увидеть, является ли язык языком программирования или нет.
Но в конце концов, если язык является языком сценариев или языком программирования, это скорее вопрос соглашения, а не каких-либо строгих критериев. Даже приведенные выше советы - это просто тренды, вы найдете языки программирования, которые отвечают всем критериям языка сценариев, но все еще считаются языками программирования.
источник
TypeError
! Любой язык может быть реализован интерпретатором, каждый язык может быть реализован компилятором. Можно даже автоматически сгенерировать компилятор из интерпретатора и наоборот.