Язык сценариев vs язык программирования

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

13 ответов


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

например, в обычном случае вам нужно скомпилировать программу на C, прежде чем вы сможете ее запустить. Но в обычном случае вам не нужно компилировать программу JavaScript перед ее запуском. Поэтому JavaScript иногда называют "скриптовым" языком.

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

также обратите внимание, что является ли язык "скриптовым" языком или нет, может быть больше о среде, чем о языке. Нет причин, по которым вы не можете написать интерпретатор C и использовать его в качестве языка сценариев (и людей иметь.) Также нет причин, по которым вы не можете скомпилировать JavaScript для машинного кода и сохранить его в исполняемом файле (и у людей есть). Хорошим примером этого является язык Ruby: исходная реализация была полностью интерпретирована ("скриптовый" язык), но теперь для нее есть несколько компиляторов.

некоторые примеры "скриптовых" языков (например, языки, которые являются традиционно используется без явной компиляции шаг):

  • Lua
  • JavaScript
  • VBScript и VBA
  • Perl

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

  • C
  • C++
  • D
  • Java (но обратите внимание, что Java компилируется в байт-код, который затем интерпретируется и / или перекомпилируется в во время выполнения)
  • Паскаль

...и тогда у вас есть такие вещи, как Python, которые сидят в обоих лагерях: Python широко используется без шага компиляции, но основная реализация (CPython) делает это путем компиляции в байт-код на лету, а затем запуск байт-кода в виртуальной машине, и это can запишите этот байт-код в файлы (.pyc, .pyo) для использования без перекомпиляции.

Это просто очень немногие, если вы делаете некоторые исследования вы можете найти намного больше.


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

первоначально были языки программирования, которые были написаны для создания программ, таких как excel, word, браузеры, игры и т. д. Эти программы были построены с такими языками, как c и java. Сверхурочные, эти программы нуждались в способе для пользователей, чтобы создать новую функциональность, поэтому они должны были предоставить интерфейс для их байт-кода и, следовательно родились скриптовые языки.

язык сценариев обычно не компилируется, поэтому может запускаться, как только вы напишете что-то значимое. Следовательно, excel может быть построен с использованием C++, но он предоставляет пользователям язык сценариев VBA для определения функциональности. Аналогично браузеры могут быть построены с C++ / Java, но они предоставляют язык сценариев javascript (никак не связанный с java). Игры, как правило, построены на C++, но предоставляют пользователям язык Lua для определения пользовательских функциональность.

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

хотя языки сценариев могут иметь меньший доступ и медленнее, они могут быть очень мощный инструмент. Одним из факторов, объясняющих успех скриптовых языков, является простота обновления. Вы помните дни Java-апплетов в интернете, это пример запуска языка программирования (java) против запуска языка сценариев (javascript). В то время компьютеры не были такими мощными, а javascript не был таким зрелым, поэтому Java-апплеты доминировали в сценах. Но Java-апплеты были раздражающими, они требовали от пользователя сортировки загрузки и компиляции языка. Перенесемся на сегодня, Java-апплеты почти вымерли, и Javascript доминирует на сцене. Javascript очень быстро загружается, так как большинство компонентов браузера уже установлены.

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


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

языки не классифицируются как скрипт или нет-это полностью зависит от среды выполнения.

Если среда интерпретируется, это обычно называют средой сценариев.


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

Я думаю, что" интерпретируемое vs скомпилированное " различие действительно симптом расширения существующей программы (со встроенным интерпретатором), а не внутренняя разница. Программистов и непрофессионалов больше волнует следующее: "что делает программист?"Тот факт, что одна программа интерпретируется, а другая компилируется, очень мало значит для определения разницы в деятельности Творца. Вы ведь не судите драматурга по тому, читают ли его пьесы вслух или ставят на сцене?


Язык Программирования : Компилируется в машинный код и запускается на оборудовании базовой операционной системы.

Скриптовый Язык : Является подмножеством unstructure языка программирования. Это обычно интерпретируется. это в основном "скрипты" других вещей, чтобы делать вещи. Основной упор делается не на создание собственных приложений, а на то, чтобы существующее приложение действовало так, как вы хотите, например JavaScript для браузеров, TCL и т. д.,

*** но есть ситуация, когда язык программирования преобразуется в интерпретатор и вице-стих, как использовать есть интерпретатор C, где вы можете 'C' сценарий. Скрипты обычно пишутся для управления поведением приложения, где в качестве языка программирования используется для создания приложений. Но будьте осторожны, что демаркация размывается изо дня в день, как пример Python это зависит от того, как вы используете язык.


языки сценариев являются подмножеством языков программирования.

  1. языки сценариев не компилируются в машинный код пользователем (python, perl, shell и т. д.). Скорее, другая программа (называемая интерпретатором, запускает программу и имитирует ее поведение)
  2. некоторые языки программирования, которые не являются сценариями (C, C++, Haskell и другие "скомпилированные" языки), компилируются в машинный код и затем запускаются.

Я думаю, что то, что вы называете "различием", на самом деле является следствием реальной разницы.

фактическая разница является целью написанного кода. Кто будет запускать этот код.

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

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

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

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

