Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'Langage'.

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Discussions communautaires
    • Annonces importantes
    • Suggestions
    • Postulation
    • Présentation des membres
    • Discussions générales
    • Multimédias
    • Jeux vidéos
    • Actualités
    • Aide / Support
    • Études
    • Archives
  • Informatique
    • Projets des membres
    • Autres / Divers / Découvertes
    • Crypto-monnaie(s)
    • Hardware / Electronique
    • Réseaux
    • Gestion de serveur
    • Système d'exploitation : Smartphone
    • Système d'exploitation : Ordinateur
  • Programmation
    • Projets des membres
    • Développement web
    • Développement de logiciels
    • Développement d'applications pour smartphones
    • Outils du développeur
    • Aide / Support
  • Emulation
    • Aion
    • Arma III
    • Dofus
    • Dragonica
    • Emulateurs consoles
    • S4 League
    • FlyFF
    • Grand Theft Auto
    • Minecraft
    • Tera
  • Partenariats
    • <b>WoW Emu - La communauté émulation WoW</b>
    • <b>ActuGaming</b>
    • <b>H-Wars</b>
    • <b>EasyChat - Solution gratuite de chat client et serveur (anciennement Melichat)</b>
    • <b>Le Monde des Lunes</b>
    • <b>DansTonCode</b>

Calendriers

  • Calendrier de la communauté

Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Skype


Site web


AIM


MSN


ICQ


Yahoo


Jabber


Tox


Centres d'interêts


Localisation


Niveau d'étude

