2011-02-10 6 views
4

Pour beaucoup de tâches que je dois faire, je dois choisir entre faire le programme en utilisant un Shell Script sous Linux ou un langage de programmation tel que Java ou Groovy. Est-ce que quelqu'un a de l'expérience sur la façon dont je devrais choisir l'un par rapport à l'autre et pourquoi?Shell scripting vs langage de programmation

+0

Le principal avantage de la programmation sur scripting IMHO est la vitesse d'exécution. Si j'ai une petite tâche à accomplir, j'ai tendance à utiliser les scripts alors que je n'écrirai pas un serveur web dans un script Bash ... – eckes

+0

Mon expérience est, que l'arithmétique (sauf i + 1) et le travail avec des structures de données est vraiment pénible dans un script shell. Donc, chaque fois que vous devez les utiliser, j'opte pour une "vraie" langue. –

+0

L'écriture d'un script shell * est * la programmation. sh * est * un langage de programmation. –

Répondre

9

Les scripts shell sont excellents pour des opérations de système de fichiers concises et pour l'écriture de scripts sur la combinaison de fonctionnalités existantes dans les filtres et les outils de ligne de commande via des canaux. Lorsque vos besoins sont plus importants, que ce soit en termes de fonctionnalité, de robustesse, de performance, d'efficacité, etc., vous pouvez passer à un langage plus complet. Ils ont tendance à offrir une combinaison de:

  • sécurité de type
  • plusieurs conteneurs avancés
  • un meilleur contrôle sur la durée de vie variables et utilisation de la mémoire
  • filetage
  • la CIB comme mémoire partagée et TCP/IP
  • capacités d'E/S binaires complètes, accès aux fichiers mappés en mémoire, etc.
  • accès aux API OS et à une myriade de bibliothèques puissantes
  • une meilleure lisibilité et la maintenabilité comme support taille projet augmente
  • pour paradigmes de programmation plus avancés: l'orientation objet, programmation fonctionnelle, programmation générative etc.
  • mieux la vérification des erreurs avant le début du programme en cours d'exécution, donc moins dépendante des tests couverture de cas
1

Le script Shell est la manière la plus intuitive d'avoir une "colle" sur votre système. Cependant, il n'a pas de concepts utiles, comme l'héritage et la modularisation, que des langages comme Python (qui est très utilisé pour "coller" des systèmes aussi).

Certes, l'utilisation de la langue dépend essentiellement de la tâche que vous essayez de faire. Pour la plupart des cas que j'ai travaillé, le script shell a bien fonctionné, bien que j'utilise beaucoup de Python pour accomplir des tâches liées au système. Je ne pense pas que Java serait une alternative dans ce cas. Probablement Groovy serait, mais pas Java (je veux dire Java comme langue, pas Java comme plate-forme.)

Dans une vue sysadmin, je pense que Python et Ruby sont des langages impressionnants. Non seulement à cause de typage dynamique et l'absence de besoin d'être compilés, mais parce que des outils tels que Fabric, Capistrano, Puppet, et beaucoup d'autres qui fait une vie de sysadmin beaucoup plus facile :-)

2

@Tony offre une excellente liste des avantages et des inconvénients. J'ajouterais un point plus général - les scripts shell, car ils sont si pratiques, risquent d'afficher la caractéristique «il n'y a rien de plus durable qu'une solution temporaire» avec tous les problèmes de maintenance associés lorsque quelqu'un d'autre doit l'utiliser.