Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un autre petit langage(ENCORE !)

    14 mai 2022 à 11:00:44

    Bonjour, et oui encore un autre petit langage ( https://openclassrooms.com/forum/sujet/atelier-p-tit-langage-73961)

    ON va faire notre propre petit langage avec toute la communauté , et en plus c'est vous qui decidez !

    comment ça marche :

    comme j'ai dis plus haut c'est vous qui decidez : la syntax,  si c'est un compilateur ou un interpréter(c'est mieux mais c'est vous qui decidez),  quelle langage on va le coder , et plein de chose encore et donc je n'impose aucune contrainte a part le faire dans la joix et dans la bonne humeur 

    on va proceder au vote pour tous les choix (j'espere je ne serai pas le seul a voter :p

    et le but du topic : a s'entrainer et non pas faire de la competition :) 

    le bilan de notre petit langage(attention il peux changer jusqu'a une date limite que je donnerai plus tard): 

    • interpreteur / compilateur -> interpreteur
    • langage: Python
    • la syntax de pierrelefou
    • le nom : ~ 
    • procedural/fonctionnelle/objet -> procedural
    les questions: 
    • c'est un langage procedural, fonctionelle ou objet ? ]
    • le langage pour le parser ? 
    • le nom ? 
    • la syntaxe ? 
    • typage statique ? 
    • faire un parser from scratch?
    • et encore d'autre chose...
    les votes :
    • interpreteur : +2 (moi, pierrelefou), compilateur : 0 
    • Python: +2(moi, pierrelefou) , C++ +1(pierrelefou)
    • syntax: +2 pour celle de pierre le fou (moi, pierrelefou), la mienne : +1 (moi)
    • le nom: OCLang -> ~ (je ne sais pas encore) , Python++ -> ~ (pourquoi pas) , PythonScript -> -1 (moi)
    • typage : ~
    • procedural/fonctionnelle/objet : objet +1(pierreelfou) procedural +2(moi, pierrelefou) fonctionel +1(moi
    • ...
    EDIT: bah alors, personne est interrese :( ? bon je sais que c'est un peut tot mais ... personne :'( ? pourquoi ? mon sujet est mauvais ? pff au moins il y a pierrelefou

    apparemment oc n'accepte plus les ateliers :( 

    -
    Edité par TheSmiley 17 mai 2022 à 7:56:53

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2022 à 17:56:32

      Les gens en ont sans doute assez des langages existants ...
      Je connais bien C et Python, raisonnablement bien C++, un peu de ruby, et j'ai suivi le cours de swift.
      Je verrais une version primitive de Python avec la syntaxe de C / C++ avec les { } et les ;
      (comme en Java d'ailleurs).
      Si c'est pas trop compliqué, puisque c'est supposé être pour s'amuser, je préfère un interprète. C'est sans doute moins compliqué.
      En quel langage écrire l'interprète? C++ ou Python?
      Lequel est le mieux pour faire du parsing?
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        14 mai 2022 à 18:15:50

        merci PierreLeFou donc on a +2 (moi aussi ) pour interpreteur  contre  0  pour le compilateur c'est l'interpreteur qui gagne :)

        j'opterai en python (chose encore a discuter ) mais vue que c'est un langage assez populaire (swift non, pas portable , C/C++ a voir, et ruby... j'ai fait un peu de ruby) 

        peut etre pas C/C++ (il faut comme meme un certains niveau , ce n'est pas le cas pour moi : je connais le c/c++ mais je ne suis pas partis sur de bone base , faudrais que je revise )

        d'aileurs voila les points a discuter : voir dans premier message

        et bah merci pierrelefou

        -
        Edité par TheSmiley 14 mai 2022 à 20:19:46

        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2022 à 0:51:51

          Pour l'interpréteur, C++ ou Python offrent une bonne flexibilité.
          C++ serait plus efficace que Python. Les deux sont très portables.
          Ça peut être un langage procédural orienté objet. On peut faire les deux en Python.
          Pour la syntaxe, je ne sais pas. Je n'aime pas toujours l'indentation de Python.
          Je préfère l'idée des accolades comme en C, C++ Java, et d'une façon moins évidente en Pascal.
          Théoriquement, le programme pourrait être écrit sur une seule ligne comme on peut le faire en C ou C++, mais pas en Python.
          Je ne sais pas s'il y aurait des classes, ni vraiment comment les implémenter.
          Ma première idée ressemble aux pointeurs vers fonctions du langage C.
          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            15 mai 2022 à 9:22:47

            je pensent faire les class plus tard, pourquoi pas du procedural  ou encore fonctionelle(ou tout variable sera fonction alors tous les elements sont immutable parce que less class ce n'est pas easy easy hein 

            par example 

            val hello n = {
                print "hello" + n;
                n // attention pas de point virgule donc return 
            };
            
            hello "world"; // return "world"

            ou encore 

            val pow_of_two = 2*2; // ceci est une fonction qui return 4 
            
            pow_of_two; // 4
            

            en compresse ca fait  :

            val pow_of_two = 2*2;pow_of_two;

            hmm, si on fait en c++ , il faut que je l'apprenne bien 

            bon je creer un repo github c'est quoi ton nom d'utilisateur github  

            ici le repo https://github.com/ocl-lang il y avait que ocl lang disponible 



            EDIT: mais on peut le faire en objet si tu veux ce sera juste plus complique ;) , je ne veux pas te perdre mon seul contibuteur 

            -
            Edité par TheSmiley 15 mai 2022 à 20:13:39

            • Partager sur Facebook
            • Partager sur Twitter
              16 mai 2022 à 1:11:32

              J'aurais besoin de revoir en détail le texte du lien que tu donnes dans ton premier message.
              J'ai mentionné quelque langages que je connais.
              J'en ai appris d'autres dans le passé, tels que:
              + Fortran
              + Basic
              + Perl
              + Awk
              (j'ai pas mal oublié ces deux derniers)
              J'interviens parfois sur des sujets en Java même si je n'ai pas appris ce mangage.
              J'ai même fait une intervention en C#.
              Là où je veux en venir est que tous ces langages se ressemblent un peu.
              J'ai déjà utilisé et écrit des macro generator comme M4:


              https://www.linuxtoday.com/blog/macro-m4-guide/


              J'ai pensé à quelque chose de tout à fait différent, le langage lisp ou sa version Emacs Elisp:


              https://fr.wikipedia.org/wiki/Lisp

              On peut faire des boucles avec de la récursivité. C'est moins efficace mais tout aussi élégant:

              factorielle = lambda n: 1 if n <= 1 else n * factorielle(n-1)

              -
              Edité par PierrotLeFou 16 mai 2022 à 1:33:10

              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

                16 mai 2022 à 1:33:32

                bon, si on fait la list des langages que j'ai appris :

                • C/C++ la base ^^
                • python mon premier langage
                • Java mais j'ai vite detester
                • ruby mais c'etais il y a longtemps et je suis debutant en ruby
                • ocaml un peu pour ma culture 
                • haskell meme chose que ocaml
                • js/html/css la base du web
                • rust mon langage prefere apres le python :D
                • kotlin j'ai bien aime , je trouve que c'est java2.0
                • et un tout petit de go 

                eah ouais t'est vieux toi (FORTRANT + BASIC non je blague :D):

                PierrotLeFou a écrit:


                J'en ai appris d'autres dans le passé, tels que:
                + Fortran
                + Basic
                + Perl
                + Awk

                ouais le lisp pourquoi pas donc on switch sur lisp j'avais un lien sur justement lisp mais je l'ai perdu :(

                bon voila quelque lien:

                http://norvig.com/lispy.html

                https://buildyourownlisp.com/contents

                EDIT: bon si tu modif tous le temps... je suis grille quoi

                -
                Edité par TheSmiley 16 mai 2022 à 1:44:56

                • Partager sur Facebook
                • Partager sur Twitter
                  16 mai 2022 à 1:51:08

                  Je n'ai modifié qu'une fois. :)
                  Voici un autre lien:


                  https://fr.wikipedia.org/wiki/Common_Lisp


                  Est-ce que j'ai bien compris? Tu es vraiment intéressé à lisp ou quelque chose de semblable?
                  Je ne suis jamais allé sur github, et je n'ai aucune idée comment ça marche.

                  -
                  Edité par PierrotLeFou 16 mai 2022 à 1:51:50

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    16 mai 2022 à 1:59:53

                    ha tu connais git ? 

                    >Je n'ai modifié qu'une fois. :)

                    oui oui ok ; sorry 

                    un peu mais toi tu est intterese 

                    bon si t'a pas utiliser git

                    lis le tuto : https://openclassrooms.com/fr/courses/7162856-gerez-du-code-avec-git-et-github

                    git est un gestionnaire de version et github : https://github.com/about

                    edit: desole pour le edit mais creer toi un compte github (free) et donne moi ton username pou que je t'invite

                    je me permet d'ajouter ceci: github c'est le facebook du code

                    -
                    Edité par TheSmiley 16 mai 2022 à 2:09:15

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 mai 2022 à 2:11:54

                      Je t'invite à regarder mon profil pour comprendre pourquoi j'ai de la difficulté avec git ou github.
                      J'ai de la difficulté avec les codes de validation visuelle (genre Captcha).
                      Si ça me prend un "user name", est-ce que PierrotLeFou marcherait?
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                        16 mai 2022 à 2:15:24

                        t' es  aveugle oh je suis desole :o :'(le son ne marche pas ? oui attend je vais voir non desole il est deja pris mais tu t'es inscrit ? ou non parce que je voie un pierrelefou ?

                        mais comment tu fais pour coder,lire, et tout ca c'est trop triste :(

                        -
                        Edité par TheSmiley 16 mai 2022 à 2:18:53

                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 mai 2022 à 2:24:10

                          Sur mon ordi, il y a un logiciel dont le nom générique est "revue d'écran et synthèse vocale".
                          Je suis sur Windows 10 et ma synthèse s'appelle JAWS (version 2021)


                          https://www.ceciaa.com/jaws


                          Et je suis peut-être aussi vieux que tu le pensais au départ ...

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Le Tout est souvent plus grand que la somme de ses parties.

                            16 mai 2022 à 2:27:52

                            oh non je disais cela mais je ne le pensais pas :euh: cela doit etre dur :(

                            si tu veux tu me donne ton mot de pass github par mp et je fais toute la configuration pour toi 

                            si t'es pas inscrit tu peux me donner ton email par mp et ton pseudo et je te creerais un compte ^^

                            tu peux me faire confiance ^^

                            c'est toi sur github: https://github.com/PierrotLeFou Apparament pas pas parce que il y a du c# 

                            ah enfaite il y a des imposteurs ou c'est toi: PierrotLeFou1 PierrotLeFou2 PierrotLeFou3

                            -
                            Edité par TheSmiley 16 mai 2022 à 2:48:10

                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 mai 2022 à 2:44:26

                              J'ai peut-être déjà essayé de m'inscrire et je pensais que ça n'avait pas marché.
                              J'ai envoyé le MP.
                              Ça devrait marcher avec le mot de passe cité dans le MP.

                              Ou bien tu travailles tard, ou bien tu es en Amérique comme moi ...

                              -
                              Edité par PierrotLeFou 16 mai 2022 à 2:46:15

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Le Tout est souvent plus grand que la somme de ses parties.

                                16 mai 2022 à 2:46:02

                                l]tu devrais recevoir un code dans ta boite mail, moi : je suis partout

                                bon je peux pas continuer sans le code dans ta boite mail

                                -
                                Edité par TheSmiley 16 mai 2022 à 2:48:37

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  16 mai 2022 à 3:29:20

                                  Tu tiens absolument à le faire sur github?
                                  Je vais regarder tous tes liens pour me donner un point de départ.
                                  Je sais comment faire du parsing dans n'importe quel langage.
                                  J'ai déjà fait des analyseurs d'expression mathématiques en C et en Python.
                                  Avec des arbres binaires, on peut convertir une notation dans les autres: préfixée, infixée, postfixée. Je l'ai déjà fait.
                                  La notation de lisp est préfixée, c'est donc assez facile.
                                  Je connais les expressions régulières. Je les utilise en Python et en GNU sed (oui, mon Windows est tordu)
                                  Je sais comment créer des fonctions avec un nombre variable de paramètres en C (vararg).
                                  En Python, on peut le faire en passant des listes pour les arguments positionels, et des dictionnaires pour des arguments nommés.
                                  (ce sera nécessaire pour les arguments de lisp)
                                  Ce n'est pas si difficile, c'est seulement long (pas trop tout de même)
                                  Une fois qu'on a la base, on peut augmenter à l'infini. Ça prend seulement des tables construites de façon appropriée.
                                  Ma cicité me limite, certes, mais pas tant que ça.
                                  J'ai déjà fait un simulateur de Spyrographe avec matplotlib et on m'a dit que c'était correct. :)

                                  edit:

                                  Cette fois j'en ai ajouté un peu plus ...

                                  Ce qui est dit sur le lien pour construire son propre lisp:

                                  In this book you'll learn the C programming language and at the same time learn how to build your very own programming language, a minimal Lisp, in under
                                  1000 lines of code! We'll be using a library to do some of the initial work, so I'm cheating a bit on the line count, but the rest of the code will be
                                  completely original, and you really will create a powerful little Lisp by the end.
                                  ...

                                  D'abord, je connais déjà C. Et ça n'est pas dit que l'interpréteur sera en C.

                                  Pour l'instant, ce n'est pas la performance qui sera prioritaire.

                                  Pour le parsing, la descente récursive semble la meilleure option:

                                  https://leptinerd.wordpress.com/2017/06/11/introduction-a-la-theorie-de-la-compilation-24-les-parsers/


                                  http://michel.billaud3.free.fr/blog/index.php/2013/01/20/72-programmation-la-technique-de-descente-recursive

                                  -
                                  Edité par PierrotLeFou 16 mai 2022 à 6:49:43

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Le Tout est souvent plus grand que la somme de ses parties.

                                    16 mai 2022 à 7:09:03

                                    bon en faite si t'apprend le cours sur git(en video?) t'as pas besion d'utiliser github pour le project  un peut utiliser git et l'autre github ou les deux

                                    edit: oui peut etre que c'est pas 

                                    en vrais si t'apprend rust et lalrpop (une extension de rust) on peut creer un parser on pourra creer en rust aussi:

                                    lalrpop:

                                    use std::str::FromStr;
                                    
                                    
                                    grammar;
                                    
                                    
                                    pub Term: i32 = {
                                        Num,
                                        "(" <Op> ")",
                                    };
                                    
                                    pub Op : i32 = {
                                        BinOp,
                                        Term
                                    }
                                    
                                    BinOp: i32 = {
                                        "+" <l:Op>  <r:Op> => l+r,
                                        "-" <l:Op>  <r:Op> => l-r,
                                        "*" <l:Op>  <r:Term> => l*r,
                                        "/" <l:Op>  <r:Term> => l/r,
                                    };
                                    
                                    Num: i32 = {
                                        r"[0-9]+" => i32::from_str(<>).unwrap(),
                                    };
                                    

                                    donc par example cet calculatrice est prefixe :

                                    + 3 4 // donne 7
                                    + * 2 4 5 // donne 13 parce que 2*4 + 5 = 13
                                    + 4 / 8 2 // donne 8 parce que 4 + 8 / 2 = 8 

                                    bon cela doit etre du charabia :) si t'as pas appris rust en gros lalrpop c'est lex and yacc en rust

                                    pour toi le cours de rust : https://jimskapt.github.io/rust-book-fr/ 

                                    pour lalrpop : https://lalrpop.github.io/lalrpop/

                                    -
                                    Edité par TheSmiley 16 mai 2022 à 22:26:46

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 mai 2022 à 1:37:31

                                      Je voulais participer à ce ppetit projet pour m'amuser.
                                      Mais si je dois apprendre à utiliser Git et GitHub et apprendre les langages Rust et lalrpop, ça devient un job à plein temps.
                                      Désolé.
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Le Tout est souvent plus grand que la somme de ses parties.

                                        17 mai 2022 à 7:23:44

                                        "bah alors, personne est interrese :( ? bon je sais que c'est un peut tot mais ... personne :'( ? pourquoi ? mon sujet est mauvais ?"
                                        Pour ma part , je dirais que de un, j'ai trop de projet , et  j'ai déjà dans mes carton un langage de prog (que j'ai déjà pas mal entamé) :D

                                        Mais bon courage pour ton projet ;)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 mai 2022 à 7:51:17

                                          Je voulais participer à ce ppetit projet pour m'amuser.
                                          Mais si je dois apprendre à utiliser Git et GitHub et apprendre les langages Rust et lalrpop, ça devient un job à plein temps.
                                          Désolé.

                                          oh bon que j'etais bete on oublie git github et tout ca et on revient en 14 mai 2022 :) ne t'en vas pas mon seul client :'(


                                          Pour ma part , je dirais que de un, j'ai trop de projet , et  j'ai déjà dans mes carton un langage de prog (que j'ai déjà pas mal entamé) :D


                                          Mais bon courage pour ton projet ;)

                                          merci mais serait je tout seul  pour mon atelier :( pff moi, je l'ai fais fuir :(   pourquoi ...

                                          -
                                          Edité par TheSmiley 17 mai 2022 à 9:28:26

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Un autre petit langage(ENCORE !)

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          • Editeur
                                          • Markdown