Aller directement au contenu
  • Catégories
  • Récent
  • Mots-clés
  • Populaire
  • Web
  • Utilisateurs
  • Groupes
Habillages
  • Clair
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Sombre
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Défaut (Aucun habillage)
  • Aucun habillage
Réduire
Melinyel

Melinyel

  1. Accueil
  2. Programmation
  3. Développement de logiciels
  4. [Langage] Kore

[Langage] Kore

Planifié Épinglé Verrouillé Déplacé Développement de logiciels
10 Messages 4 Publieurs 3.2k Vues
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • E Hors-ligne
    E Hors-ligne
    Eloha
    Membre d'honneur
    a écrit sur dernière édition par
    #1

    Bonjour !

    J'ai demandé de au créateur de Kore de reprendre la présentation qu'il a écrit pour vous présenter ce langage sur Melinyel donc voilà 😄 :

    kore2.png

    Qu'est-ce que Kore ?

    Kore est un langage de programmation orienté objet dont le compilateur est en cours de développement. Le compilateur génère des exécutables x86.

    L'objectif défini du projet est d'une part d'aboutir sur un langage générique qui soit accessible, concis, et performant, et d'autre part, de faciliter la création de jeux vidéo via sa librairie standard. Par ces objectifs, il faut comprendre qu'il s'agit de synthétiser ce qui peut l'être, de clarifier les syntaxes, et de disposer de base de librairies multimédia basées sur DirectX, OpenGL, etc.

    Pourquoi un énième langage ?

    La création d'un langage de programmation performant est sans doute l'une des plus intéressantes épreuves que l'on puisse imaginer pour un développeur. Bien que l'exercice en tant que tel soit plus un travail au long cours qu'un obstacle, il n'en reste pas moins extrêmement enrichissant, cela mettant en œuvre une multitude de techniques et de connaissances. Bien sûr, même si l'intérêt personnel est nécessairement (et heureusement) là, ce n'est pas la seule raison à la création de Kore.

    Lorsque j'ai commencé à développer des jeux il y a plus d'une dizaine d'années de cela, j'ai entrepris l'apprentissage du Dark Basic, un langage dont la simplicité n'a d'équivalent que son manque d'optimisations. Au fil des années, j'ai fini par être amené à développer des dizaines de plugins pour le langage dans le but de l'améliorer. Mais au final, le résultat restait décevant, et c'est bien logique : le cœur du langage reste assez lent, chose que l'on ne peut malheureusement pas contrer en tant qu'utilisateur. Depuis, même si l'envie ne manque pas, le fait de développer avec ce langage est assez rebutant.

    Parallèlement à cela, je n'ai rencontré à ce jour aucune solution gratuite et ouverte permettant de développer des jeux performants tout en gardant la simplicité de mise en oeuvre d'un Dark Basic. La plupart des outils qui disposent d'une telle facilité sont le plus souvent payant ou fermés, et les langages tels que le C++, s'ils amènent les possibilités, ils impliquent également un développement dont les contraintes nuisent au plaisir de développer.

    J'ai donc commencé à créer mon propre langage sur ce modèle que j'avais apprécié du Dark Basic, à savoir simplicité du langage et mise en oeuvre immédiate.

    Performances ?

    Les exécutables générés à l'heure actuelle par Kore ont des performances intéressantes : dans les tests que j'ai pu effectuer (boucles sur des tests, calculs, etc), il en ressort que ceux-ci présentent une rapidité équivalente à celle du C dans la plupart des cas (compilation GCC/Visual Studio, optimisations off).

    Cette rapidité est liée au fait que le compilateur génère directement du code Assembleur (la source .asm est générée automatiquement lors de la compilation, en même temps que l'exécutable), et utilise un design similaire et compatible à celui du C.

    Pourquoi le nom de Kore ?

    Par le passé, Kore fut connu sous les noms de Jade, ou encore JadeBasic. Avec l'avancée du développement du compilateur (débuté en 2006), le potentiel du langage fit qu'il devint intéressant de chercher à se détacher d'un nom trop commun, et qui fut récupéré par d'autres outils au fil des années.

    Le nom "Kore" provient initialement d'une transformation du terme "C ore" (minerai de C), lié à la compatibilité du langage avec le C. Le choix du nom fut acté en raison des multiples sens dont il était porteur : la symbolique du noyau, forte pour un langage de programmation qui forme le coeur de tout logiciel. La signification du nom "Kore" qui lu en hiragana signifie "cela", "this" intéressante pour un langage objet. Ou encore le lien avec Perséphone, également appelée Kore, qui est la déesse grecque fille de Déméter. Kore étant en effet un langage intégrant une mécanique forte d'application de la loi de Déméter.

    Quelles sont les caractéristiques du langage ?

    Le langage suit trois principes régissant sa syntaxe :

    • ne pas avoir à écrire ce qui n'est pas utile à la lecture, si le compilateur est capable de le déduire

    • disposer d'une écriture concise mais claire, de mots-clés rapides à écrire et faciles à mémoriser

    • le langage ne doit pas limiter l'utilisateur dans l'accès bas niveau

    Syntaxe :

    Les sources d'inspiration du langage sont le C, le C#, Ruby, Eiffel, et Dark Basic. Kore emprunte différentes fonctionnalités à ceux-ci, notamment le principe d'accès uniforme.

    Typage :

    Le typage des variables est statique : une fois une variable typée, celle-ci ne peut plus changer de type. Le typage peut être explicitement realisé, mais également inféré par le compilateur : celui-ci déduit le type d'une variable à partir de l'expression qui lui est assignée. L'intérêt de cela est de permettre une plus grande souplesse d'écriture sans avoir à préciser constamment les types. Cela correspond typiquement à l'un des principes de Kore : le compilateur peut déduire le type, et le préciser n'est pas indispensable à la compréhension.

    do      // Boucle infinie.
       ...
    loop
    
    while conditionVraie
       ...
    end
    
    repeat
       ...
    until conditionVraie
    

    Boucles :

    Les boucles implémentées sont plutôt classiques :

    do      // Boucle infinie.
       ...
    loop
     
    while conditionVraie
       ...
    end
     
    repeat
       ...
    until conditionVraie
    

    Conditions :

    Là encore du classique :

    if conditionVraie then ...
    
    if conditionVraie
       ...
    end
    
    if conditionVraie
       ...
    else
       ...
    end
    
    if conditionVraie
       ...
    elsif
       ...
    else
       ...
    end
    

    Modules :

    Les programmes créés en Kore sont découpés sous forme de modules. C'est la structure hiérarchiquement de plus haut niveau. Un module peut contenir des classes, des fonctions et du code. Le code contenu au sein d'un module permet d'exécuter un code d'initialisation au chargement de celui-ci. Par défaut, le code écrit l'est dans le module "main" qui est exécuté au lancement d'une application.

    module nomDeModule
    
       // classes, énumération, etc.
    
       def nomDeProcedure
          ...
       end
    
       def nomDeFonction as TypeRetourne
          ...
          return valeurRetournee
       end
    
       // du code ici
    end
    

    Orienté objet :

    Kore est orienté objet, dans la mesure de l'utilité et de l'efficacité des notions de l'orienté objet. Toutes ces notions ne sont/seront pas nécessairement incluses au langage. Une partie des fonctionnalités à ajouter est déjà établie, mais tout est susceptible d'évoluer grandement au fil de l'avancée du développement et des retours.

    class NomDeClasse as ClasseHeritee
    
       champ1 as TypeChamp
    
       // constructeur
       def new
       end
    
       // destructeur
       def delete
       end
    
       def nomDeMethode
          ...
       end
    
       def nomDeMethode2 as TypeRetourne
          ...
          return valeurRetournee
       end
    
       self def nomDeMethodeDeClasse
          ...
       end
    end
    
    a = NomDeClasse.new               // Instanciation.
    a.nomDeMethode                    // Appel de méthode d'instance.
    NomDeClasse.nomDeMethodeDeClasse  // Appel de méthode de classe
    a.delete                          // Destruction.
    

    Enumérations :

    Les énumérations permettent de gérer des listes de valeurs à utiliser comme paramètres. Les valeurs peuvent être définies explicitement si besoin est.

    enum NomEnumeration
    
       Champ1,       // vaut 1
       Champ2,       // vaut 2
       Champ3 = 8,   // vaut 8
       Champ4        // vaut 9
    end
    
    test = NomEnumeration.Champ3   // variable de type NomEnumeration valant Champ3
    

    Tableaux :

    Les tableaux en Kore sont des conteneurs de données multidimensionnels de type jagged array :

    unTableau as integer()           // Déclaration explicite d'un tableau d'entier.
    
    unAutreTableau = integer(10)     // Déclaration inférée et assignation d'un tableau de 10 integer.
    unAutreTableau(0) = 13           // Assignation
    
    unTableau = Classe(10,10)        // Déclaration inférée et assignation d'un tableau de 10x10 Classe...
    unTableau(0,0) = Classe.new      // ... qui doivent être instanciéss.
    

    Itérateurs :

    Les itérateurs permettent de manipuler plus facilement les listes de données grâce à la boucle for...in :

    def iterateur as int()
    
            a = 0
            while a <= 15
                    yield a          // Retourne une valeur déclenchant une exécution du for.
                    a++
            end
    end
    
    for a in iterateur
            a.print         // Affiche les nombres de 0 à 15.
    end
    

    Ou encore :

    def premiers as int()
    
            yield 3
            yield 5
            yield 7
            yield 11
            yield 13
    end
    
    for a in premiers
            a.print
    end
    

    Headers :

    Pas besoin ici de headers au sens C/C++ du terme, le compilateur analyse préalablement le code avant de le compiler. Déclarez, c'est prêt à l'emploi. Ce que je tends à appeler "header", ce sont les fichiers permettant d'importer des .lib. Moyennant la création d'un code d'import, toute bibliothèque suivant la conventions d'appel C standards cdecl, et exportant ses noms de fonction peut être utilisée.

    Le code est détaillé un plus bas.

    Evolution du langage :

    Décembre 2006 :

    • début du projet sous forme de CLI (Command Line Interpreter)

    • déclaration implicite de variables

    • calculs arithmétiques

    Courant 2007 :

    • support des tests logiques if...endif et if...else...endif

    • boucle do...loop

    Décembre 2007 :

    • support de l'appel de fonctions externes issues de DLL

    Juillet 2008 :

    • implémentation de la gestion des DLL comme plugins

    • gestion des chaînes de caractères

    • implémentation des fonctions utilisateur (0.007)

    • typage des variables (0.007)

    • support des structures à un niveau (0.008)

    Août 2008 :

    • support des tableaux

    • itération for...to...next

    • code semi-compilé (bytecode interprété)

    Septembre 2008 :

    • code compilé, utilisation de FASM (0.010)

    • les structures gèrent plusieurs niveaux d'imbrication (structures de structures)

    • implémentation d'opérateurs de manipulation des pointeurs (& et $)

    Octobre 2008 :

    • remplacement des fichiers .dlls par les fichiers .lib

    • ajout d'un format de header pour les .lib

    • boucle while...endwhile

    Novembre 2008 :

    • implémentations des tableaux dynamiques

    • suppression du CLI et de l'interpréteur de bytecode, le langage est dès lors uniquement compilé

    • début de création de l'IDE "Dragon"

    Janvier 2009 :

    • options de compilations : SUBSYSTEM, ENTRY

    • support de l'assembleur dans le langage (asm...endasm)

    Février 2009 :

    • support des calculs sur des nombres à virgule flottante

    • support des conversions de type

    • les fonctions gère maintenant pleinement les types de retour

    • reprise à zéro du compilateur

    • début d'implémentation des classes

    • amélioration du if pour gérer la structure if...then et if...elseif...else...endif

    • mots-clés break et continue

    • implémentation d'un garbage collector de type "mark and compact"

    Courant 2009 :

    • retrait du garbage collector

    • debug et modifications mineures

    Courant 2010 :

    • arrêt du support des structures

    • debug et modifications mineures

    Mai-Juin 2011 :

    • support des classes (méthodes et champs)

    • debug et modifications mineures

    Août 2011 :

    • implémentation des énumérations

    • implémentation des self def (méthodes statiques)

    • support des surcharges de méthodes et fonctions

    • modification du modèle de header (utilisation de la syntaxe du langage)

    • modifications de syntaxe : mot-clé de fin de structure unique "end", définition de fonction/méthode par le mot-clé "def"

    • déclarations à typage inféré

    • ajout des itérateurs pour la boucle for...in

    • révision des tableaux.

    • début de travail sur l'IDE

    Septembre 2011 :

    • adoption du principe d'accès uniforme

    • implémentation des setter

    • début d'implémentation des références non nulles

    • mécanique de transfert d'appel permettant le respect de la loi de Déméter (couplage minimum)

    • implémentation des constructeurs par setter

    Octobre 2011 :

    • mise en place des débuts du contrôle d'accès (public, private, etc)

    • établissement de la mécanique de def over (override avancé), et override de champs

    • transformation des types standard en classe

    • établissement de la mécanique de postfix

    Février 2013 :

    • coup de boost sur l'IDE

    Avril 2013 :

    • left et right shift

    • opérateurs booléens

    • amélioration des modules

    • type booléen

    • type string

    • implémentation du switch

    • début de la réécriture du compilateur en Kore

    • renommage du langage

    Création de bibliothèques supplémentaires :

    Cette section s'adresse aux personnes qui souhaiteraient développer (dans le futur) des bibliothèques supplémentaires pour Kore. Le langage a été conçu pour permettre à tout le monde de créer et d'ajouter sa propre bibliothèque au langage.

    La création de telles bibliothèques s'effectue de manière simple, soit via des LIB, soit des DDL (uniquement Windows à l'heure actuelle, donc).

    La seule chose à faire pour rendre votre bibliothèque compatible avec Kore est de créer un fichier reprenant la convention (avec entre crochet l'optionnel) :

    [self] def NomDeFonction([arg1 as type, arg2 as type...argn as type]) [as type] alias NomDeFonctionCompile
    

    Le nom de la fonction est celui qui sera utilisé sous Kore. Le nom de fonction compilé est le nom interne de la fonction dans votre bibliothèque après compilation et name mangling.

    Vous devez nécessairement préciser la commande include "Bibliothèque.extension" pour que votre code soit fonctionnel.

    Exemple :

    module kore<br>        include "Jade_Console.lib"
    
            class Console
                    self def write(value as string) alias "_Print"
                    self def write(value as bool) alias "_PrintBool"
                    self def write(value as int) alias "_PrintInt"
                    self def write(value as float) alias "_PrintFloat"
    
                    self def pause alias "_Pause"<br>        end <br>end
    

    Le fichier de code Kore créé devra être placé dans le dossier "Headers", tandis que la bibliothèque compilée le sera sous le dossier "Library".

    Historique :

    12/07/2008 : Première release publique (v0.001)

    13/07/2008 : Release v0.002

    13/07/2008 : Release v0.003

    13/07/2008 : Release v0.004

    14/07/2008 : Release v0.005

    26/07/2008 : Release v0.006

    27/07/2008 : Release v0.007

    27/07/2008 : Release v0.008

    13/09/2008 : Release v0.011

    A venir : Release v0.100

    Aucun téléchargement disponible à l'heure actuelle

    Tout avis sur le langage et sa syntaxe m'intéresse : est-ce simple, complexe ? Agréable à lire ? Quelles fonctionnalités vous sembleraient intéressantes pour un langage de ce genre ? Il faut des avis, donc allez-y, lâchez-vous ! 😛

    Voici les sources de ce langage : https://github.com/kore-lang/compiler

    1 réponse Dernière réponse
    1
    • vfrzV Hors-ligne
      vfrzV Hors-ligne
      vfrz
      a écrit sur dernière édition par
      #2

      Merci de cette longue et complète présentation 😉

      hbY2yJ9.gif7CNtQh6.gif

      1 réponse Dernière réponse
      0
      • E Hors-ligne
        E Hors-ligne
        Eloha
        Membre d'honneur
        a écrit sur dernière édition par
        #3

        Merci de cette longue et complète présentation 😉

        De rien mais il faut dire ça au chère et adorable créateur de ce langage. 😛

        1 réponse Dernière réponse
        0
        • AzadA Hors-ligne
          AzadA Hors-ligne
          Azad
          a écrit sur dernière édition par
          #4

          Très bonne présentation, longue et complète. Instructive.
          Bravo Eloha, continue comme ça. 🙂

          Administrateur du forum.

          Contactez-moi par message privé ou par mail.

          1 réponse Dernière réponse
          0
          • SoulalexS Hors-ligne
            SoulalexS Hors-ligne
            Soulalex
            a écrit sur dernière édition par
            #5

            Message automatique

            Le sujet a été déplacé de « [Discussions communautaires](<base_url>/index.php/forum/1-discussions-communautaires/) → [Discussions générales](<base_url>/index.php/forum/9-discussions-g%C3%A9n%C3%A9rales/) » to « [Informatique](<base_url>/index.php/forum/51-informatique/) → [Autres / Divers / Découvertes](<base_url>/index.php/forum/105-autres-divers-d%C3%A9couvertes/) ».

            Soulalex, Administrateur de Melinyel
            + E-Mail : [[email protected]](mailto:[email protected] "Lien vers un courriel")
            + GitHub : [https://github.com/Soualex](https://github.com/Soualex "Lien externe")

            1 réponse Dernière réponse
            1
            • E Hors-ligne
              E Hors-ligne
              Eloha
              Membre d'honneur
              a écrit sur dernière édition par
              #6

              Nouveautés :

              • Langage désormais auto-compatible.

              • La prochaine étape, c'est maintenant de fortifier encore davantage les retours d'erreurs, puis d'ajouter des paramètres en ligne de commande pour lancer le compilateur depuis la plupart des outils. Vous devriez donc avoir d'ici une à deux semaine une version à tester  🙂

              1 réponse Dernière réponse
              0
              • vfrzV Hors-ligne
                vfrzV Hors-ligne
                vfrz
                a écrit sur dernière édition par
                #7

                J'ai trop hâte 🙂

                hbY2yJ9.gif7CNtQh6.gif

                1 réponse Dernière réponse
                0
                • E Hors-ligne
                  E Hors-ligne
                  Eloha
                  Membre d'honneur
                  a écrit sur dernière édition par
                  #8

                  Ca y est, hop. 5 ans et demi après la dernière release, j'ai mis une nouvelle version en ligne. J'ai créé un nouveau repository sur GitHub qui contient le code & les outils nécessaires au bon fonctionnement du compilateur. Comme déjà indiqué, ne vous attendez pas à monts et merveilles, il manque beaucoup des fonctionnalités que j'ai évoqué ici (c'était la condition sine qua none à la release "anticipée"), mais ça donne déjà un bon aperçu de l'aspect du langage. Vous pouvez trouver ça ici : https://github.com/kore-lang/kore

                  N'hésitez pas à jeter un coup d'oeil au readme sur GitHub, qui détaille comment compiler.

                  Pas d'IDE pour le moment, le travail que j'ai fait sur le mien est loin d'être suffisamment satisfaisant pour une release. Si vous souhaitez utiliser Notepad++ voici le contenu du XML à importer dans les langages utilisateur :

                  <NotepadPlus>
                      <UserLang name="Kore" ext="k" udlVersion="2.1">
                          <Settings>
                              <Global caseIgnored="no" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
                              <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
                          </Settings>
                          <KeywordLists>
                              <Keywords name="Comments">00// 01 02 03 04</Keywords>
                              <Keywords name="Numbers, prefix1"></Keywords>
                              <Keywords name="Numbers, prefix2"></Keywords>
                              <Keywords name="Numbers, extras1"></Keywords>
                              <Keywords name="Numbers, extras2"></Keywords>
                              <Keywords name="Numbers, suffix1"></Keywords>
                              <Keywords name="Numbers, suffix2"></Keywords>
                              <Keywords name="Numbers, range"></Keywords>
                              <Keywords name="Operators1"></Keywords>
                              <Keywords name="Operators2"></Keywords>
                              <Keywords name="Folders in code1, open">module class enum def do loop while repeat until if elsif else then switch case default</Keywords>
                              <Keywords name="Folders in code1, middle"></Keywords>
                              <Keywords name="Folders in code1, close">end</Keywords>
                              <Keywords name="Folders in code2, open"></Keywords>
                              <Keywords name="Folders in code2, middle"></Keywords>
                              <Keywords name="Folders in code2, close"></Keywords>
                              <Keywords name="Folders in comment, open"></Keywords>
                              <Keywords name="Folders in comment, middle"></Keywords>
                              <Keywords name="Folders in comment, close"></Keywords>
                              <Keywords name="Keywords1">using&#x000D;&#x000A;return</Keywords>
                              <Keywords name="Keywords2">as</Keywords>
                              <Keywords name="Keywords3">bool&#x000D;&#x000A;byte&#x000D;&#x000A;int&#x000D;&#x000A;float&#x000D;&#x000A;string</Keywords>
                              <Keywords name="Keywords4">true&#x000D;&#x000A;false&#x000D;&#x000A;null</Keywords>
                              <Keywords name="Keywords5"></Keywords>
                              <Keywords name="Keywords6"></Keywords>
                              <Keywords name="Keywords7"></Keywords>
                              <Keywords name="Keywords8"></Keywords>
                              <Keywords name="Delimiters">00&quot; 01\ 02&quot; 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
                          </KeywordLists>
                          <Styles>
                              <WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="COMMENTS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="LINE COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
                              <WordsStyle name="NUMBERS" fgColor="00B7B7" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
                              <WordsStyle name="KEYWORDS1" fgColor="8000FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
                              <WordsStyle name="KEYWORDS2" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="KEYWORDS3" fgColor="808040" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
                              <WordsStyle name="KEYWORDS4" fgColor="400000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
                              <WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="OPERATORS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="FOLDER IN CODE1" fgColor="8000FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
                              <WordsStyle name="FOLDER IN CODE2" fgColor="FF0080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS1" fgColor="FF8080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                              <WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
                          </Styles>
                      </UserLang>
                  </NotepadPlus>
                  

                  La release fut l'occasion d'une passe sur l'organisation des différents éléments utilisés par le compilateur (bibliothèques, assembler, linker)... C'est donc prêt à l'emploi si vous souhaitez ajouter des libs et voir le résultat.

                  Notez que certaines des dernières modifications que j'ai effectué sur le compilateur, à savoir l'ajout des arguments en ligne de commande, font que le compilateur C++ n'est plus en mesure de compiler le compilateur Kore. Tout tourne désormais à partir de l'actuelle version commitée sur GitHub. Au passage, avec la release, je commencerai à travailler sur des branches et non plus directement la master, de manière à garder les choses claires.

                  Voilou. Si d'aventure vous testiez, je suis dispo pour tout coup de main, fix (il y en aura assurément à faire), etc.

                  Je concluerai par un petite récap des éléments utilisables (la première page du sujet vous donnera les détails), attention : tout ce qui est itération n'est pas implémenté (yield et for, notamment)

                  Structures de code

                  • module...end
                  • class...end
                  • enum...end
                  • def...end

                  Boucles

                  • while...end
                  • do...loop
                  • repeat...until

                  Conditions

                  • if...then
                  • if...end
                  • if...else...end
                  • if...elsif...end
                  • if...elsif...else...end
                  • switch...end, qui inclut : case...then / case...end / default...then / default...end

                  Divers

                  • Array : type(nombre), ex : b = int(10)  // tableau de 10 int assigné à b
                  • Incrément : a++
                  • return pour quitter une méthode
                  • break pour quitter une boucle
                  1 réponse Dernière réponse
                  0
                  • E Hors-ligne
                    E Hors-ligne
                    Eloha
                    Membre d'honneur
                    a écrit sur dernière édition par
                    #9

                    Le projet semble abandonné. 😞

                    Ou alors le créateur a appuyé sur le bouton pose. :mellow:

                    1 réponse Dernière réponse
                    0
                    • AzadA Hors-ligne
                      AzadA Hors-ligne
                      Azad
                      a écrit sur dernière édition par
                      #10

                      Aux yeux du GitHub, oui en effet.
                      C'est vachement dommage de voir des projets comme ça tomber à l'eau, surtout la motivation, la documentation et la création qu'il avait commencé à produire.
                      Peut-être que s'il avait fait un site / blog / forum pour amener des gens à travailler dessus avec lui ça l'aurait motivé à continuer.
                      Après, je ne sais pas quel est son motif mais bon. C'est son choix. :ph34r:

                      Administrateur du forum.

                      Contactez-moi par message privé ou par mail.

                      1 réponse Dernière réponse
                      0

                      Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

                      Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

                      Grâce à votre participation, ce message peut devenir encore meilleur 💗

                      S'inscrire Se connecter
                      Répondre
                      • Répondre à l'aide d'un nouveau sujet
                      Se connecter pour répondre
                      • Du plus ancien au plus récent
                      • Du plus récent au plus ancien
                      • Les plus votés


                      • Se connecter

                      • Connectez-vous ou inscrivez-vous pour faire une recherche.
                      Powered by NodeBB Contributors
                      • Premier message
                        Dernier message
                      0
                      • Catégories
                      • Récent
                      • Mots-clés
                      • Populaire
                      • Web
                      • Utilisateurs
                      • Groupes