• # Je suis sceptique. Très.

    Posté par . En réponse au journal Batsh - Scripting Bash, et Windows. Évalué à 7.

    TL;DR:
    Intéressant. Mais code généré crade et pas portable, ainsi que comportements étranges.

    Si je développe, ça donne ça:

    L'idée de base est intéressante.

    Sauf que, l'un des principaux défauts que je reproche au scripting (en tant que dev C/C++), ce sont les erreurs de syntaxe découvertes au runtime dudit script.
    Hors, rien n'est indiqué dans les liens à ce sujet. J'ai testé ceci:

    if ( "hello" === "world" )
    {
     println("niark");
    }
    

    et ça passe! Ça génère ceci en bash:

    _0="hello"
    _1="world"
    if [ $(($_0 == $_1)) == 1 ]; then
     "echo" "-e" "niark"
    fi

    Le premier truc que je constate, c'est que si j'en avait pas fait exprès de mettre un 3ème '=', je me serai attendu... à ne rien afficher. Erreur de syntaxe, ou juste syntaxe à la con? Si c'est une erreur de syntaxe, alors rien n'aurait du être généré. Si c'est une syntaxe à la con style le === du PHP, alors ça n'aurait pas du rentrer dans l'affichage de niark. Parce que l'on parle d'égalité... Enfin, il check peut-être que le type, ce qui est à mon avis encore pire que la syntaxe PHP... opinion personnelle je suppose.
    Bref, déjà, ce truc fait des choses exotiques, auxquelles un développeur C ou Java risque de ne pas être habitué. Donc, la phrase If you have learned C, Java, C++ or JavaScript, Batsh is quite easy for you. me semble fausse. Ça pue les surprises à plein nez.

    Ensuite, le code généré. Oh, le bel "echo". Pourquoi ne pas avoir utilisé printf en bash, dont le comportement est plus prévisible? Parce que echo ne réagit pas de la même façon sur tous les systèmes à ce que j'ai cru comprendre(2nde réponse).
    Toujours au sujet de cette ligne: sur 5 lignes, ça va, mais sur un script un peu compliqué, la maintenance (genre débogage) je la sens pas: pourquoi foutre des " partout?

    Passons à l'argumentaire de l'auteur sur le pourquoi utiliser ce truc. Y'a un truc qui m'a gêné, ça:

    Why not Python/Ruby/Node.js/Lua
    None of them is preinstalled on all platforms (including Windows).

    Ben, bash n'est pas installé sur tous les UNIX. Le SH, oui, le BASH non. Quand je programme, il me faut une bonne raison pour faire un truc qui risque d'être utilisé ailleurs pas portable. Pire, vu que les gens de Debian ont mis dash en interpréteur par défaut dans plusieurs cas, ça veut dire que les scripts générés par ce truc ne marcheront pas.
    Sans même parler de la pratique élémentaire de mettre un shebang en début de fichier...

    Bref: très très sceptique. Voire, pas pour moi.