Вопрос

Что делает язык языком сценариев?Я слышал, как некоторые люди говорили: «когда это интерпретируется, а не компилируется».Это сделало бы PHP (например) языком сценариев.Это единственный критерий?Или есть другие критерии?

Смотрите также:

Это было полезно?

Решение

Язык сценариев — это язык, который «пишет сценарии» для других действий.Основная задача заключается не в создании собственных приложений, а в том, чтобы заставить существующее приложение работать так, как вы хотите, например.JavaScript для браузеров, VBA для MS Office.

Другие советы

Простой.Когда я использую его, это современный динамический язык, когда вы используете его, это просто язык сценариев!

Традиционно, когда речь идет о разнице между сценариями и программированием, сценарии интерпретируются, а программы компилируются.Язык может выполняться разными способами — интерпретироваться или компилироваться (в байт-код или машинный код).Это не делает язык тот или иной.

В некоторых глазах то, как вы использовать язык делает его языком сценариев (например, разработчики игр, которые разрабатывают в основном на C++, будут сценарий объекты в Lua).Опять же, границы размыты: один человек может использовать язык для программирования, а другой может использовать тот же язык для написания сценариев.

Это из Википедия статья о скриптовых языках:

Язык сценариев, язык сценариев или язык расширения — это язык программирования, который позволяет управлять одним или несколькими программными приложениями.«Сценарии» отличаются от основного кода приложения, поскольку они обычно пишутся на другом языке и часто создаются или, по крайней мере, изменяются конечным пользователем.Сценарии часто интерпретируются из исходного кода или байт-кода, тогда как приложения, которыми они управляют, традиционно компилируются в собственный машинный код.Языки сценариев почти всегда встроены в приложения, которыми они управляют.

Вы заметите использование слов «обычно», «часто», «традиционно» и «почти всегда» — все это говорит вам о том, что существует нет набор различных атрибутов, которые делают конкретный язык «языком сценариев».

«Сценарий — это то, что вы даете актерам.Программа - это то, что вы даете аудитории ». - Ларри Уолл Уолл

Я действительно не думаю, что есть большая разница.Так называемые «скриптовые» языки часто компилируются — очень быстро и во время выполнения.Некоторые из языков «программирования» дополнительно компилируются во время выполнения (вспомните JIT), и первым этапом «компиляции» является проверка синтаксиса и разрешение ресурсов.

Не зацикливайтесь на этом, это действительно не важно.

Я бы определил язык, который обычно распространяется как исходный код, а не как двоичный файл.

На этот вопрос есть много возможных ответов.

Первый:на самом деле это не вопрос разница между языком сценариев и языком программирования, поскольку язык сценариев является язык программирования.Это скорее вопрос о том, какие черты делают один язык программирования языком сценариев, а другой язык программирования? не язык сценариев.

Второй:действительно сложно сказать, что такое язык XYZ, будь то XYZ «сценарии», «функциональное программирование», «объектно-ориентированное программирование» или что-то еще.Определение того, что такое «функциональное программирование», довольно ясно, но никто не знает, что такое «язык функционального программирования».

Функциональное программирование или объектно-ориентированное программирование — это программирование. стили;вы можете писать в функциональном или объектно-ориентированном стиле практически на любом языке.Например, коммутатор виртуальной файловой системы Linux и модель драйвера Linux в значительной степени объектно-ориентированы, несмотря на то, что написаны на C, тогда как большая часть кода Java или C#, который вы видите в Интернете, очень процедурна, а не объектно-ориентирована. совсем.OTOH, я видел очень функциональный Java-код.

Итак, если функциональное программирование и объектно-ориентированное программирование — это просто стили, которые можно реализовать в любой язык, то как вы определяете «объектно-ориентированный язык программирования»?Можно сказать, что объектно-ориентированный язык программирования — это язык, позволяющий объектно-ориентированное программирование.Но это не совсем определение: все языки допускают объектно-ориентированное программирование, поэтому все языки объектно-ориентированы?Итак, вы скажете, что язык является объектно-ориентированным, если он силы вас к программированию в объектно-ориентированном стиле.Но это тоже не совсем определение: все языки допускают функциональное программирование, поэтому нет язык объектно-ориентирован?

