IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres langages Discussion :

Nouveau langage de programmation : le langage G


Sujet :

Autres langages

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Nouveau langage de programmation : le langage G
    Bonjour à tous,

    J'ai créé un langage de programmation, ou plutôt de script puisqu'il ne se compile pas mais est interprété.. enfin ce n'est qu'une histoire de dénomination. J'aimerais avoir votre avis sur mon travail. Le langage pour le moment n'a pas de grandes prétentions, mais il permet jusqu'à maintenant de faire des calculs (bien entendu), des sockets (client, serveur), du multithread (basique), de la manipulation de chaînes de caractères...

    Voici le lien pour télécharger le parser : http://glanguage.free.fr/releases/GLANGUAGE.0.7.tar.gz

    Des programmes faisant office d'exemples sont disponibles dans le dossier "examples" de l'archive.

    J'ai créé un petit site web, sans prétentions certes, mais permettant au moins de télécharger le parser, consulter la documentation en ligne et en savoir un peu plus sur le langage : http://glanguage.free.fr

    Voici à quoi ressemble le langage (programme basique de calcul de la factorielle d'un nombre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function factorial(int nb) return int {
        int fact = 1;
        for (int i = 1; i <= nb; i=i+1) {
            fact = fact * i;
        }
        return fact;
    }
    
    entry {
    	echo("Whose number you want the factorial to be calculated?",1);
    	echo("nb = ",0);
    	int nb;
    	input(nb,int);
    	int fact = factorial(nb);
    	echo(nb & "! = " & fact & ".",1);
    }
    Merci pour vos avis

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 123
    Points : 174
    Points
    174
    Par défaut
    Ton initiative me parait intéressante. Ce langage ressemble beaucoup à du C.
    Je ne l'ai pas encore essayé, mais je vais le faire et je te recontacterai.

    Quelle orientation comptes-tu donner à ton langage? Pourra t'on créer des objets (boutons, edits, combobox, ...) ou comptes-tu l'orienter vers le développement de jeux?
    En quel langage est-il écrit?

    Et toi, que penses-tu de mon langage qui est dérivé du basic?
    www.panoramic-language.com

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Dis donc c'est vraiment impressionnant le langage que tu as fait, et l'IDE aussi ! C'est très rapide et facile de faire des applications graphiques, et en plus ça compile et te génère ton .exe sans broncher ^^
    Honnêtement je suis assez impressionné, tu as énormément de mérite

    Pour ce qui est de la réalisation du langage et du parsing, as-tu utilisé des méthodes d'évaluation d'arbre syntaxique abstrait ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 123
    Points : 174
    Points
    174
    Par défaut
    Merci pour ces encouragements.

    Pour le parsing, j'ai utilisé une méthode qui existe sans doute, je ne prétends pas avoir inventé quelque chose, mais que je n'ai trouvé décrite nulle part. je l'ai appelé "évaluation par réduction".
    Je m'explique par un exemple très simple.

    J'ai à évaluer une expression du type :
    a+2*(b+3+c) dans laquelle a,b,c sont des variables.

    1 - je vais chercher la valeur des variables, et je les remplace par leurs valeurs dans l'expression.
    par exemple, si a vaut 10, b vaut 11 et c vaut 12, j'obtiens:
    10+2*(11+3+12)

    2 - je réduis cette expression en essayant de faire cycliquement le maximum d'opérations, dans certain ordre de priorité et en tenant compte des parenthèses:
    - on fait toutes les additions possibles
    - on fait toutes les multiplications possibles
    - on remplace tous les (nombre) par nombre si c'est possible
    et on recommence ce cycle jusqu'à ce qu'il n'y ait plus rien à réduire dans le cycle

    Ce qui donne:
    1 - premier cycle
    la première opération possible, c'est 11+3=14 que je remplace:
    10+2*(14+12)
    il est ensuite possible de faire une autre addition: 14+12 que je remplace par 26
    10+2*(26)

    2 - nouveau cycle
    la seule opération possible est ensuite de remplacer (26) par 26
    10+2*26

    3 - nouveau cycle
    il n'y a plus d'addition possible, mais une multiplication est possible : 2*26 est remplacé par 52
    10+52

    4 - nouveau cycle
    une addition est possible, qui donne 62

    5 - nouveau cycle
    62 est le résultat car plus aucune réduction n'est possible.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    C'est ingénieux

    Et ça ressemble beaucoup à l'arbre syntaxique abstrait de la théorie des langages. En fait j'ai appris ça à l'IUT, et j'ai trouvé ça tout simplement fantastique :p En fait, si tu ne sais pas encore en quoi ça consiste, et bien c'est très proche ce que tu fais :

    (a+b)*(e+(c*p))

    Cette expression arithmétique va pouvoir être représentée par cet arbre :

    1_Multiplication (*)
    2___Addition (+)
    _______a
    _______b
    3___Addition (+)
    _______e
    4______Multiplication (*)
    __________c
    __________p

    Chaque Noeud (que j'ai représenté par 1, 2, 3 ou 4), est en fait une instance d'une classe "Noeud".
    La classe Noeud possède une méthode getValeur() qui est sensée retourner la valeur du noeud.
    Par exemple, un getValeur() sur le noeud 1 retournera la multiplication du getValeur() appliqué à 2 et du getValeur() appliqué à 3. Mais le getValeur() du 2 fera l'addition des valeurs des symboles "a" et "b" (pris dans la table des symboles), et le getValeur() du 3 fera l'addition de la valeur du symbole "e" et du getValeur() de 4, et ainsi de suite...
    En gros, les valeurs vont remonter l'arbre jusqu'au Noeud de l'instruction de départ

    Et bien entendu, on peux étendre ce principe à toute fonction algorithmique retournant (ou non) un résultat.

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par PANORAMIC Voir le message
    Pour le parsing, j'ai utilisé une méthode qui existe sans doute, je ne prétends pas avoir inventé quelque chose, mais que je n'ai trouvé décrite nulle part. je l'ai appelé "évaluation par réduction".
    Je m'explique par un exemple très simple.

    as-tu entendu parler des reductions alpha, beta et eta ?
    tu devrais essayer de les comparer à ce que tu fais
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    gorgonite: Est ce que tu peux poster quelques liens? Thx.
    G-FACTION: Est-ce que tu utilise la lazy evaluation? Est ce que tes variables ont un scope dynamiques ou statiques?
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  8. #8
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    Si G est un pur exercice intellectuel alors ignorez mon message

    sinon je vais me faire l'avocat du diable

    il existe actuellement des langages de script tels PERL, PYTHON, TCL qui sont gratuits, multi-plateformes, évolutifs (de nouvelles versions sortent régulièrement)

    quels sont les points forts de G par rapport à ces langages ?

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Le langage G ça existe déjà, G pour graphique, langage utilisé par labview (donc surement déposé)...

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 123
    Points : 174
    Points
    174
    Par défaut
    Je déterre ce post pour te demander si tu continues à développer ton langage, que j'apprécie.
    Je vais souvent sur ton site, mais il ne bouge plus et ton langage est toujours à la version 07 béta depuis le 21 février 2008.

    Si tu as abandonné l'idée de le développer, envisages-tu de publier son source pour que quelqu'un le continue?
    Dans ce cas, je suis volontaire pour lui donner des possibilités graphiques et 3D.

Discussions similaires

  1. langage de script et langage de programmation
    Par slim_java dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 06/06/2017, 13h50
  2. Réponses: 290
    Dernier message: 31/05/2013, 10h43
  3. Réponses: 130
    Dernier message: 04/02/2011, 10h11
  4. Choix d'un nouveau langage de programmation
    Par ProgVal dans le forum Langages de programmation
    Réponses: 9
    Dernier message: 09/01/2010, 15h20
  5. Comment rajouter un nouveau langage de programmation ?
    Par Acropole dans le forum Eclipse
    Réponses: 2
    Dernier message: 12/11/2009, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo