345 votes

Pourquoi les langages de script (par exemple Perl, Python, Ruby) ne conviennent-ils pas comme langages shell ?

Quelles sont les différences entre les langages shell comme bash , zsh , poisson et les langages de script ci-dessus qui les rendent plus adaptés à l'interpréteur de commandes ?

Lorsqu'on utilise la ligne de commande, les langages shell semblent beaucoup plus faciles. Il me semble beaucoup plus facile d'utiliser bash par exemple que d'utiliser le profil shell dans ipython, malgré les rapports qui disent le contraire . Je pense que la plupart des gens seront d'accord avec moi pour dire qu'une grande partie de la programmation à moyenne et grande échelle est plus facile en Python qu'en bash. J'utilise Python comme le langage avec lequel je suis le plus familier, il en va de même pour Perl et Ruby.

J'ai essayé d'en expliquer la raison, mais je n'y suis pas parvenu, si ce n'est en supposant que le traitement différent des cordes dans les deux cas y est pour quelque chose.

La raison de cette question est que j'espère développer un langage utilisable dans les deux. Si vous connaissez un tel langage, merci de le poster également.

Comme l'explique S.Lott, la question doit être clarifiée. Je m'interroge sur les caractéristiques de l'obus langue par rapport à celle des langages de script. La comparaison ne porte donc pas sur les caractéristiques des différents langages interactifs ( REPL ) tels que l'historique et la substitution de ligne de commande. Une expression alternative pour la question serait :

Un langage de programmation qui convient à la conception de systèmes complexes peut-il en même temps être capable d'exprimer des lignes uniques utiles qui peuvent accéder au système de fichiers ou contrôler des travaux ? Un langage de programmation peut-il utilement évoluer vers le haut comme vers le bas ?

3voto

peter Points 15430

Pour les utilisateurs de Windows, je n'ai pas encore ressenti le besoin d'utiliser powershell car j'utilise toujours 4NT (maintenant Take Control) de Jpsoft, c'est un très bon Shell avec beaucoup de possibilités de programmation. Il combine donc le meilleur des deux mondes.

Quand on regarde par exemple IRB (l'interpréteur ruby), il doit être tout à fait possible de l'étendre avec plus de one-liners pour faire des scripts quotidiens ou de la gestion de fichiers en masse et des tâches à la minute.

3voto

Colonel Panic Points 18390

Vous posez la question. Tout le monde ne s'accorde pas à dire que les langages shell sont supérieurs. D'une part, _Pourquoi ne pas

Il n'y a pas longtemps, un ami m'a demandé comment rechercher récursivement une chaîne dans ses scripts PHP. Il avait beaucoup de gros fichiers binaires et de modèles dans ces répertoires qui auraient pu vraiment embourber un simple grep. Je ne voyais pas comment utiliser grep pour y parvenir, alors j'ai pensé qu'utiliser find et grep ensemble serait ma meilleure chance.

  find . -name "*.php" -exec grep 'search_string' {} \; -print

Voici la recherche de fichiers ci-dessus retravaillée en Ruby :

  Dir['**/*.php'].each do |path|
    File.open( path ) do |f|
      f.grep( /search_string/ ) do |line|
        puts path, ':', line
      end
    end
  end

Votre première réaction peut être : "C'est un peu plus compliqué que l'original." Et je dois juste hausser les épaules et laisser faire. "C'est beaucoup plus facile à étendre", je dis. Et ça marche sur toutes les plateformes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X