ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1048003 Топик полностью
fk0, легенда (30.10.2020 00:06, просмотров: 575) ответил MBedder на Я правильно понимаю, что все эти ваши луи, авки, тцлы, питоны и прочая скриптовая нечисть - это всего-лишь навсего более накрученные варианты интерпретатора команд ОС для написания скриптов пакетной обработки а-ля autoexec.bat?
Нет, скорей это полноценные языки программирования с динамической типизацией. С command.com от микрософта сравнивать вообще бессмыленно -- последний какая-то кривая паделка. cmd.exe получше, но тоже страшен. Реальная микрософтовская альтернатива -- PowerShell. Можно сравнить command.com и bash, но последний много мощней и является как раз больше не универсальным языком программирования, а shell-языком, подходящим для написания "батников" или работы из консоли. Для обычного 

программирования он же наоборот неудобен -- многих вещей нет.


Из обычного языка шелл так просто не получится -- и функции специфические нужны, и грамматика специфическая, иначе пользоваться будет невозможно. Написать "батник" на баше много проще, чем на питоне (на последнем придётся массу вещей делать вручную, особенно перенаправление ввода-вывода, куча кода). Единственный язык который худо-бедно годится в роли shell, из всех перечисленных "скриптовой нечисти" -- это Tcl. Поэтому его так и любят везде пихать для автоматизации. Хотя именно в качестве shell специализированные языки (bash, zsh, ash, sash, dash, tcsh, fish...) удобнее. И кстати это причина, почему PowerShell толком не взлетел, по-моему. Он больше уже полноценный язык программирования, но для работы из командной строки или простых батников cmd.exe -- удобнее...


Для perl делался в своё время psh (perl shell) но популярности не снискал. Да вообще в любом скриптовом языке обычно есть REPL-цикл (ввода и интерпретации команд). По идее это почти шелл, но набор функций шелла обычно отличается от языка программирования и наоборот, на шелле сложные программы программировать неудобно. Поэтому такое разделение.


В шелле важны функции управления (параллельными) задачами, перенаправление ввода-вывода и аргументов команд, обработка ошибок... вообще всю работу в шелле обычно выполняют внешние вызываемые программы и задача шелла -- согласованно их вызывать. В обычном языке программирования же всё наоборот, обычно всё делается средствами языка, а вызов внешней программы превращается в большую сложность. Список встроенных команд/функций самого шелла обычно очень небольшой. Для того, чтоб посчитать арифметическое выражение может быть даже придётся вызвать внешнюю программу-калькулятор (expr, dc, bc...) Зато у шелла достаточно сложная грамматика позволяющая легко делать специфические вещи требующие массы кода в обычном языке. В общем шелл -- это специализированный язык для управления компьютером и программами на компьютере.

[ZX]