Если ПО написано на скриптовых языках, например, на Python/Ruby/Perl/JS и т.д., где проходит граница, что творение является скриптом, а не программой или утилитой?

Некоторые пользователи считают, что решает кол-во строк, условно если в ПО более 100 строк, то это уже не скрипт. Часть пользователей руководствуются наличием интерфейса у ПО, если подтянут GUI/TUI на замену CLI, то это уже не скрипт. Кто-то смотрит на компиляцию ПО: если проект написан на скриптовом языке, но собран, например, через Pyinstaller или Nuitka, то это уже не скрипт. А кто-то читает исходник и если трудно разобрать его логику/алгоритм, то это уже не скрипт, а программа.

Отбросим в некотором роде устаревшую, официальную матчасть и проголосуем за признаки отличия скрипта от программы на одном из самых популярных IT ресурсов в Рунете.

Комментарии (22)


  1. ainu
    28.07.2024 21:03
    +4

    Скрипт - сценарий, буквально. Он один. Он конвертирует, отправляет, сжимает.

    А программа - это, например, Word, Windows, сайт. Любой скрипт это программа. Но не любая программа сводится к сценарию.


  1. YegorP
    28.07.2024 21:03
    +1

    Очевидно же. Скрипт это программа в программе.


    1. dyadyaSerezha
      28.07.2024 21:03

      Такие называются подпрограммами.


      1. YegorP
        28.07.2024 21:03

        Подпрограмма это часть программы, а я говорю о программе в программе. То есть такая дочерняя программа, которая управляет своей же средой исполнения.


        1. dyadyaSerezha
          28.07.2024 21:03
          +1

          Типа как Control panel в Windows?


    1. ne555 Автор
      28.07.2024 21:03
      +1

      Совсем неочевидно.

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


    1. red_dragon
      28.07.2024 21:03

      То есть, всё, что не операционная система, есть скрипт?


  1. D4rQ
    28.07.2024 21:03
    +1

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


    1. drr8593
      28.07.2024 21:03

      эту программу встроить в какой-то более крупный проект, то она станет скриптом

      это называется библиотека, а не скрипт.


  1. aleks-th
    28.07.2024 21:03
    +2

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

    Мне ближе определение выше, что скриптом обзываем вспомогательные программы, а самодостаточные программы обзываем программами )

    Но можно обозвать и все программами и хуже оно от этого работать не станет.


  1. SadOcean
    28.07.2024 21:03

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

    То есть у них абстрактный смысл разный.

    Скрипт - это сабсет, часть программы, работающая в рамках какой то среды интерпретатора.

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

    С семантической точки зрения программа это ведь тоже набор команд


  1. Biga
    28.07.2024 21:03

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

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

    Конечно, возникает вопрос: если я выложил скрипт на гитхаб - становится ли он от этого программой? Ответ: если никто не понимает, зачем это нужно, то не становится.

    Очень спорное получилось определение, ну и ладно, не воспринимайте слишком серьёзно.

    А ведь есть ещё замечательное слово "утилита"...


  1. mc2
    28.07.2024 21:03
    +1

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


  1. olivera507224
    28.07.2024 21:03
    +4

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


    1. voidinvader
      28.07.2024 21:03

      А если во время исполнения скрипта понадобится доввести какое либо значение? Скажем, 'y' или 'n'? Станет ли он от этого программой или нет?


      1. olivera507224
        28.07.2024 21:03

        Для меня - да, станет. Маленькой, считывающей буквально одно нажатие клавиши, но станет.

        Но твоё определение мне нравится больше, чем моё.


  1. voidinvader
    28.07.2024 21:03
    +1

    Внесу и свои пять копеек.

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

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


    1. eyeDM
      28.07.2024 21:03
      +1

      Выходит, всякие консольные полезняшки типа ping, grep - это скрипты?


  1. 19Zb84
    28.07.2024 21:03

    Все, что признается системой в рамках выполняемой работы - это программа, иначе это скрипт.


  1. Andrey7070
    28.07.2024 21:03

    Программа - пишется на языке программирования.

    Скрипт - пишется на "языке" командной оболочки ОС (bash, cmd.exe, и т.п.)


    1. 19Zb84
      28.07.2024 21:03

      Программа ведь может писаться и без языка, на перфокартах.


  1. sergey-gornostaev
    28.07.2024 21:03

    Нет никакой границы. Скрипт - это класс программ по типу среды исполнения. Утилита - это класс программ по функциональному назначению.

    Стандарт ISO/IEC/IEEE 24765:2010 даёт следующее определение термину программу: "Комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления".

    Стандарт ISO/IEC 2382-1:1993 даёт следующее определение термину программу: "Синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы."

    Как видим, скрипты тоже попадают в оба определения.