Итак, для себя я нашел следующее определение:

Язык является языком сценариев (объектно-ориентированный язык/функциональный язык), если он оба

  • облегчает скриптинг (объектно-ориентированное программирование/функциональное программирование), т.е.это не только позволяет это, но делает это легкий и естественный и содержит функции, которые помощь с этим, И
  • поощряет и гиды вы к написанию сценариев (объектно-ориентированное программирование/функциональное программирование).

Итак, после пяти абзацев я пришел к следующему:«Язык сценариев — это язык сценариев».Какое прекрасное определение.НЕТ.

Очевидно, теперь нам нужно взглянуть на определение «сценариев».

Здесь возникает третья проблема:тогда как термин «функциональное программирование» четко определен, и только термин «язык функционального программирования» является проблематичным, к сожалению, со сценариями, оба термин «сценарий» и термин «язык сценариев» не определены.

Ну во-первых скриптинг является программирование.Это просто особый вид программирования.ВАУ:каждый сценарий — это программа, но не каждая программа — это сценарий;набор всех сценариев является подмножеством набора всех программ.

По моему личному мнению, то, что делает скрипты скриптами и отличает их от других видов программирования, заключается в том, что…

Скрипты в основном манипулируют объектами, которые

  • не были созданы сценарием,
  • иметь жизнь, независимую от сценария и
  • жить вне области действия сценария.

Кроме того, используемые типы данных и алгоритмы обычно определяются не сценарием, а внешней средой.

Подумайте о сценарии оболочки:сценарии оболочки обычно манипулируют файлами, каталогами и процессами.Большинство файлов, каталогов и процессов в вашей системе, вероятно, не были созданы текущим скриптом.И они не исчезают при выходе из скрипта:их жизнь совершенно не зависит от сценария.И на самом деле они не являются частью сценария, они являются частью системы.Вы не начали свой сценарий с написания File и Directory классы, эти типы данных вас не беспокоят:вы просто предполагаете, что они есть, и даже не знаете (и не знаете, нуждаться знать) как они работают.И вы также не реализуете свои собственные алгоритмы, например.для обхода каталогов вы просто используете find вместо реализации собственного поиска в ширину.

Суммируя:сценарий присоединяется к более крупной системе, которая существует независимо от сценария, манипулирует некоторой небольшой частью системы и затем завершает работу.

Эта более крупная система может быть операционной системой в случае сценария оболочки, DOM браузера в случае сценария браузера, игрой (например,World of Warcraft с Lua или Second Life с языком сценариев Linden), приложение (например.язык AutoLisp для AutoCAD или макросов Excel/Word/Office), веб-сервер, пакет роботов или что-то совсем другое.

Обратите внимание, что аспект сценариев полностью ортогонален всем остальным аспектам языков программирования:язык сценариев может быть строго или слабо типизированным, строго или слабо типизированным, статически или динамически типизированным, номинально, структурно или утино типизированным, черт возьми, он даже может быть нетипизированным.Он может быть императивным или функциональным, объектно-ориентированным, процедурным или функциональным, строгим или ленивым.Его реализации можно интерпретировать, компилировать или смешивать.

Например, Mondrian — это строго строго статически типизированный ленивый функциональный язык сценариев с компилируемой реализацией.

Однако все это спорно, поскольку сам термин язык сценариев является Действительно используемый в реальном мире, не имеет ничего общего ни с чем из вышеперечисленного.Чаще всего оно употребляется просто как оскорбление, а определение довольно простое, даже упрощенное:

  • настоящий язык программирования:мой язык программирования
  • язык сценариев:ваш язык программирования

Похоже, именно так этот термин употребляется чаще всего.

Это как порно, ты это понимаешь, когда видишь.Единственное возможное определение языка сценариев:

A language which is described as a scripting language.

Немного округло, не так ли?(Кстати, я не шучу).

По сути, ничто не делает язык языком сценариев, кроме того, что его так называют, особенно его создатели.Основным набором современных языков сценариев являются PHP, Perl, JavaScript, Python, Ruby и Lua.Tcl — первый крупный современный язык сценариев (хотя это был не первый язык сценариев, я забыл, что это такое, но я был удивлен, узнав, что он предшествовал Tcl).

