2011-02-10 3 views
4

Для многих задач, которые я должен выполнить, мне приходится выбирать между созданием программы с использованием Shell Script в Linux или языком программирования, таким как Java или Groovy. Кто-нибудь знает, как я должен выбирать один за другим и почему?Сценарий оболочки и язык программирования

+0

Главным преимуществом программирования по сценарию IMHO является скорость выполнения. Если у меня есть небольшая задача для выполнения, я склонен использовать сценарии, тогда как я не буду писать веб-сервер в сценарии Bash ... – eckes

+0

Мой опыт в том, что арифметика (кроме i + 1) и работа с структурами данных действительно больно в сценарии оболочки. Поэтому всякий раз, когда вы должны использовать их, я бы пошел на «настоящий» язык. –

+0

Написание сценария оболочки * это * программирование. sh * - это язык программирования. –

ответ

9

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

Когда ваши потребности больше - будь то функциональность, надежность, производительность, эффективность и т. Д. - тогда вы можете перейти на более полнофункциональный язык. Они, как правило, предлагают некоторую комбинацию:

  • безопасность типа
  • более продвинутых контейнеры
  • лучшего контроля над переменной жизнью и использованием памятью
  • многопоточной
  • передового IPC как разделяемая память и TCP/IP
  • полные возможности двоичного ввода-вывода, доступ к файлам с памятью и т. Д.
  • Доступ к API-интерфейсам ОС и множеству мощных библиотек
  • лучше читаемость и ремонтопригодность по мере увеличения размера проекта
  • поддержки более продвинутых парадигмы программирования: объектно-ориентированный подход, функциональное программирование, порождающее программирование и т.д.
  • лучше проверки ошибок перед вашей программой начинают работать, следовательно, в меньшей степени зависит от теста case
1

Сценарий оболочки - это самый интуитивный способ иметь «клей» в вашей системе. Тем не менее, у него нет некоторых полезных понятий, таких как наследование и модуляция, что языки, такие как Python (которые тоже очень привыкли к «клеить») тоже.

Правда, использование языка зависит в основном от задачи, которую вы пытаетесь сделать. В большинстве случаев я работал, сценарий оболочки работал хорошо, хотя я использую много Python для выполнения связанных с системой задач. Я не думаю, что Java будет альтернативой в этом случае. Вероятно, Groovy был бы, но не Java (я имею в виду Java как язык, а не Java как платформу).

В представлении sysadmin, я думаю, Python и Ruby - это удивительные языки. Не только из-за динамической типизации и отсутствие необходимости компилировать, а потому, что такие инструменты, как Fabric, Capistrano, Puppet, и много других, что делает жизнь сисадмина намного проще :-)

2

@Tony обеспечивает отличный список плюсов и минусов. Я бы добавил еще один общий сценарий - shell-скрипты, потому что он настолько удобен, что может показаться, что «нет ничего более продолжительного, чем временное решение», характерного для всех сопутствующих проблем обслуживания, когда кому-то еще нужно его использовать.

Смежные вопросы