• [^] # Re: Portabilité et forçage

    Posté par . En réponse à la dépêche Mise aux poings sur systemd. Évalué à 4.

    Je suis bien d'accord, mais la raison est que ça ne rentre pas dans les objectifs du shell. Le shell a pour objectif de composer et enchaîner des commandes, et rien que ça, et d'être un outil pour l'utilisateur d'un unix-like (même pas programmeur). Lorsqu'on sent qu'on a besoin de typage, de structures de données plus complexes, de modularité, etc... c'est juste qu'on doit changer de langage, le shell n'est pas fait pour ça, et autant ne rien lui ajouter de tout ça, car ça risquerait de pousser les adeptes du tout-shell (il y en a pour tous les langages) à l'utiliser pour des tâches où il est sous-optimal et non pensé pour, plutôt que d'utiliser un langage vraiment approprié.

    Pas vraiment le manque de typage entraîne des scripts fragiles (parce que les vérifications que le shell ne fait pas c'est à toi de les faire). C'est intéressant de voir ce que propose PowerShell à ce sujet là (oui je sais il a un paquet de problème dont le fait qu'il ne soit pas POSIX, pas unix-way et qu'il soit nécessairement lié à la plateforme .Net). C'est simple regarde le nombre de scripts qui appellent des commandes en leur passant des paramètres qui viennent d'entrées du script (soit en paramètre soit en entrée standard soit en en lisant un fichier) et qui ne séparent pas les options de ces arguments via un --.

    On peut aimer ou non l'analyse lexicale du shell, mais elle est vraiment très simple, un simple paragraphe suffisant à la décrire, [...]

    Faut arrêter de parler de « simple » quand on veut dire « élémentaire » ou « naïf » (d'ailleurs ça fait parti des traductions que donne google traduction au mot anglais « simple »). C'est bien plus compréhensible que de dire « simple ». « KISS » → « Garde le stupidement élémentaire ».

    Encore une fois j'aime beaucoup le shell que ce soit POSIX, bash ou zsh, mais il est (très) loin d'être dénué de problèmes.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)