Если ПО написано на скриптовых языках, например, на Python/Ruby/Perl/JS и т.д., где проходит граница, что творение является скриптом, а не программой или утилитой?
Некоторые пользователи считают, что решает кол-во строк, условно если в ПО более 100 строк, то это уже не скрипт. Часть пользователей руководствуются наличием интерфейса у ПО, если подтянут GUI/TUI на замену CLI, то это уже не скрипт. Кто-то смотрит на компиляцию ПО: если проект написан на скриптовом языке, но собран, например, через Pyinstaller или Nuitka, то это уже не скрипт. А кто-то читает исходник и если трудно разобрать его логику/алгоритм, то это уже не скрипт, а программа.
Отбросим в некотором роде устаревшую, официальную матчасть и проголосуем за признаки отличия скрипта от программы на одном из самых популярных IT ресурсов в Рунете.
Комментарии (22)
YegorP
28.07.2024 21:03+1Очевидно же. Скрипт это программа в программе.
dyadyaSerezha
28.07.2024 21:03Такие называются подпрограммами.
YegorP
28.07.2024 21:03Подпрограмма это часть программы, а я говорю о программе в программе. То есть такая дочерняя программа, которая управляет своей же средой исполнения.
ne555 Автор
28.07.2024 21:03+1Совсем неочевидно.
Более того, на некоторых новостных IT-ресурсах модераторы испытывают сложности: как лучше упомянуть разработку, чтобы не ошибиться.
D4rQ
28.07.2024 21:03+1Скрипт - это что-то вспомогательное. Например, проект калькулятора на js - это программа, а если эту программу встроить в какой-то более крупный проект, то она станет скриптом. В таком случае выходит, что один и тот же кусок кода может быть и скриптом, и программой
drr8593
28.07.2024 21:03эту программу встроить в какой-то более крупный проект, то она станет скриптом
это называется библиотека, а не скрипт.
aleks-th
28.07.2024 21:03+2Собственно зачем заморачиваться, как ни назови ни лучше не хуже от этого не станет.
Мне ближе определение выше, что скриптом обзываем вспомогательные программы, а самодостаточные программы обзываем программами )
Но можно обозвать и все программами и хуже оно от этого работать не станет.
SadOcean
28.07.2024 21:03Мне кажется граница пролегает не здесь и основное отличие в том, что скрипт - это набор инструкций, сценарий для какого нибудь готового механизма, а программа - это абстракция функции на компьютере.
То есть у них абстрактный смысл разный.
Скрипт - это сабсет, часть программы, работающая в рамках какой то среды интерпретатора.
Скрипт может быть программой только потому, что у нас есть среды, делающие процесс приближенным к этому.
С семантической точки зрения программа это ведь тоже набор команд
Biga
28.07.2024 21:03Скрипт - это то, что ты делаешь для себя, ну или для друзей, единомышленников. Даже если это очень красиво оформлено, а не просто слеплено на коленке.
Программа - это то, что предназначено для неограниченного круга лиц. Даже если код говно (часто ли вы смотрите в код того, чем пользуетесь?). Даже если интерфейс говно (тоже не редкость).
Конечно, возникает вопрос: если я выложил скрипт на гитхаб - становится ли он от этого программой? Ответ: если никто не понимает, зачем это нужно, то не становится.
Очень спорное получилось определение, ну и ладно, не воспринимайте слишком серьёзно.
А ведь есть ещё замечательное слово "утилита"...
mc2
28.07.2024 21:03+1IMHO разница между скриптом и программой сугубо в запуске интерпретатора: для программы он исполняется единожды, во время компиляции; для скриптов, каждый раз при вызове скрипта.
olivera507224
28.07.2024 21:03+4Если написанный код предназначен запуститься, как-то обработать некие данные и завершиться, при этом во всей этой схеме отсутствует пользователь, то это - скрипт. Причём не важно, написан он на компилируемом языке или на интерпретируемом. Всё остальное - программа. Это исключительно мой ориентир, на истине в последней инстанции не настаиваю.
voidinvader
28.07.2024 21:03А если во время исполнения скрипта понадобится доввести какое либо значение? Скажем, 'y' или 'n'? Станет ли он от этого программой или нет?
olivera507224
28.07.2024 21:03Для меня - да, станет. Маленькой, считывающей буквально одно нажатие клавиши, но станет.
Но твоё определение мне нравится больше, чем моё.
voidinvader
28.07.2024 21:03+1Внесу и свои пять копеек.
Программа - это когда пользователю предоставляется конечное множество функций, которые он может свободно использовать, и по окончанию исполнения которых, работа программы не заканчивается, а возвращается в некоторую точку, откуда пользователь может запустить другое действие. То есть, пользователь управляет не просто ходом исполнения функций посредством вводимых им параметров, но и циклом жизни программы в целом.
А скрипт предназначен для одной узкой задачи и работает только в одном направлении. Даже если пользователь может посредством ввода параметров управлять ходом исполнения скрипта, по завершению всех инструкций скрипт безальтернативно закроется, не предлагая пользователю выполнить другое действие.
19Zb84
28.07.2024 21:03Все, что признается системой в рамках выполняемой работы - это программа, иначе это скрипт.
Andrey7070
28.07.2024 21:03Программа - пишется на языке программирования.
Скрипт - пишется на "языке" командной оболочки ОС (bash, cmd.exe, и т.п.)
sergey-gornostaev
28.07.2024 21:03Нет никакой границы. Скрипт - это класс программ по типу среды исполнения. Утилита - это класс программ по функциональному назначению.
Стандарт ISO/IEC/IEEE 24765:2010 даёт следующее определение термину программу: "Комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления".
Стандарт ISO/IEC 2382-1:1993 даёт следующее определение термину программу: "Синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы."
Как видим, скрипты тоже попадают в оба определения.
ainu
Скрипт - сценарий, буквально. Он один. Он конвертирует, отправляет, сжимает.
А программа - это, например, Word, Windows, сайт. Любой скрипт это программа. Но не любая программа сводится к сценарию.