Если мы говорим что реальная разница будет ли он составлен или нет, то проблема в том, что когда выполняется JavaScript в V8 компилируется и при запуске в Rhino нет.

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

код Python нацелен на интерпретатор, поэтому мы можем сказать, что это " скрипты" операции с этим переводчиком. Но когда вы пишете код Python, вы не видите его как сценарий интерпретатора, вы видите его как создание приложения. Интерпретатор просто существует, чтобы кодировать на более высоком уровне, среди прочего. Так что для меня Python-это скорее язык программирования, чем язык сценариев.


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

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

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

итог: выбор языка зависит от характера выполняемой задачи и выделения языка, поскольку язык сценариев-это миф.


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

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

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

src ECMA


Если мы видим логически язык программирования и язык сценариев, так что это 99.09% то же самое . поскольку мы используем одну и ту же концепцию , такую как цикл ,условие управления, переменная и все, поэтому мы можем сказать, что да, оба одинаковы, но есть только одна вещь, которая отличается между ними, которая находится в C/C++ и другом языке программирования, мы компилируем код перед выполнением . но в PHP, JavaScript и других языках сценариев нам не нужно компилировать, мы непосредственно выполняем в браузере.

спасибо Нитиш К. Джха


скриптовых языков

языки сценариев интерпретируются в другой программе. JavaScript встроен в браузер и интерпретируется этим браузером.

примеры скриптовых языков

  1. JavaScript
  2. Perl
  3. Python

преимущества скриптовых языков:

  1. Simple-языки сценариев легче писать, чем программирование язык.

  2. меньше строк кода (LOC)

запрограммированных языков

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

примеры языков программирования

  1. C
  2. C++ и
  3. Java

больше Подробности


в скриптовых языках, таких как (JavaScript и старые версии PHP), мы используем существующие фундаментальные функции и метод для выполнения нашей работы. Рассмотрим пример JavaScript можно использовать ajax или web-sockets только если они поддерживаются браузером или существуют методы или они в браузере. Но в таких языках , как C или C++, Java мы можем написать эту функцию с нуля, даже если какая-либо библиотека для этой функции недоступна, но мы не можем сделать это в JavaScript.

вы можете поддержать web-сокеты в Internet Explorer 8 или ранее с помощью JavaScript Но вы можете написать плагин на C или C++ или Java, который может добавить функцию web-socket в Internet Explorer 8.

В основном на языках сценариев мы пишем код в последовательности, которые выполняют существующие методы в последовательности для завершения нашей работы. Ввод чисел и формул в цифровой калькулятор для выполнения операции также является примером языка сценариев.Следует отметить, что compiler / run-time-среда каждого скриптового языка всегда написана на языке программирования, в котором мы можем добавлять больше функций и методов и писать новые библиотеки.

PHP Это язык, который несколько B / w программирования и сценариев. Мы можем добавить новые методы, добавив скомпилированные расширения, написанные на другом языке высокого уровня. Мы не можем добавлять функции высокого уровня сети или создавать библиотеки обработки изображений непосредственно в РНР.

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


назад, когда мир был молод и в мире ПК, который вы выбрали из .exe или .Бэт, очертания были просты. В системах Unix всегда были сценарии оболочки (/bin /sh,/bin /csh,/bin/ksh и т. д.) и скомпилированные языки (C/C++ / Fortran).

чтобы различать роли и обязанности, скомпилированные языки (часто называемые языками 3-го поколения) рассматривались как языки "программирования", а языки "сценариев" рассматривались как языки, которые вызывали интерпретатор (часто называемый Языки 4-го поколения). Скриптовые языки часто использовались в качестве "клея" для соединения между несколькими командами/скомпилированными программами, чтобы пользователю не приходилось беспокоиться о наборе шагов для выполнения своей задачи - они разработали один файл, который определял, какие шаги они хотят выполнить, и это стало "сценарием" для любого, кто будет следовать.

различные люди / группы написали новые интерпретаторы для решения конкретной проблемной области. awk является одним из наиболее известных, и это использовался в основном для сопоставления шаблонов и применения ряда преобразований данных на входе. Он работал хорошо, но имел ограниченную проблемную область. Расширение этого домена было практически невозможно, поскольку исходный код был недоступен. Perl (Larry Wall, principle author/architect) Tool scripting to the next level-и разработал интерпретатор, который не только позволял пользователю запускать системные команды, манипулировать входными и выходными данными, поддерживать типовые переменные, но и получать доступ к системному уровню Unix API как функции из самих сценариев. Вероятно, это был один из первых широко используемых скриптовых языков высокого уровня. Именно с Perl (IMHO) скриптовые языки пересекли произвольную линию и добавили возможности языков программирования.

Ваш вопрос был конкретно о Python. Поскольку интерпретатор python работает против текстового файла, содержащего код python, и что код python может работать в любом месте, где есть интерпретатор python, я бы сказал что это язык сценариев (в том же ключе, что и в Perl). Вам не нужно перекомпилировать пользовательский командный файл python для каждой другой архитектуры OS/CPU (как с C/C++/Fortran), что делает его значительно более портативным и простым в использовании.

кредит для этого ответа идет Джерролду (Джерри) Хейману. Исходная нить: https://www.researchgate.net/post/Is_Python_a_Programming_language_or_Scripting_Language