Я описываю особенности основных языков сценариев в моя статья:

 A Practical Solution for Scripting Language Compilers
 Paul Biggar, Edsko de Vries and David Gregg
 SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)

Большинство из них динамически типизированы и интерпретируются, и большинство из них не имеют определенной семантики за пределами их эталонной реализации.Однако даже если их основная реализация будет скомпилирована или JIT-компилирована, это не изменит «природу» языка.

Единственный оставшийся вопрос: как определить, является ли новый язык языком сценариев?Что ж, если его называют языком сценариев, то это так и есть.Так Фактор — это язык сценариев (или, по крайней мере, таковым было на момент написания), но, скажем, Java им не является.

«Язык сценариев» — одно из тех нечетких понятий, которые могут означать многое.Обычно это относится к тому факту, что существует одношаговый процесс, ведущий от исходного кода к исполнению.

Например, в Perl вы делаете: perl my_source.pl

Учитывая вышеуказанные критерии, PHP является языком сценариев (хотя вы можете использовать процесс «компиляции», например, при использовании Zend Encoder для «защиты» исходного кода).

ПС.Часто (но не всегда) интерпретируются языки сценариев.Также часто (но опять же не всегда) языки сценариев являются динамически типизированными.

Все языки сценариев являются языками программирования.Так что, строго говоря, разницы нет.

Этот термин не относится к каким-либо фундаментальным свойствам языка, он относится к типичному использовать языка.Если типичным использованием является написание коротких программ, которые в основном выполняют вызовы уже существующего кода и некоторую простую обработку результатов (то есть, если типичным использованием является написание сценарии), то это язык сценариев.

Я думаю, что у г-на Роберто Иерусалимского есть очень хороший ответ или вопрос в разделе «Программирование на Lua»:

Тем не менее, отличительная особенность интерпретируемых языков заключается не в том, что они не скомпилированы, а в том, что любой компилятор является частью времени выполнения языка и, следовательно, возможно (и легко) выполнять код, сгенерированный на лету

Одно подразделение это

  • сценарии = динамически интерпретируемые
  • нормальный = скомпилированный

Динамически интерпретируемый язык интерпретируется во время выполнения, тогда как скомпилированный язык компилируется перед выполнением.

Я должен добавить, что, как отметил Йорг, различие между интерпретируемым и компилируемым является особенностью не языка, а механизма выполнения.

Вас также может заинтересовать это объяснение Типовая система, который связан с ним и больше фокусируется на языковом аспекте, а не на механизме выполнения.Большинство языков сценариев являются динамически типизированными, тогда как «обычные» языки в основном типизированы статически.

В целом разделение статически и динамически типизированных языков более четко определено и имеет большее значение для удобства использования языка.

Язык сценариев – это обычно:

  1. Динамически типизированный
  2. Интерпретируется, с небольшим упором на производительность, но с хорошей переносимостью.
  3. Требуется намного меньше шаблонный код, что приводит к очень быстрому прототипированию
  4. Используется для небольших задач, подходит для записи одного файла для запуска какого-нибудь полезного «скрипта».

Несмотря на то, что язык без сценариев обычно:1.Статически напечатано 2.Составлено, с акцентом на производительность 3.Требуется больше кода котлера, что приводит к более медленному прототипированию, но большему количеству читаемости и долгосрочной обслуживаемости 4.Используется для крупных проектов, адаптируется ко многим шаблонам проектирования.

Но на мой взгляд, сейчас это скорее историческая разница.Javascript и Perl были написаны с учетом небольших простых сценариев, тогда как C++ был написан с учетом сложных приложений;но оба можно использовать в любом случае.И многие языки программирования, как современные, так и старые, так или иначе размывают грань (а она изначально была нечеткой!).

Печально то, что я знал нескольких разработчиков, которые ненавидели то, что они считали «языками сценариев», считая их более простыми и не такими мощными.Мое мнение таково старое клише: используйте правильный инструмент для работы.

