В чем разница между «скриптом» и «приложением»?

StackOverflow https://stackoverflow.com/questions/98268

  •  01-07-2019
  •  | 
  •  

Вопрос

Я имею в виду такие различия, как в этот ответ:

... bash предназначен не для написания приложений, а для написания сценариев.Конечно, в вашем приложении могут быть некоторые служебные сценарии, но не начинайте их писать. critical-business-logic.sh потому что другой язык, вероятно, лучше подходит для подобных вещей.

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

(И я использую C в своей повседневной работе, так что я не просто защищаюсь.)

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

Решение

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

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

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

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

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

Обычно это «сценарий» и «программа».

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

Это интересная тема, и я не думаю, что существуют хорошие рекомендации по разграничению «скрипта» и «приложения».

Давайте посмотрим на некоторые статьи в Википедии, чтобы почувствовать разницу.

Скрипт (Википедия -> Язык сценариев):

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

Приложение (Википедия -> Прикладное программное обеспечение -> Терминология)

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

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

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

Также по назначению скрипт вообще выполняет задачи об этом нужно позаботиться, например, создать сценарии, которые создают несколько версий выпуска для определенной части программного обеспечения.С другой стороны, приложения ориентированы на обеспечение функциональности это более усовершенствовано и ориентировано на конечного пользователя.Например, Блокнот или Firefox.

У Джона Оустерхаута (изобретателя TCL) есть хорошая статья на сайте http://www.tcl.tk/doc/scripting.html где он предлагает провести различие между языками системного программирования (для реализации строительных блоков, упором на корректность, безопасность типов) и языками сценариев (для объединения строительных блоков, акцентом на реагирование на изменяющуюся среду и требования, простоту преобразования в текстовые представления и из них).Если вы воспользуетесь этой системой категоризации, то 99% программистов выполняют работу, которая больше подходит для языков сценариев, чем для системных языков программирования.

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

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

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

Я мог бы использовать термин «сценарий» для обозначения программы, которая в основном выполняется линейно, а не с множеством последовательных логических операций или подпрограмм, подобно тому, как «сценарий» в Голливуде представляет собой линейную последовательность инструкций, которые должен выполнить актер.Я мог бы использовать его для обозначения программы, написанной на языке, встроенном в более крупную программу, с целью управления этой программой.Например, автоматизация задач в старой Mac OS с помощью AppleScript или запуск программы, которая каким-то образом раскрывает себя с помощью встроенного интерфейса TCL.

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

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

Смотрите также Это программа Perl или сценарий Perl? в perlfaq1.

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

Приложение — это набор сценариев, предназначенных для решения общего набора задач.

Скрипт — это фрагмент кода для выполнения одной довольно конкретной задачи.

ИМХО, разница не имеет никакого отношения к используемому языку.На bash можно написать сложное приложение, а на C++ — простой сценарий.

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

Программа:

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

Скрипт:

Набор инструкций, которые будут интерпретироваться, известен как сценарий.

На примере Perl вы можете писать сценарии или приложения на Perl.

Сценарий будет подразумевать один файл или одно пространство имен.(например.updateFile.pl).

Приложение может представлять собой нечто, состоящее из набора файлов или пространств имен/классов (например,объектно-ориентированное Perl-приложение со множеством файлов модулей .pm).

Лично я считаю, что разделение — это шаг назад от фактической реализации.

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

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

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

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

Приложение большое, оно будет использоваться людьми снова и снова и, возможно, продано клиенту.

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

Как насчет:

Скрипт:

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

Приложение:

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

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

Есть желающие?:)

Ответ @Джеффа хорош.Моё любимое объяснение

Многие (большинство?) Языки сценариев интерпретируются, и несколько скомпилированных языков считаются языками сценариев, но вопрос скомпилированной против.Интерпретируется только слабо связано с вопросом о «сценарии» против.«серьезные» языки.

Многие проблемы здесь заключается в том, что «сценарии»-это довольно расплывчатое обозначение-это означает язык, который удобен для написания сценариев, в отличие от написания «полномасштабных программ» (или приложений).Но как отличить сложный сценарий от простого приложения?По сути, это вопрос, на который нет ответа.Как правило, сценарий-это серия команд, применяемых к некоторым наборам данных, возможно, в определенном пользователе порядке ...Но затем можно растянуть это описание, чтобы применить к Photoshop, что явно является основным применением.Сценарии, как правило, меньше, чем приложения, делают четко определенную вещь и являются «простыми» для использования, и, как правило, могут быть разложены в четкую серию подзаконных операций, но все эти вещи субъективны.

Ссылка из здесь.

Я думаю, что вообще не имеет значения, компилируется код или интерпретируется.

Истинная разница заключается в основной логике кода:

  • Если код вносит в систему новую функциональность, которая не реализована в других программах – это программа.Им даже можно управлять с помощью сценария.

  • Если код ПРЕИМУЩЕСТВЕННО манипулируется действиями других программ и общий результат - это ПРЕИМУЩЕСТВЕННО результаты работы манипулируемых программ - это скрипт.Буквально скрипт действий для некоторых программ.

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

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

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

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

Согласно этому определению, сценарий — это код, предназначенный для управления более крупным приложением (пакетом).Javascript может вызывать Firefox для открытия окон или манипулирования DOM.Сценарий Bash выполняет существующие программы или другие сценарии и соединяет их вместе с помощью каналов.


Вы также спрашиваете, почему бы не использовать скриптовые языки, поэтому:

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

В большинстве случаев сценарии можно заменить настоящим, легким языком, таким как Python или Ruby.

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