Если ПО написано на скриптовых языках, например, на Python/Ruby/Perl/JS и т.д., где проходит граница, что творение является скриптом, а не программой или утилитой?
Некоторые пользователи считают, что решает кол-во строк, условно если в ПО более 100 строк, то это уже не скрипт. Часть пользователей руководствуются наличием интерфейса у ПО, если подтянут GUI/TUI на замену CLI, то это уже не скрипт. Кто-то смотрит на компиляцию ПО: если проект написан на скриптовом языке, но собран, например, через Pyinstaller или Nuitka, то это уже не скрипт. А кто-то читает исходник и если трудно разобрать его логику/алгоритм, то это уже не скрипт, а программа.
Отбросим в некотором роде устаревшую, официальную матчасть и проголосуем за признаки отличия скрипта от программы на одном из самых популярных IT ресурсов в Рунете.
Комментарии (36)
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 - это программа, а если эту программу встроить в какой-то более крупный проект, то она станет скриптом. В таком случае выходит, что один и тот же кусок кода может быть и скриптом, и программой
aleks-th
28.07.2024 21:03+3Собственно зачем заморачиваться, как ни назови ни лучше не хуже от этого не станет.
Мне ближе определение выше, что скриптом обзываем вспомогательные программы, а самодостаточные программы обзываем программами )
Но можно обозвать и все программами и хуже оно от этого работать не станет.
SadOcean
28.07.2024 21:03+1Мне кажется граница пролегает не здесь и основное отличие в том, что скрипт - это набор инструкций, сценарий для какого нибудь готового механизма, а программа - это абстракция функции на компьютере.
То есть у них абстрактный смысл разный.
Скрипт - это сабсет, часть программы, работающая в рамках какой то среды интерпретатора.
Скрипт может быть программой только потому, что у нас есть среды, делающие процесс приближенным к этому.
С семантической точки зрения программа это ведь тоже набор команд
Biga
28.07.2024 21:03Скрипт - это то, что ты делаешь для себя, ну или для друзей, единомышленников. Даже если это очень красиво оформлено, а не просто слеплено на коленке.
Программа - это то, что предназначено для неограниченного круга лиц. Даже если код говно (часто ли вы смотрите в код того, чем пользуетесь?). Даже если интерфейс говно (тоже не редкость).
Конечно, возникает вопрос: если я выложил скрипт на гитхаб - становится ли он от этого программой? Ответ: если никто не понимает, зачем это нужно, то не становится.
Очень спорное получилось определение, ну и ладно, не воспринимайте слишком серьёзно.
А ведь есть ещё замечательное слово "утилита"...
mc2
28.07.2024 21:03+2IMHO разница между скриптом и программой сугубо в запуске интерпретатора: для программы он исполняется единожды, во время компиляции; для скриптов, каждый раз при вызове скрипта.
olivera507224
28.07.2024 21:03+5Если написанный код предназначен запуститься, как-то обработать некие данные и завершиться, при этом во всей этой схеме отсутствует пользователь, то это - скрипт. Причём не важно, написан он на компилируемом языке или на интерпретируемом. Всё остальное - программа. Это исключительно мой ориентир, на истине в последней инстанции не настаиваю.
voidinvader
28.07.2024 21:03А если во время исполнения скрипта понадобится доввести какое либо значение? Скажем, 'y' или 'n'? Станет ли он от этого программой или нет?
olivera507224
28.07.2024 21:03Для меня - да, станет. Маленькой, считывающей буквально одно нажатие клавиши, но станет.
Но твоё определение мне нравится больше, чем моё.
voidinvader
28.07.2024 21:03+2Внесу и свои пять копеек.
Программа - это когда пользователю предоставляется конечное множество функций, которые он может свободно использовать, и по окончанию исполнения которых, работа программы не заканчивается, а возвращается в некоторую точку, откуда пользователь может запустить другое действие. То есть, пользователь управляет не просто ходом исполнения функций посредством вводимых им параметров, но и циклом жизни программы в целом.
А скрипт предназначен для одной узкой задачи и работает только в одном направлении. Даже если пользователь может посредством ввода параметров управлять ходом исполнения скрипта, по завершению всех инструкций скрипт безальтернативно закроется, не предлагая пользователю выполнить другое действие.
eyeDM
28.07.2024 21:03+1Выходит, всякие консольные полезняшки типа ping, grep - это скрипты?
voidinvader
28.07.2024 21:03Да. Даже если скрипт скомпилирован в отдельный .exeшник, но по сути свой он скрипт - это скрипт. Потому что среда выполнения не может быть мерилом того где заканчивается скрипт и начинается программа.
bogolt
28.07.2024 21:03нет это программы, но они могут быть вызваны скриптом.
Сам
ping
иgrep
программы. Однако когда вы делает`grep -r fuck src` это уже комана ( хотя взывает программу )
а когда у вас
`грепнуть процессы, если найден такой-то убить его и перезапустить`
то это уже будет скрпит ( хоть он внутри использует штук 10 разных программ ).
19Zb84
28.07.2024 21:03Все, что признается системой в рамках выполняемой работы - это программа, иначе это скрипт.
Andrey7070
28.07.2024 21:03Программа - пишется на языке программирования.
Скрипт - пишется на "языке" командной оболочки ОС (bash, cmd.exe, и т.п.)
19Zb84
28.07.2024 21:03Программа ведь может писаться и без языка, на перфокартах.
SAPetrovich77
28.07.2024 21:03Возможно я кого-то удивлю, но на перфокартах, программа тоже пишется на вполне конкретном языке.
19Zb84
28.07.2024 21:03А как язык называется ? И где посмотреть можно ? Я не смог найти название и упоминание языка.
https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%84%D0%BE%D0%BA%D0%B0%D1%80%D1%82%D0%B0При работе с перфокартами в текстовом режиме каждая колонка обозначает один символ; таким образом, одна перфокарта представляет строку из 80 символов. Допускаются лишь некоторые комбинации пробивок. Наиболее просто кодируются цифры — одной пробивкой в позиции, обозначенной данной цифрой. Буквы и другие символы кодируются несколькими пробивками в одной колонке. Отсутствие пробивок в колонке означает пробел (в отличие от перфоленты, где отсутствие пробивок означает пустой символ, NUL). В системе IBM/360 были определены комбинации пробивок для всех 256 значений байта (например, пустой символ NUL обозначался комбинацией 12-0-1-8-9), так что фактически в текстовом режиме можно было записывать и любые двоичные данные.
Для упрощения работы с текстовыми данными, часто на верхнем крае перфокарты также проставлялись те же символы в обычном, понятным человеку, виде.
Feromagnits
28.07.2024 21:03А если вся программа написана в таком стиле:
import os os.startfile("script.bat")
В вашем случае называться тогда как будет "скрипт-программа"?
sergey-gornostaev
28.07.2024 21:03+2Нет никакой границы. Скрипт - это класс программ по типу среды исполнения. Утилита - это класс программ по функциональному назначению.
Стандарт ISO/IEC/IEEE 24765:2010 даёт следующее определение термину программу: "Комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления".
Стандарт ISO/IEC 2382-1:1993 даёт следующее определение термину программу: "Синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы."
Как видим, скрипты тоже попадают в оба определения.
pda0
28.07.2024 21:03Если код рассчитан на то, что конечный пользователь будет его писать, исправлять и т.д. - это скрипт. Если нет - программа.
a-tk
28.07.2024 21:03Из точки А в точку Б выехала машина. Если с ней ничего интересного больше не происходит, то скрипт. Если происходит - то программа.
deafcafe
28.07.2024 21:03Скрипт человекочитаемый, можно открыть и поправить в текстовом редакторе; большинство программ можно редактировать только в hex-редакторе, иначе она перестанет работать.
evtomax
28.07.2024 21:03+1Компьютерная программа - любая последовательность действий, написанная на специальном языке, которую может выполнить компьютер. То есть любой скрипт, даже из одной строчки - это компьютерная программа. Всегда думал, что всё очевидно, и разногласий по этому вопросу нет, но опрос показывает другие результаты...
SAPetrovich77
28.07.2024 21:03Ну как бы да, любой скрипт это тоже программа.
Но вот пожалуй не каждая программа это скрипт.
Ну и разделение языков на скриптовые и нет тоже как бы намекает на то что считать скриптом что программой.
phaggi
28.07.2024 21:03Скрипт - линейная последовательность команд, без функций и классов, в одном файле или модуле (без импортов кода из других самописных файлов/модулей), не требующая вмешательства пользователя при исполнении, не зацикленная (грубо говоря, без
while True
), содержащая все необходимые параметры для работы (ссылки на внешние ресурсы, например, на файл с данными), не принимающая параметров и не возвращающая специальных итогов (сохранить итог в файл можно).Если любой из указанных нюансов присутствует - это не скрипт, а полноценная программа.
Пример: открыть файл с данными, перебрать там строки, обработать каждую, сформировать результат, сохранить его, все закрыть и завершить работу.
onets
28.07.2024 21:03Ууу, как же бесили мамкины бизнесмены на фриласнерских биржах - напиши СКРИПТ, чтоб работало как одноклассники
за 1000 рублей
bioGavs
28.07.2024 21:03Если код пишется с намерением что он будет использоваться другой программой это скрипт.
Например python интерпретатор и любой код написанный для него.
ainu
Скрипт - сценарий, буквально. Он один. Он конвертирует, отправляет, сжимает.
А программа - это, например, Word, Windows, сайт. Любой скрипт это программа. Но не любая программа сводится к сценарию.