Языки сценариев изначально задумывались как механизмы управления приложениями, написанными на сложном языке программирования.Скомпилированные программы нельзя было изменять во время выполнения, поэтому создание сценариев давало людям гибкость.

В частности, сценарий оболочки автоматизировал процессы в ядре ОС (традиционно AppleScript на Mac);роль, которая все больше и больше переходила в руки Perl, а затем в последнее время перешла из него в Python.Я видел, как Scheme (особенно в его реализации Guile) использовался для объявления сцен трассировки лучей;и в последнее время Lua очень популярен как язык программирования для сценариев игр - до такой степени, что во многих новых играх единственной жестко запрограммированной вещью является графический/физический движок, в то время как вся игровая логика закодирована на Lua.Точно так же считалось, что JavaScript управляет поведением веб-браузера.

Языки эмансипировались;никто сейчас не думает об ОС как о приложении (или вообще не думает об этом), и многие ранее скриптовые языки стали использоваться для написания собственных полноценных приложений.Само название стало бессмысленным и распространилось на многие используемые сегодня интерпретируемые языки, независимо от того, предназначены ли они для интерпретации изнутри другой системы или нет.

Однако «скриптовые языки» определенно не являются синонимом «интерпретируемых языков» — например, BASIC интерпретировался большую часть своей жизни (т.е.до того, как он утратил свою аббревиатуру и стал Visual Basic), однако никто на самом деле не думает об этом как о написании сценариев.

ОБНОВЛЯТЬ: Материалы для чтения доступны как обычно в Википедии.

Во-первых, язык программирования не является «языком сценариев» или чем-то еще.Это может быть «скриптовый язык» и что-то еще.

Во-вторых, разработчик языка сообщит вам, является ли это языком сценариев.

Ваш вопрос должен звучать так: «В каких реализациях язык программирования будет считаться языком сценариев?», а не «В чем разница между языком сценариев и языком программирования?».Нет никакого промежутка.

Тем не менее, я буду считать язык языком сценариев, если он используется для предоставления какого-либо промежуточного программного обеспечения.Например, я бы посчитал большинство реализаций JavaScript языком сценариев.Если бы JavaScript запускался в ОС, а не в браузере, то это не был бы язык сценариев.Если PHP работает внутри Apache, это язык сценариев.Если он запускается из командной строки, это не так.

Я рассматриваю язык сценариев как что-то, не требующее явного тяжеловесного этапа «компиляции».Основная особенность с точки зрения программиста:вы редактируете код и сразу запускаете его.

Таким образом, я бы рассматривал JavaScript и PHP как языки сценариев, тогда как Экшнскрипт 3/Гибкий это не совсем так.

Мы с другом только что поспорили:В чем разница между языком программирования и языком сценариев.

Популярный аргумент заключается в том, что языки программирования компилируются, а языки сценариев интерпретируются. Однако я считаю, что этот аргумент полностью ложен... почему?

  1. Chakra и V8 (движки JavaScript от Microsoft и Google) компилируют код перед выполнением.
  2. QBasic интерпретируется - делает ли это Qbasic «скриптовым» языком?

Исходя из этого, я привожу аргументы в пользу разницы между языком программирования и языком сценариев:

Язык программирования работает на машинном уровне и имеет доступ к самой машине (память, графика, звук и т. д.).

Язык сценариев находится в «песочнице» и имеет доступ только к объектам, доступным в «песочнице».Он не имеет прямого доступа к базовой машине.

По моему мнению, я бы сказал, что динамически интерпретируемые языки, такие как PHP, Ruby и т. д.все еще являются «нормальными» языками.Я бы сказал, что примерами «скриптовых» языков являются такие вещи, как bash (или ksh, или tcsh, или что-то еще) или sqlplus.Эти языки часто используются для объединения существующих программ в системе в серию последовательных и связанных команд, таких как:

  1. скопируйте A.txt в /tmp/work/
  2. запустить процесс ночной очистки на сервере базы данных
  3. записать результаты и отправить их системному администратору

