• [^] # Re: Rashell

    Posté par . En réponse au journal Gufo: un langage de shell moderne!. Évalué à 2.

    Bonjour,

    d'abord merci pour le commentaire pertinent.
    Je ne connaissais pas rashell mais j'avais vu des choses du type shcaml qui ont l'air similaire. Python doit aussi avoir des choses similaire.

    A une époque, je m'étais dis, qu'effectivement créé un simple module avancé était plus facile que de recréer tout un langage. Quand même, pour moi rashell comme les équivalents dans d'autres langages (je sais qu'il y a des pseudo shells python) ne répondent pas à la problématique:

    Faire un "a=$(ls -l | wc -l)" avec rachell doit ressembler à (si je ne me trompe pas):

    let a = exec_filter (command "wc" ["-l"]) (exec_query (command "ls" ["-l"]))

    Il faut importer les bons modules avant
    Au delà d'être lourdingue, cela oblige à bien connaître les fonctions de la doc.
    Le fait d'ajouter des fonctions prédéfinis pour les commandes usuelles ne résout pas le problème: il faut lire la doc et l'on perd le coté universel.

    Avec Gufo, la commande sera:

    let $a = ls -l | wc -l

    Dans un sens dans Gufo, j'ai deux langages qui s'imbriquent: un langage fonctionnel basique qui peut contenir un sous-langage de commande (qui vise a imiter bash). C'est aussi une façon d'aider le nouveau venu: il peut au début utiliser la partie commande et découvrir au fur et à mesure le langage au dessus.

    Je sens qu'a ce moment on va me dire, "oui donc pourquoi c'est mieux que bash", moi, je vais répondre parce que:
    1) la syntaxe est moins pourri (en bash "a=5" est différent de a =5" et différent de "a= 5").
    2) bash ne dispose pas de vrai fonction (je crois que toute les variables sont globales ou des choses comme ça).
    3) je veux avoir des types "riches": list, set, map (je veux aussi avoir quelques différences par rapport à Ocaml (avoir des map et des set sans avoir à définir de foncteurs explicites)
    4) il y a un système pour détecter des erreurs avant exécution du programme:on ne commencera pas a exécuter quoi que ce soit si il existe une variable indéfini.

    Pour le nom (Gufo), je laisse un peu de suspense et donnerais la réponse quand je pourrais faire de nouveaux commentaires.