4 résultats trouvés

  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à : 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
  2. Abraham

    #1 Présentation

    Bonjour à tous, Aujourd'hui, je vais vous présenter rapidement le langage LUA (Lune en portugais). Dans cette partie, nous verrons juste les considérations d'ordre général, puis dans les prochains tutoriels, je vous expliquerai le fonctionnement de ce langage. I - L'histoire du Lua Lua été créé en 1993. C'est un langage conçu pour pouvoir être embarqué au sein d'applications afin de de pouvoir optimiser celles-ci. Lua (qui signifie Lune en portugais) a été créé par Luis Henrique de Figueiredo, Roberto Ierusalimschy et Waldemar Celes (appartenant au groupe de recherche TeCGraf). Lua a été écrit en langage C ANSI strict, c'est pourquoi il est compatible avec une très grande variété de systèmes. Il s'intègre parfaitement dans la plus part des projets écrits en C. C'est un langage notamment très apprécié pour les interfaces de jeu (le plus connu étant World of Warcraft) mais aussi pour Garry's Mod ou Far Cry. Il est aussi utilisé pour réaliser la plus part des jeux sur DS (avec le microLua). (Source : http://wikipedia.lua/wiki/Lua) II - Les moteurs Lua Ce qu'il faut savoir, c'est que vous ne pourrez développer que très rarement des programmes en LUA seulement, puisque ce n'est pas un langage assez puissant pour qu'il puisse se suffire à lui même. De ce fait, il vous faudra l'intégrer dans un projet, et je vais vous en présenter rapidement deux (les seuls que je connaisse), à ce jour. Eluna Engine (sur World of Warcraft) : C'est par celui-là que j'ai commencé. C'est en fait un moteur que vous pouvez installer facilement sur Trinity Core (j'essaierai de vous passer quelques tutoriels vidéos très bien foutus). Il vous permet, grâce à sa simplicité, de changer presque toute l'interface du jeu (à savoir les cosmétiques, le comportement des PNJ's, les boites d'affichage etc ...) sans pour autant toucher au core du serveur (qui est plus compliqué à gérer puisque écrit en C++). Cependant, attendez vous à avoir moins de possibilité qu'en modifiant le core. Mais ne vous trompez pas, j'ai réussi à faire des choses sympa avec Eluna tel un système de levier qui ouvre une grille lorsqu'il est activé, un système de connexion élaboré (et oui, Eluna gère les bases de données ! ) Bref, Eluna propose pas mal de possibilités, mais avec une documentation qui laisse à désirer puisque incomplète sur certains points. Multi Theft Auto (que j'utilise en ce moment) est en réalité un mod qui permet de jouer en ligne avec d'autres joueurs (impossible de base sur GTA SAN ANDREAS) tout en offrant la possibilité au développeur de créer son serveur de A à Z sans aucun script prédéfini. Et devinez quoi ? Le moteur est en Lua. Pour le coup, la documentation est géniale, la communauté assez altruiste ce qui vous permet d'obtenir rapidement une réponse. MTA gère aussi bien les interfaces GUI que la connexion à la base de données et est d'autant plus puissant qu'il gère aussi bien le côté client (client-side) que le côté serveur (server-side) ce qui vous permet d'économiser des performances de votre serveur dédié. En bref, Lua est un langage très sympa qui s'intègre parfaitement à certains projets en proposant une alternative aux langages plus compliqué. Je n'ai pas stipulé le fait que vous pouvez tester vos petits scripts sur le site officiel de Lua (cf. annexes) III - Annexes Lua * Site officiel de Lua : http://lua.org * Testez vos scripts : http://lua.org/demo.html Eluna Engine * Installer Eluna Engine : http://www.youtube.com/watch?v=8wGHf7FbhSw * Documentation : http://wiki.emudevs.com/doku.php?id=eluna * Github du projet : https://github.com/ElunaLuaEngine/Eluna/wiki/Installation-&-Updating Multi Theft Auto * Site officiel : http://mtasa.com/ * Documentation : http://wiki.mtasa.com Voilà, d'autres tutoriels arriveront pour vous présenter plus en profondeur ce langage.
  3. Coucou ! Vous connaissez Julia ? Un language sous licence MIT créé par Stefan Karpinski, Viral Shah et Jeff Bezanson dont le but était de « Développer un langage de programmation rapide, capable d’être utilisé pour n'importe quelle tâche ». Ce langage de haut niveau influencé par Matlab, R, Ruby, Perl, Python est un langage de programmation multi-plateformes et à typage dynamique. Ce langage est très approprié dans le domaine des mathématique en vue du fait que ce langage ce rapproche des performances du C ( Benchmark) . Exemple d'un "Hello World" : julia> `echo hello` `echo hello` En voici un autre avec une fonction : function hypot(x,y) # Commentaire x = abs(x) y = abs(y) if x > y r = y/x return x*sqrt(1+r*r) end if y == 0 return zero(x) end r = x/y return y*sqrt(1+r*r) end Selon les concepteurs, ce langage ne s’agit pas là de remplacer les langages les plus courants, mais plutôt de donner un aperçu des futurs langages de programmation. Voilà
  4. ( sujet en cours de réalisation ) Qu'est-ce que Rust ? Rust est un langage de programmation multi-paradigme (procédural, fonctionnel, orienté objet), compilé et orienté système. Il se veut « un langage orienté objet statique, typé, sûr, concurrentiel et efficace » et donc être un sérieux des langages tels que le C, C++, D et Go. Ce langage est proposé par Mozilla sous licence MIT et Apache 2. Pourquoi encore un autre langage ? La raison est simple. C'est que les développeurs de Mozilla ont besoin de produire du code à la fois efficace, sécurisé, et parallélisable ; et le langage C++ qu’utilisent habituellement les développeurs Mozilla atteint rapidement ses limites sur ces deux derniers points. Et aussi, Mozilla a monté un projet nommé « Servo » ( Lien Github : https://github.com/mozilla/servo ) développé lui même en Rust. Servo, c'est quoi ? Eh bien c'est un moteur de rendu expérimental pour navigateur web en cours de développement par Mozilla et Samsung. La volonté de Mozilla, réutiliser ce que la riche histoire des langages de programmation leur avait laissé, et non de réinventer la roue une énième fois sans tirer des leçons du passé ! Comment ce projet est né ? Au début, Graydon Hoare, commence à développer son propre langage nommé, je vous le donne en mille, Rust, dont le développement a débuté en 2006. C'est 3 ans plus tard, Graydon Hoare, jugea Rust assez « mature » et c'est pour cela qu'il décida d'être épaulé par Mozilla. Les caractéristique ? Rust charge l’écriture de code dans des styles procéduraux, fonctionnels et orientés objet. Certaines de ses caractéristiques comprennent l’inférence de type, des fonctions d’ordre supérieur, des modèles types de données algébriques, ainsi que du polymorphisme. Il a aussi un système de macro qui semble puissant. Mais l'un de ses grandes "forces" reste sa gestion de la mémoire et des "pointeurs". ( en savoir plus : http://www.rust-lang.org/ ).
×
×
  • Créer...