Так что я бы сказал, что разница (во всяком случае, для меня) больше в том, как вы использовать язык.Такие языки, как PHP, Perl, Ruby, можно использовать как «языки сценариев», но я обычно рассматриваю их как «обычные языки» (за исключением Perl, который, похоже, работает в обоих направлениях.

Я просто перенесу свой ответ из повторяющегося вопроса.


Название «Язык сценариев» относится к очень специфической роли:язык, на котором вы пишете команды для отправки в существующее программное приложение.(как традиционный сценарий телевидения или фильма)

Например, когда-то веб-страницы HTML были скучными.Они всегда были статичными.Затем однажды, Нескейп подумал: «Эй, что, если мы позволим браузеру читать и действовать по маленьким командам на странице?» И вот так, был сформирован JavaScript.

Простая команда JavaScript — это alert() команда, которая инструктирует/командует браузеру (программному приложению), читающему веб-страницу, отображать предупреждение.

Теперь, делает alert() каким-либо образом связан с C++ или любым другим языком кода, который на самом деле использует браузер. использует отобразить предупреждение?Конечно, нет.Тот, кто пишет «alert()» на странице .html, не понимает, как браузер на самом деле отображает предупреждение.Он просто пишет команду, которую интерпретирует браузер.

Давайте посмотрим простой код JavaScript

<script>
var x = 4
alert(x)
</script>

Это инструкции, которые отправляются в браузер, чтобы браузер мог их интерпретировать сам.Язык программирования, который использует браузер, чтобы фактически установить переменную равным 4 и поместить это в предупреждение... он совершенно не связан с javascript.

Мы называем эту последнюю серию команд «скриптом» (именно поэтому она заключена в <script> теги).Просто по определению «сценария» в традиционном смысле: Серия инструкций и команд, отправленных актерам..Всем известно, что сценарий (сценарий фильма), например, — это сценарий.

Сценарий (сценарий) нет актеры, или камера, или спецэффекты.Сценарий просто говорит им, что делать.

Теперь, что такое скрипт язык, точно?

Существует множество языков программирования, которые представляют собой разные инструменты в наборе инструментов;некоторые языки были разработаны конкретно для использования в качестве скриптов.

Javasript — очевидный пример;существует очень мало приложений Javascript, которые не относятся к сфере сценариев.

ActionScript (язык Flash-анимации) и его производные являются языками сценариев, поскольку они просто выдают команды проигрывателю/интерпретатору Flash.Конечно, существуют абстракции, такие как объектно-ориентированное программирование, но все это просто средство для достижения цели:отправлять команды флэш-плееру.

Python и Ruby также часто используются в качестве языков сценариев.Например, когда-то я работал в компании, которая использовала Ruby для написания сценариев команд для отправки в браузер типа «перейдите на этот сайт, щелкните эту ссылку...», чтобы выполнить базовое автоматизированное тестирование.Я был нет «Разработчик программного обеспечения» в любом случае на этой работе.Я просто написал скрипты, которые отправляли команды на компьютер для отправки команд в браузер.

По своей природе языки сценариев редко «компилируются», то есть переводятся в машинный код и считываются непосредственно компьютером.

Даже приложения с графическим интерфейсом, созданные на Python и Ruby, представляют собой сценарии, отправляемые в API, написанный на C++ или C.Он сообщает приложению C, что делать.

Конечно, есть некоторая неопределенность.Почему вы не можете сказать, что Machine Language/C — это языки сценариев, потому что это сценарии, которые компьютер использует для взаимодействия с базовой материнской платой/видеокартами/чипами?

Чтобы прояснить ситуацию, мы можем провести несколько линий:

  1. Когда вы можете написать язык сценариев и запустить его без «компиляции», это больше похоже на прямой сценарий.Например, вам не нужно ничего делать со сценарием, чтобы указывать актерам, что с ним делать.Он уже есть, используется, как есть.По этой причине мы будем исключить компилируемые языки их нельзя называть языками сценариев, хотя в некоторых случаях их можно использовать для целей сценариев.

  2. Язык сценариев подразумевает, что команды отправляются сложный программное приложение;именно поэтому мы в первую очередь пишем сценарии — чтобы вам не нужно было знать все тонкости работы программного обеспечения, чтобы отправлять ему команды.Таким образом, языки сценариев обычно представляют собой языки, которые отправлять (относительно) простые команды сложным программным приложениям... в данном случае машинный язык и ассемблерный код не помогут.

Могу ли я предположить, что языки сценариев — это термин, от которого многие люди отходят.Я бы сказал, что в настоящее время это в основном сводится к компилируемым языкам и динамическим языкам.

Я имею в виду, что вы не можете сказать что-то вроде Python, или Ruby в наши дни являются «скриптовыми» языками (у вас даже есть такие вещи, как ЖелезоПитон и JIT-ваш любимый язык, разница размыта еще больше).

Честно говоря, лично я больше не считаю PHP языком сценариев.Я бы не ожидал, что людям понравится классифицировать PHP иначе, чем, например, Java в своем резюме.

Языки сценариев обычно работают внутри механизма сценариев, который является частью более крупного приложения.Например, JavaScript работает внутри скриптового движка вашего браузера.

Язык сценариев — это язык, который интерпретируется каждый раз при запуске сценария. Он предполагает наличие интерпретатора, и большинство из них очень удобочитаемы для человека. Чтобы быть полезным, язык сценариев легко изучить и использовать.

Каждый компилируемый язык может быть преобразован в язык сценариев, и наоборот, все зависит от реализации интерпретатора или компилятора, например, в C++ есть интерпретатор, поэтому его можно назвать языком сценариев, если он используется так (в целом не очень практично, поскольку C++ это очень сложный язык), одним из наиболее полезных скриптовых языков в настоящее время является Python...

Итак, чтобы ответить на ваш вопрос, определение заключается в использовании интерпретатора для быстрого и легкого запуска скриптовых программ, для решения простых задач или создания прототипов приложений. Самое эффективное использование скриптовых языков — это включение возможности для каждого использования расширять скомпилированное приложение.

Я предпочитаю, чтобы люди не использовали термин «язык сценариев», поскольку считаю, что это уменьшает усилия.Возьмите такой язык, как Perl, который часто называют «языком сценариев».

  • Перл — это язык программирования!
  • Perl компилируется так же, как Java и C++.Просто он компилируется намного быстрее!
  • В Perl есть объекты, пространства имен и замыкания.
  • В Perl есть IDE, отладчики и профилировщики.
  • Perl имеет обучение, поддержку и сообщество.
  • Perl — это не просто Интернет.Perl — это не только сисадмин.Perl — это не просто клейкая лента Интернета.

Почему нам вообще нужно различать такой язык, как Java, который компилируется, и Ruby, который не компилируется?В чем ценность маркировки?

Подробнее об этом см. http://xoa.petdance.com/Stop_saying_script.

Важным отличием является строгая типизация (против слабая типизация). Языки сценариев часто слабо типизированы., что позволяет быстрее писать небольшие программы.Для больших программ это является недостатком, поскольку не позволяет компилятору/интерпретатору самостоятельно находить определенные ошибки, что очень затрудняет рефакторинг кода.

Языки сценариев — это языки программирования, в которых программы обычно доставляются конечным пользователям в читаемой текстовой форме и где существует программа, которая может видимо выполнить эту программу напрямую.(Программа вполне может скомпилировать сценарий самостоятельно;здесь это не имеет значения, поскольку оно не видно пользователю.)

Языки сценариев довольно часто поддерживают интерактивный сеанс, когда пользователи могут просто ввести свою программу и немедленно выполнить ее.Это потому, что это тривиальное расширение основного требования из первого абзаца;Основным дополнительным требованием является добавление механизма определения завершения введенного оператора, чтобы его можно было отправить в механизм выполнения.

Немного другой взгляд на вопрос.Язык сценариев — это язык программирования, но язык программирования не обязательно является языком сценариев.Язык сценариев используется для управления системой или создания сценариев.Этой системой может быть операционная система с языком сценариев bash.Система может представлять собой веб-сервер с языком сценариев PHP.Языки сценариев предназначены для заполнения определенной ниши;это языки, специфичные для предметной области.Интерактивные системы интерпретировали языки сценариев, что породило представление о том, что языки сценариев интерпретируются;однако это следствие системы, а не самого языка сценариев.

Язык сценариев — это язык, который настраивает или расширяет существующую программу.
Язык сценариев — это язык программирования.

Определение «языка сценариев» довольно размыто.Я бы исходил из следующих соображений:

  1. В языках сценариев обычно нет видимых пользователю этапов компиляции.Обычно пользователь может запускать программы одной простой командой.

  2. Программы на языках сценариев обычно передаются в исходной форме.

  3. Языки сценариев обычно имеют среды выполнения, которые присутствуют на большом количестве систем, и среды выполнения можно легко установить в большинстве систем.

  4. Языки сценариев обычно являются кроссплатформенными и не привязаны к конкретной машине.

  5. Языки сценариев упрощают вызов других программ и взаимодействие с операционной системой.

  6. Языки сценариев обычно легко встраиваются в более крупные системы, написанные на более традиционных языках программирования.

  7. Языки сценариев обычно разрабатываются с учетом простоты программирования и с гораздо меньшим вниманием к скорости выполнения.(Если вам нужно быстрое выполнение, обычный совет — закодировать трудоемкие части на чем-то вроде C и либо встроить язык в C, либо вызвать биты C из языка.)

Некоторые из перечисленных выше характеристик справедливы для реализаций, и в этом случае я имею в виду более распространенные реализации.Были интерпретаторы C, в которых (AFAIK) не было очевидного этапа компиляции, но это не относится к большинству реализаций C.Вы, конечно, можете скомпилировать программу Perl в собственный код, но обычно это не так.Некоторые другие характеристики носят социальный характер.Некоторые из вышеперечисленных критериев в некоторой степени совпадают.Как я уже сказал, определение размыто.

Я бы сказал, что язык сценариев активно манипулирует сущностями, которые он сам не определяет.Например, JavaScript манипулирует объектами DOM, предоставляемыми браузером, PHP использует огромную библиотеку функций на основе C и так далее.Конечно, это не точное определение, а скорее способ подумать.

Если это не так/не стал бы запускать на процессоре, для меня это скрипт.Если интерпретатор должен работать на процессоре под программой, то это сценарий и язык сценариев.

Нет причин усложнять задачу?

Конечно, в большинстве (99%) случаев ясно, является ли язык скриптовым.Но учтите, что виртуальная машина может, например, эмулировать набор инструкций x86.Не сделает ли это байт-код x86 языком сценариев при запуске на виртуальной машине?Что, если бы кто-то написал компилятор, который превращал бы код Perl в собственный исполняемый файл?В этом случае я бы уже не знал, как назвать сам язык.Значение будет иметь результат, а не язык.

Опять же, мне неизвестно, чтобы что-то подобное делалось, поэтому на данный момент мне все еще удобно называть интерпретируемые языки скриптовыми языками.

А сценарий является относительно маленький программа.А система является относительно большой программа или коллекция относительно крупных программ.

Некоторые языки программирования имеют функции, которые разработчики языков и сообщество программистов считают полезными при написании относительно небольших программ.Эти языки программирования известны как языки сценариев, напримерPHP.

Аналогичным образом, другие языки программирования имеют функции, которые разработчики языков и сообщество программистов считают полезными при написании относительно больших программ.Эти языки программирования известны как системные языки, напримерДжава.

Теперь маленькие и большие программы можно писать на любом языке.Небольшая Java-программа представляет собой сценарий.Например, программа Java «Hello World» — это сценарий, а не система.Большая программа или набор программ, написанных на PHP, представляет собой систему.Например, Facebook, написанный на PHP, — это система, а не скрипт.

Рассматривать одну особенность языка как «лакмусовую бумажку» для определения того, подходит ли язык лучше всего для написания сценариев или системного программирования, сомнительно.Например, скрипты может компилироваться в байт-код или машинный код, или они может выполняться путем прямой интерпретации абстрактного синтаксического дерева (AST).

Так, язык является языком сценариев, если он обычно используется для написания сценариев.Для написания систем можно использовать язык сценариев, но такие приложения, скорее всего, будут сочтены сомнительными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top