Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой?
Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
Здравствуйте, pira, Вы писали:
P>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой?
Компилируемость (в байткод) не важна. Очень многие языки это и так делают (неявно).
ИМХО основное (историческое?) отличие — это возможность исполняться нативно. Результат JIT-а в исполняемый файл это уже не скрипт.
P>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
хаскелл тут непричём, это shebang, фича командного интерпретатора (и да — ты перепутал символы в shebang).
Здравствуйте, IID, Вы писали:
IID>Компилируемость (в байткод) не важна. Очень многие языки это и так делают (неявно). IID>ИМХО основное (историческое?) отличие — это возможность исполняться нативно. Результат JIT-а в исполняемый файл это уже не скрипт.
А тут как сову натягивать. Основной критерий, кмк, это возможность поправить исходный код на ходу.
Всё остальное — это уже вопрос терминологии. Скажем, sfx архив с интерпретатором и скриптом внутри вполне реально выдать за пакет с скриптами. Добавим сфероконины: возьмём любой софт, который хранит скрипт в ресурсах / базе / отдельных файлах и имеет встроенный редактор скриптов. Ну да, он тоже скриптуемый, даже если эти скрипты в фоне в натив перегоняются.
Здравствуйте, pira, Вы писали:
P>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой? P>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
Простота линковки -- иначе, как уже сказано выше, не надо перекомпилировать.
Боже, ну и дела.
Ладно, экскурс для самых зелёных:
На заре первых диких программных комплексов человек часто предпринимал попытки их одомашнить. В итоге эволюции и труда многих программистов создавались командные оболочки. Первые программисты были очень трудолюбивы, но генетика, бессердечная сволочь, всё же делала своё дело — то там то сям добавляя крупицу лени. Как ни прискорбно, в итоге появился очень ленивый программист, которому лень было столько трудиться. И вот закралась ему крамольная мысль — а почему бы не переложить всю эту работу на компьютер? К тому моменту совесть по отношению к компьютеру уже была рудиментом у большинства его вида, что и позволило нашему программисту воплотить свои идеи в виде расширений возможностей для командной оболочки. Дальнейшие годы эволюции оформили эти расширения в интерпретируемый язык сценариев, которые в простонародье стали называть скриптами.
Так, что исторически в сленге программистов скрипт — это то, что интерпретируется.
То, что сейчас идёт судорожное броуновское движение динамики в статику, статики в динамику, интерпретируемого в компилируемое, компилируемое в интерпретируемое — это всё "мартышкин труд" и починёт на полях всех остальных "гениальных" идей. Тема не стоит топика.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, IID, Вы писали:
IID>>Компилируемость (в байткод) не важна. Очень многие языки это и так делают (неявно). IID>>ИМХО основное (историческое?) отличие — это возможность исполняться нативно. Результат JIT-а в исполняемый файл это уже не скрипт.
S>А тут как сову натягивать. Основной критерий, кмк, это возможность поправить исходный код на ходу.
что значит на ходу? если я запустил питоновский скрипт и потом сделал изменения -- они в этом работающем скрипте не будут видны.
Здравствуйте, IID, Вы писали:
IID>Здравствуйте, pira, Вы писали:
P>>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой?
IID>Компилируемость (в байткод) не важна. Очень многие языки это и так делают (неявно). IID>ИМХО основное (историческое?) отличие — это возможность исполняться нативно. Результат JIT-а в исполняемый файл это уже не скрипт.
а почему тогда скрипты на Lua называют скриптами?
P>>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
IID>хаскелл тут непричём, это shebang, фича командного интерпретатора (и да — ты перепутал символы в shebang).
Здравствуйте, Sharov, Вы писали:
S>Здравствуйте, pira, Вы писали:
P>>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой? P>>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
S>Простота линковки -- иначе, как уже сказано выше, не надо перекомпилировать.
ну вот возьмем хаскел:
#!/usr/bin/env stack
--stack runghc --resolver nightly-2016-12-04
-- тут прога идет
main = putStrLn "hellllo"
это скрипт на хаскелле. а ты точно знаешь, что stack не компилирирует этот код за кулисами в нативную прожку, а потом при запуске в терминале, выдает результат?
также, я могу сюда еще подключить разные внешние библиотеки. тут -- простота линковки?
Здравствуйте, pira, Вы писали:
P>что значит на ходу? если я запустил питоновский скрипт и потом сделал изменения -- они в этом работающем скрипте не будут видны.
Как насчёт "в уже доставленном клиенту продукте"?
Здравствуйте, pira, Вы писали:
P>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой? P>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
Можно к вопросу подойти с другой стороны.
Скрипт это то, что написано для автоматизации того, что можно сделать вручную, затратив много времени. Нопример, переименовать кучу файлов или потрогать за ssh сервера с целью нопример сбора статистики.
"Программа" (сервис, АРМ, етц) же делает больше и часто комплексно (ну то бишь тот же CMS — там и зарегистрировацца можно и пост написать и коммент и оформить и кортинку вставить). Одним из критериев отличия я бы назвал возможность взаимодействия с пользователем (сервисы конечно не попадают под этот критерий).
Ну вот как то так.
Если кратко, то скрипт — "лучше я потрачу два часа на написание кода, который делает работу за пять минут, на которую у меня уйдет пятнадцать", а "программы" — всё остальное.
Здравствуйте, Sheridan, Вы писали:
S>Скрипт это то, что написано для автоматизации того, что можно сделать вручную, затратив много времени. Нопример, переименовать кучу файлов или потрогать за ssh сервера с целью нопример сбора статистики. S>"Программа" (сервис, АРМ, етц) же делает больше и часто комплексно (ну то бишь тот же CMS — там и зарегистрировацца можно и пост написать и коммент и оформить и кортинку вставить). Одним из критериев отличия я бы назвал возможность взаимодействия с пользователем (сервисы конечно не попадают под этот критерий).
ну что ж, не бывает скриптов на питоне, которые от пользователя принимают данные, которые он печатает вручную через терминал?
S>Если кратко, то скрипт — "лучше я потрачу два часа на написание кода, который делает работу за пять минут, на которую у меня уйдет пятнадцать", а "программы" — всё остальное.
возьму любую программу и получишь то же самое определение.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, pira, Вы писали:
P>>что значит на ходу? если я запустил питоновский скрипт и потом сделал изменения -- они в этом работающем скрипте не будут видны. S>Как насчёт "в уже доставленном клиенту продукте"?
ну так передай клиенту прожку на С с исходниками, которую он сможет компилить с помощью make файла и запускать. и питоновский скрипт. и там, и там можно исправлять на ходу и все это сделать одной коммандой.
обе эти прожки -- на С и питоне -- будут скриптами?
Здравствуйте, pira, Вы писали:
P>ну так передай клиенту прожку на С с исходниками, которую он сможет компилить с помощью make файла и запускать. и питоновский скрипт. и там, и там можно исправлять на ходу и все это сделать одной коммандой. P>обе эти прожки -- на С и питоне -- будут скриптами?
Я ж говорю — тут как сову натягивать.
ChaiScript, CS-Script, typescript, который вообще компилируется с проверкой типов, JS, который браузером JITтится в натив — что из этого не скрипт?
Здравствуйте, pira, Вы писали:
P>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой? P>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
Если после написания текста программы ты можешь выполнить ее, используя только сам файл с исходным кодом и минуя явные шаги создания дополнительных сущностей (скомпилированной программы) — то это скрипт. Как оно под капотом все устроено, как и во что компилируется — неважно.
S>Если кратко, то скрипт — "лучше я потрачу два часа на написание кода, который делает работу за пять минут, на которую у меня уйдет пятнадцать", а "программы" — всё остальное.
+Скрипт ещё не имеет собственного состояния. Чисто вход-выход. Программа же часто имеет состояния, сохраняемые между запусками
Здравствуйте, v6, Вы писали:
v6>Здравствуйте, pira, Вы писали:
P>>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой? P>>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
v6>Если после написания текста программы ты можешь выполнить ее, используя только сам файл с исходным кодом и минуя явные шаги создания дополнительных сущностей (скомпилированной программы) — то это скрипт. Как оно под капотом все устроено, как и во что компилируется — неважно.
ну так я могу скомпилировать прожку на С таким образом, что будет иллюзия, что она так и исполняется. в одном случае это будет python my_app.py, в другом compile_my_c_app.sh my_app.c
разница-то?
Здравствуйте, pira, Вы писали:
v6>>Если после написания текста программы ты можешь выполнить ее, используя только сам файл с исходным кодом и минуя явные шаги создания дополнительных сущностей (скомпилированной программы) — то это скрипт. Как оно под капотом все устроено, как и во что компилируется — неважно.
P>ну так я могу скомпилировать прожку на С таким образом, что будет иллюзия, что она так и исполняется. в одном случае это будет python my_app.py, в другом compile_my_c_app.sh my_app.c P>разница-то?
Ну будет скрипт на C, в чем проблемы? Другое дело, что так никто не делает потому что неудобно.
Здравствуйте, pira, Вы писали:
P>Вот есть питоновский скрипт, скрипт на руби, на баше... Интересно, что делает скрипт — скриптом? Язык? Или то, что он компилируется? Или то, что он одноразовый и небольшой? P>Например, на хаскелле тоже можно писать как-бы скрипты -- один файл, с директивой !#/bin/env stack -- чем не скрипт.
Script это по основному значению сценарий. Поэтому этим термином логично называть текст программы в human readable форме. Т.е. к примеру сишный код в файлах это скрипт, а в скомпилированном виде уже бинарник. По сути тоже скрипт, но для человеческого восприятия неподходящий.