В чем разница между «сценарием» и «приложением»? - PullRequest
33 голосов
/ 19 сентября 2008

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

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

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

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

Ответы [ 20 ]

46 голосов
/ 19 сентября 2008

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

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

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

41 голосов
/ 19 сентября 2008

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

30 голосов
/ 19 сентября 2008

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

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

8 голосов
/ 19 сентября 2008

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

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

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

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

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

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

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

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

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

8 голосов
/ 16 января 2009

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

4 голосов
/ 19 сентября 2008

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

3 голосов
/ 19 сентября 2008

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

3 голосов
/ 19 сентября 2008

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

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

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

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

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

2 голосов
/ 19 сентября 2008

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

2 голосов
/ 19 сентября 2008

Приложение - это набор скриптов, ориентированных на общий набор проблем.

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

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

...