Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Langage de programmation] Algoid / AL

    1 juillet 2013 à 16:17:44

    CyaNn a écrit:

    Enfin voilà, je pars en vacance dans même pas une semaine et j'ai plein d'idées plein la tête.... comme toujours, je vais finir sur la plage à rêver de code source et de fonctionnalités.... pfffff

    Je croyais être le seul à souffrir en vacances à cause de cette foutue informatique. XD

    • Partager sur Facebook
    • Partager sur Twitter
      1 juillet 2013 à 16:29:09

      Ben moi pendant les vacs je lis des tutos, je découvre et j'apprends des techologies, des langages... Et c'est exactement comme ça que j'ai trouvé Algoid !
      D'ailleurs il faudrait que je regarde un langage fonctionnel genre Caml dans le détail parce que je n'y connais rien et ça me manque un peu :-)

      • Partager sur Facebook
      • Partager sur Twitter
      Arius, vraiment le plus puissant de l'ancienne Ligue des Super Zéros !
        1 juillet 2013 à 21:41:58

        Au fait, il y a un problème dans ton JNLP :

        C'est marrant tu ne t'en est pas aperçu, alors que GEdit et IcedTea me crient dessus...
        EDIT: Je n'arrive pas à corriger le fichier... J'obtient ça avec IcedTea :

        net.sourceforge.jnlp.LaunchException: Fatal: Read Error: Could not read or parse the JNLP file. 
        
        at net.sourceforge.jnlp.Launcher.fromUrl(Launcher.java:491)
        at net.sourceforge.jnlp.Launcher.launch(Launcher.java:283)
        at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:206)
        at net.sourceforge.jnlp.runtime.Boot.run(Boot.java:51)
        at java.security.AccessController.doPrivileged(Native Method)
        at net.sourceforge.jnlp.runtime.Boot.main(Boot.java:172)
        

        Caused by: net.sourceforge.jnlp.ParseException: Invalid XML document syntax.

        at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1305)
        at net.sourceforge.jnlp.JNLPFile.<init>(JNLPFile.java:206)
        at net.sourceforge.jnlp.JNLPFile.<init>(JNLPFile.java:190)
        at net.sourceforge.jnlp.JNLPFile.<init>(JNLPFile.java:175)
        at net.sourceforge.jnlp.JNLPFile.<init>(JNLPFile.java:161)
        at net.sourceforge.jnlp.Launcher.fromUrl(Launcher.java:482)
        ... 5 more
        

        Caused by: net.sourceforge.nanoxml.XMLParseException: XML Parse Exception during parsing of a jnlp element at line 6: Expected: =

        at net.sourceforge.nanoxml.XMLElement.expectedInput(XMLElement.java:1126)
        at net.sourceforge.nanoxml.XMLElement.scanElement(XMLElement.java:911)
        at net.sourceforge.nanoxml.XMLElement.scanElement(XMLElement.java:967)
        at net.sourceforge.nanoxml.XMLElement.scanElement(XMLElement.java:967)
        at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:512)
        at net.sourceforge.nanoxml.XMLElement.parseFromReader(XMLElement.java:464)
        at net.sourceforge.jnlp.Parser.getRootNode(Parser.java:1301)
        ... 10 more</pre>
        
        </pre>

        -
        Edité par antoine1023 1 juillet 2013 à 21:49:57

        • Partager sur Facebook
        • Partager sur Twitter
        Arius, vraiment le plus puissant de l'ancienne Ligue des Super Zéros !
          2 juillet 2013 à 10:57:26

          Rhaaa !!!! c'est ça de toujours vouloir tout faire avec textpad.

          Pour ce qui est des vacances, ben moi je jette la montre, le portable, les bouquins et je me pose au milieu de nul part en pagne, histoire d'éviter tout contacte avec des bipèdes.

          Quand je reviens je peu reprendre un vie normale.

          Mais cela viens peu-t-être qu'en plus de mes études, j'ai un boulot, une famille et des tas de trucs à faire..... un moment je sature....

          • Partager sur Facebook
          • Partager sur Twitter
          Découvrez Algoid le langage pour apprendre à programmer.
            5 septembre 2013 à 11:03:11

            Yeah ! La version RaspberryPI est sortie sur le PI Store :

            • Partager sur Facebook
            • Partager sur Twitter
            Découvrez Algoid le langage pour apprendre à programmer.
              8 septembre 2013 à 16:12:56

              Félicitations, le projet avance ! ;)

              • Partager sur Facebook
              • Partager sur Twitter
                9 septembre 2013 à 13:15:25

                Merci beaucoup.

                Je suis en train de regarder pour intégrer des plugins pour que les profs puissent ajouter leur module. Ou tout simplement des librairies annexes.

                • Partager sur Facebook
                • Partager sur Twitter
                Découvrez Algoid le langage pour apprendre à programmer.
                  16 septembre 2013 à 23:09:16

                  AlgoIDE v0.2.4 (beta) est sortie sur PC, Java's Applet et Raspberry PI
                  http://download.algoid.net
                  Release note :
                  - algo.getX() / algo.getY / algo.getAngle.
                  - OBJECT.clone, automatique.
                  - plugins.
                  - correction d'algo.removeLast et algo.removeFirst.
                  - auto completion (ctrl + espace) et aide dynamique pour les structures de contrôles.
                  - évenements algo.onKey, algo.onWheel, algo.onTouch, algo.onTap, algo.onUp
                  - suppression algo.import
                  Toujours ici :

                  -
                  Edité par CyaNn 16 septembre 2013 à 23:11:23

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Découvrez Algoid le langage pour apprendre à programmer.
                    17 septembre 2013 à 20:40:58

                    Salut ! C'est joli tout ça...
                    J'ai un petit peu testé la version JAR.
                    Alors niveau interface, les menus sont biens, avec plus de raccourcis claviers il me semble. Je ne sais plus si ça y était avant, mais le zoom dans l'éditeur avec Ctrl + molette est cool. Au niveau de l’auto-complétion, j'ai un petit problème de focus un peu agaçant (quand le menu apparaît, je perds le focus, je ne peut plus déplacer le curseur horizontalement ; quand le menu disparaît, il y a des fois ou l'éditeur ne reprends pas du tout le focus ; ...)
                    Autre chose : ya pas de petit menu contextuel qui apparaît dans l'éditeur sur un clic droit, avec "couper", "copier", "coller", ... (personnellement, je ne m'en sert jamais ; mais ça peut perturber les gens qui ne connaissent pas l'utilité de la touche "Ctrl" :-p )
                    J'ai hâte de découvrir ces plugins ! Je vois qu'il y a des chose là dessus dans fr.cyann.algoide.plugin en décompilant ;-) J'écrirais deux-trois trucs si j'ai le temps.
                    Enfin, pour info, j'ai testé sous Ubuntu avec OpenJDK 7, comme d'hab :-)
                    EDIT: C'est fou tout ce qu'on découvre en décompilant ! Ainsi, il y a une super option -noBorder, et une autre, -pluginPath ! J'essaye les plugins dès que je peut :-p

                    -
                    Edité par antoine1023 17 septembre 2013 à 20:45:30

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Arius, vraiment le plus puissant de l'ancienne Ligue des Super Zéros !
                      17 septembre 2013 à 21:00:24

                      Bravo pour cette version.

                      Moi je me suis donné pour objectif (pour comprendre Algoid) de faire fonctionner correctement ton exemple "le jeu de la vie".

                      Et oui, j'ai remarqué que les cellules semblent ne pas se comporter comme qu'elles devraient ! 

                      -
                      Edité par metalm 18 septembre 2013 à 17:41:53

                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 septembre 2013 à 12:09:17

                        C'est corrigé :

                        /*
                        Conway's Game of Life
                        Written by CyaNn 04/02/2013
                        
                        rules :
                        - a cell with 3 alive neighbours become alive
                        - a cell with 2 alive neighbours does not change
                        - in other cases the cell disapears
                        
                        */
                        set SIZE = 50;
                        set SCALE = 10;
                        set cells = array {};
                        set render = array {};
                        // Constantes
                        set STATE_LIVE = 1
                        set STATE_STABLE = 0
                        set STATE_DEAD = -1
                        
                        set cell = object () {
                        	set c = 0;
                        	set r = 0;
                        	set alive = true;
                        	set next = STATE_STABLE; 
                        
                        	set eachNeighbours = function (f) {
                        		set cfrom = math.max (c-1, 0);
                        		set cto = math.min (c+1, SIZE-1);
                        		set rfrom = math.max (r-1, 0);
                        		set rto = math.min (r+1, SIZE-1);
                        
                        		for (set col=cfrom; col<=cto; col++) {
                        			for (set row=rfrom; row<=rto; row++) {
                        				if (!(col == c && row == r)) {
                        					f(cells[row][col]);
                        				}
                        			}
                        		}
                        	};
                        
                        	set evalNext = function () {
                        		set count = 0;
                        		eachNeighbours (function (item) {
                        			if (item.alive) {
                        				count++;
                        			}
                        		});
                        
                        		if (count == 3) {
                        			next = STATE_LIVE;
                        		} else if (count == 2) {
                        			next = STATE_STABLE;
                        		} else {
                        			next = STATE_DEAD;
                        		}
                        	};
                        
                        	set apply = function () {
                        		if (next == STATE_DEAD) {
                        			alive = false;
                        		} else if (next == STATE_LIVE) {
                        			alive = true;
                        		} 
                        	};
                        
                        	set clone = function (c, r) {
                        		set o = new this;
                        		set o.c = c;
                        		set o.r = r;
                        		set o.alive = math.random(2);
                        		return o;
                        	};
                        };
                        
                        set initialize = function () {
                        
                        	SIZE.loopFor (function (r) {
                        		set row = array {};
                        		set rrow = array {};
                        		SIZE.loopFor (function (c) {
                        			row.add(cell.clone(c, r));
                        			rrow.add(-1);
                        		});
                        
                        		cells.add(row);
                        		render.add(rrow);
                        	});
                        };
                        
                        initialize();
                        
                        set evalNext = function () {
                        	cells.eachItem(function (item) {
                        		item.evalNext();
                        	});
                        	cells.eachItem(function (item) {
                        		item.apply();
                        	});
                        };
                        
                        set draw = function () {
                        	cells.each(function (line, row) {
                        		line.each (function (item, col) {
                        			if (item.alive) {
                        				render[col][row] = 5;
                        			} else {
                        				render[col][row] = 1;
                        			}
                        		});
                        	});
                        
                        	set stamp = algo.stamp.clone(render, SCALE);
                        	stamp.draw();
                        	stamp.delete();
                        };
                        
                        // initialize
                        ui.showAlgo();
                        algo.hide();
                        algo.setStack (1);
                        draw ();
                        
                        util.pulse (function () {
                        	evalNext();
                        	draw ();
                        }, 50);
                        



                        -
                        Edité par metalm 18 septembre 2013 à 16:00:39

                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 septembre 2013 à 13:59:56

                          Salut Metalm.... c'est trop d'honneurs !

                          Alors que pense tu de la syntaxe / sémantique du langage ?

                          Pour le jeu de la vie, oui je savais. J'attendais patiemment que quelqu'un trouve la coquille.... c'est fait !

                          antoine : dé-compiler.... c'est moche.... je suis outré.....

                          Tu utilise quel outil ?

                          Cela dit, les sources devrait s'ouvrir dés que j'aurai présenté mon mémoire (c'est à dire décembre si tout vas bien).

                          J’abandonne un peu le projet de doctorat parce les langage formels ne sont plus des sujets à la mode (du moins pas dans l'école que je vise).

                          Pour les plugins, je t'ai envoyé le lien sur dvp (désolé pour le lien concurrent) http://caron-yann.developpez.com/tutoriels/algo/algoid-plugins-tutoriels/

                          (Note aux admin, si ça pose souci, j'enlève sans problème).

                          Vala..... en tous cas je suis content de vous retrouver en cette merveilleuse rentré.

                          Les vacances se sont elles bien passées ? De mon coté voile, bbq et soleil. Le pied ;-)

                          -
                          Edité par CyaNn 18 septembre 2013 à 17:02:25

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Découvrez Algoid le langage pour apprendre à programmer.
                            18 septembre 2013 à 19:08:05

                            Ah, je ne suit pas du tout developpez.com, je lirait ça plutôt que de m'amuser avec Java Decompiler !

                            Mais tu compte vraiment rendre ton travail open-source ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Arius, vraiment le plus puissant de l'ancienne Ligue des Super Zéros !
                              19 septembre 2013 à 9:04:26

                              Oui ! Cet année, j'ai le travail de mémoire à présenter pour Décembre. Après quoi nous aimerions déménager avec ma femme. Autant dire que je n'aurai plus beaucoup de temps a consacrer au projet.

                              Du coup, plutôt que de garder ça dans une caisse poussiéreuse, je préfère que des développeurs ce fasse plaisir avec.

                              Vilain ! Dans ta signature tu ne fait pas du pub pour Algoid.... c't'une honte !!!!! Suis outré !!!!! lol....

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Découvrez Algoid le langage pour apprendre à programmer.
                                19 septembre 2013 à 10:50:15

                                Bonjour CyaNn,

                                Mes premiers retours sont :

                                • - il est très agréable de travailler avec ton éditeur,
                                • - le mode pas à pas marche super bien,
                                • - le langage est fluide, et "presque" facile à lire...

                                Et oui, je dis presque parce que l'exemple "Conway's Game of Life" n'est pas simple à lire et à comprendre. A travers cet exemple, on découvre l’expressivité (ce terme est peut-être mal choisi) du langage à travers la simplicité syntaxique qu'il offre pour créer : des objets, des méthodes, appeler les méthodes avec méthodes en paramètres, etc.

                                Mais voilà, de mon point vue, ça complique la lecture du code.

                                C'est un peu comme en Java, programmer en objet, c'est beau, surtout pour son concepteur ! Pour celui qui arrive après, le code est presque illisible car on passe son temps à comprendre le modèle pensé par le créateur !

                                J'ai eu la même impression, car je passe mon temps à scroller pour me rappeler la méthode passée en paramètre, découvrir le type de la variable et son contenu.

                                C'est peut être une gymnastique à acquérir que je n'ai pas encore.

                                Bon courage pour ton mémoire ! 

                                -
                                Edité par metalm 19 septembre 2013 à 10:51:18

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 septembre 2013 à 14:13:06

                                  Salut Metalm.

                                  Merci de ce retour. Toute critique est bonne a prendre !!!!

                                  Mais je te rejoint entièrement, le fait que les variables soient faiblement typés et les paradigmes (complexes pour le coup) ça n'aide pas la lecture du code.

                                  Pour de l'objet (et je m'en rend compte maintenant du fonctionnel aussi), il faut un fort degrés d'abstraction pour relire le code d'autrui sans y avoir été initié. (ce que j'essai d’éviter à tout pris, même au boulot).

                                  Je pensais à un petit module qui serait intéressant, ce serait de pouvoir extraire un schema UML du modèle objet / fonctionnel du script. Mais je vais être court en temps.

                                  Au fait, c'était quoi mon erreur sur le jeu de la vie ?

                                  Et merci pour le mémoire. Si tout va bien, je le commence semaine prochaine.... J’espère d'ici là avoir fini l'intégration de la doc dans l'IDE et les plugins.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Découvrez Algoid le langage pour apprendre à programmer.
                                    19 septembre 2013 à 14:25:46

                                    La force de ton éditeur serait de faciliter la navigation pour retrouver rapidement ses petits. L'affiche UML est une bonne idée.

                                    Mais comme je te disais, c'est aussi une habitude à acquérir. Ce que tu as fait est déjà très bon !

                                    Pour ton erreur, je rigole d'avance ...

                                    Attention.... roulement de tambour... c'est ligne 35, il fallait inverser les indices : f(cells[row][col]) ! C'est un matrice de colonnes et non de lignes ?

                                    -
                                    Edité par metalm 19 septembre 2013 à 14:30:37

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 septembre 2013 à 21:15:45

                                      Mouarfffff ha ha ha ha....

                                      Oui en effet c'était une erreur bête.

                                      Je la corrige toute de suite dans les projets.

                                      Et merci pour les commentaires positifs, ça fait plaisir.

                                      Dés que l'article sur les plugins est terminé, je fait un bip ;-)

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Découvrez Algoid le langage pour apprendre à programmer.
                                        19 septembre 2013 à 21:26:39

                                        metalm -> Concernant l'erreur ligne 35, dans ce cas il faut aussi changer ligne 105 et 107 non ?

                                        C'est bizarre !

                                        -
                                        Edité par CyaNn 20 septembre 2013 à 16:08:59

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Découvrez Algoid le langage pour apprendre à programmer.
                                          20 février 2017 à 1:37:44

                                          Bonjour.

                                          J'ai découvert votre application il y a peu de temps et j'ai adoré.

                                          Ça faisait un moment que je cherchais un compilateur qui marche et je n'ai pas été déçu. 

                                          Il y a juste un petit problème :

                                          Certains exemples ne marche pas comme Star Battle .

                                          Quand je lance un exemple dans le dossier "featured" ca fait tout bugger, plus rien ne marche et je dois quitter l'application.

                                          À part ça je vous dis bravo pour cette superbe application et bonne continuation.

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          [Langage de programmation] Algoid / AL

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown