Сценарии оболочки против языка программирования - PullRequest
4 голосов
/ 10 февраля 2011

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

Ответы [ 3 ]

9 голосов
/ 10 февраля 2011

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

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

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

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

1 голос
/ 10 февраля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...