Какая разница между "script" и "приложением"?

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

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

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

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

Ответ 1

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

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

Интернет - интересный пример встречного. Нам всем нравится искать вещи в поисковой системе Google. Основная часть кода, который идет на создание "базы данных", ссылается на него только его авторами и сопровождающими. Это делает его script?

Ответ 2

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

Ответ 3

Обычно это "script" по сравнению с "программой".

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

Ответ 4

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

Ответ 5

Это интересная тема, и я не думаю, что есть очень хорошие рекомендации по дифференциации "script" и "приложения".

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

Script (Википедия → Язык сценариев):

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

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

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

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

Это часто просто семантический аргумент или даже способ очернения некоторых языков программирования. Насколько мне известно, "script" - это тип программы, и точное определение несколько неопределенно и зависит от контекста.

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

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

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

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

Ответ 10

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

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

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

Ответ 11

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

Программа:

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

Script:

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

Ответ 12

Взяв perl в качестве примера, вы можете писать perl-скрипты или perl-приложения.

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

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

Ответ 13

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

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

Ответ 14

Как насчет:

Script:

A script - это текстовый файл (или набор текстовых файлов) программных операторов, написанных на языке, который позволяет записывать на нем отдельные написанные на нем операторы для машинного исполняемого > code непосредственно перед выполняется каждый и с целью этого.

Применение:

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

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

Любые берущие?:)

Ответ 15

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

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

A script, однако, просто сбрасывается вместе, как подходит, и мало планирования.

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

Кроме того, приложение может содержать сценарии, которые агрегированы, содержат целое. Но script может ссылаться только на приложение.

Ответ 16

Ответ на

@Jeff - это хорошо. Мое любимое объяснение

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

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

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

Ответ 17

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

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

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

  • Если код ОСНОВНО манипулирует действиями других программ, а итоговым результатом является ОСНОВНО результаты работы управляемых программ - это script. Буквально script действий для некоторых программ.

Ответ 18

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

Ответ 19

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

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

Ответ 20

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

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


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

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

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