Créations

Page d'Acceuil

Alpha

À Propos de

À Savoir

Contact

Cool

Création

Liens

Vous

Outil de traduction
                  gratuite de site Internet
by FreeWebsiteTranslation.com


Bienvenue chez Blady.

Voici réunis ici, les projets en cours et les nouveautés du mois.

Ce mois ci découvrons :

Et toujours :

Tous les fichiers (tgz) peuvent être décompactés sous :


  1. Compilateur d'automate (novembre 2023) :
    Voici un projet qui n'est plus tout jeune. Cependant, il a fait l'objet d'une publication dans le regretté magazine Pascalissime (numéros 62 et suivants). Le concept proposé est de modéliser un automate bien réel ou purement informatique en une suite d'instructions simples le décrivant sous tous ses aspects et de transformer cette description en un programme activant l'automate. Le programme tourne avec Think Pascal 4.0.
    Texte de l'article (PDF).
    Sources du programme (1.0a - Pascal).
    Sources d'un exemple d'automate (Pascal).
    Reprise du projet en langage Ada pour le présenter au concours organisé par Ada France où il finit troisième au classement en 2001.
    Il présente toujours une abstraction des automates à états finis par un script formé de quelques mots clés. Ces scripts sont alors convertis en packages Ada avec un moteur événementiel pour être utilisés au sein d'un logiciel en faisant l'usage. (Version 2.0a)
    Légère modification en début 2002 pour le support des caractères accentués. Il passe la compilation avec GNAT sous Mac OS X. (Version 2.1a)
    Ajout de la prise en compte des commentaires d'une seule ligne commençant par --, les unités externes ne sont plus mises dans l'unité spécification générée, le mode Debug affiche les éléments chaînés par un +, le status de terminaison du programme est rendu à l'OS, quelques fonctions utilitaires sont réécrites avec la nouvelle bibliothèque Ada 2005. Coloration de la syntaxe propre à l'automate avec l'utilitaire SubEthaEdit. (Version 2.2a)
    Sources, texte explicatif et exemple (2.2a - Ada 2005 - 284 Ko - texte accentué en UTF-8).
    Ajout d'une section debug activée à chaque lecture d'un événement, du mode de syntaxe pour BBEdit, du passage à UXStrings. (Version 3.3.0 - Ada 2012) Source sur Github et Alire.
    Retour en haut de la page

  2. Portage de gpc sur Mac OS X (février 2003) :
    1. Mise à jour du projet de portage du compilateur Pascal gpc sur Mac OS X 10.0 (la public beta a cessé de fonctionner). Gpc s'appuie sur gcc. Notamment, gpc 2.0 s'appuie sur cc 2.7.2.1
      Dans un premier temps suivons les instructions pour compiler cc avec le package de fichiers à remplacer : modifs_gcc.
      Dans un second temps suivons les instructions pour compiler gpc avec le package de fichiers à remplacer : modifs_gpc (307 Ko).
      Son exécution reste sujette à un problème de compilation. Regardons les résultats.
    2. Lancement du portage des dernières versions de gpc - 2.1 en version beta et alpha - sur gcc 2.95.2. Ce portage s'avère provoquer quelques dysfonctionnements que je vous soumets. J'ai envoyé le texte au site GNU en Allemagne. Je n'ai pas de réponse pour le moment. Ceux d'entre vous ayant des idées sur le sujet sont les bienvenus.
    3. Adaptation du portage à la version finale de Mac OS X (10.0), c'est à dire sur Darwin 1.3 et les sources de gcc (926-3) correspondant à gcc 2.95.2. Cette version parait plus "propre". La difficulté revient à intégrer les modifications réalisées par Apple pour son gcc dans gpc. C'est à dire manipuler quatre fichiers en même temps :
      • celui de gcc 2.95.2,
      • celui de gcc 926-3,
      • celui de gpc 2.1,
      • celui de gpc résultant.
      Cela concerne une dizaine de fichiers de plusieurs dizaines de milliers de lignes de C avec des dizaines de modifications pas toujours bien identifiées. Je suis actuellement sur le dixième...
    4. GPC compile avec GCC sur Mac OS X ! Dans un premier temps suivons les instructions pour compiler gpc avec le package de fichiers à remplacer : modifs_gpc (462 Ko).
      Pourtant, son exécution reste sujette à un problème de compilation. Regardons les résultats.
    5. Changeons de stratégie. La première consistait à suivre celle indiquée par GPC. La seconde consiste à suivre celle utilisée pour g77 le compilateur fortran. Cette dernière démarche nous est donnée par Keisuke Fujii pour g77 (merci à l'indication de Michael L. Love sur GNU-Darwin). Dans un premier temps suivons les instructions pour compiler gpc avec le package de fichiers à remplacer : modifs_gpc.
      Pourtant, son exécution reste sujette à un problème de compilation. Regardons les résultats.
    6. Le préprocesseur (gpcpp) est lui aussi modifié pour prendre en compte les macros spécifiques du Pascal Mac.
      Version modifiée : GNU Pascal Compiler PreProcessor version 20011202, based on gcc-2.95.2 19991024 (release)
      Je l'emploi avec la commande suivante :
      gpcpp -ki -C -P -DTARGET_API_MAC_CARBON -DMWERKS=200
      -DPOWERPC=TRUE -DMAC68K=FALSE -DPROCTYPE=TRUE -lang-pascal toto.p
      Option -ki : n'expense pas les "includes", mais les traite,
      Option -C : garde les commentaires,
      Option -P : ne génère pas les commandes "#line",
      Option -D... : définit une macro.
    7. Utilisons le portage de gpc-osx proposé par Adriaan van Os. Le site de gpc-osx fourni un package pour Mac OS X 10.2, 10.3 et 10.4 (PPC et Intel) avec les bibliothèques Carbon.
      Pour ceux qui sont restés sur Mac OS X 10.1, suivons les instructions pour compiler gpc.

    Retour en haut de la page


  3. Arbres binaires (décembre 2012)
    1. La structure d'arbre binaire exposée ci-dessous a été utilisée pour le compilateur d'automate, décrit plus haut.
      À ce qui a déjà été dit dans l'article consacré au compilateur d'automate, j'apporte ici un complément sur l'utilisation de l'arbre binaire pour mémoriser les identificateurs du langage et son optimisation.
      Texte de l'article. Source du module (1.0a - Pascal). Exemple (Pascal).
    2. Utilisation d'Ada pour généraliser le concept d'arbres binaires sur des types de données quelconques sans les contraintes imposées par le Pascal.
      Source du module initial (2.0b - Ada - texte accentué en UTF-8)
      Cette première idée consistait naturellement à construire un arbre équilibré au fur à mesure des ajouts d'éléments supplémentaires. Mais à l'époque le temps manquait, sans accès à Internet... Je me suis rabattu sur une solution béton mais brutale : l'arbre binaire est réalisé par construction dichotomique. J'ai donc codé une procédure "Balance" qui reconstruit la dichotomie comme cela est expliqué précédemment.
    3. Récemment,je suis tombé coup sur coup sur un livre traitant des arbres binaires "Arbres, Tables et Algorithmes" (J. Guyot - Ch. Vial - 1989) et sur une impressionnante liste de sites sur Internet (ceci même en ne retenant que les sites de langues françaises). Les auteurs du livres expliquent la construction d'un arbre binaire AVL pour G.M. Andelson-Velskii, E.M. Landis (1962). Cette construction reprenait mon désir premier de construire un arbre équilibré à chaque ajout d'éléments. Pour cela l'astuce est d'ajouter à chaque noeud un attribut qui indique si les sous-arbres de chaque noeud penche plutôt à gauche, à droite ou sont en équilibres. L'action résultante consiste à rééquilibrer l'arbre chaque fois que l'écart de chaque sous arbre est supérieur d'un niveau.
      Source du module AVL (1.0a - Ada - texte accentué en UTF-8)
    4. Généralisation de la bibliothèque Arbres Binaires avec de nombreuses fonctions utilitaires donnant la hauteur, le minimum, le successeur, etc.
      (Source - Ada 95 - V1.0a - texte accentué en UTF-8, résultats)
    Retour en haut de la page

  4. Application en Java avec Project Builder : Crypt (novembre 2001) La première étape consiste à suivre l'exemple donné en Java dans l'aide de Project Builder. Pour ce faire, lancer Project Builder, sélectionner dans le menu Help, l'élément Developper Center. Une fois l'aide lancée, sélectionner Cocoa puis Java tutorial (PDF). Suivre ensuite les explications données pour bâtir sa première application Java avec mac OS X.
    La deuxième étape consiste à obtenir de l'aide sur l'API Java de Cocoa, sélectionner Aide Mac dans le menu d'aide du Finder, puis cliquer sur le point d'interrogation en bas à gauche faisant apparaître le centre d'aide puis cliquez sur Aide Développeurs. Cliquer sur Cocoa puis sur Application Kit, le document afficher est : PATH Documentation > Cocoa > Application Kit API Reference: Java. Vous avez alors tout loisir de découvrir l'API Java de Cocoa. Avec en particulier les objets NSView, NSResponder. L'application JavaBrowser permet de faire la même navigation dans les classes Java.
    La troisième étape consiste à réaliser une petite application qui va crypter une phrase.
    Texte des explications.
    La fenêtre d'affichage des informations de l'application "A propos" ou "About" se personnalise en modifiant le fichier "InfoPlist.strings" et en éditant "Active Target / Application Settings" dans le menu "Project" de PB.
    Source de Crypt (Java)
    Retour en haut de la page

  5. Calcul d'un thème astral (V2.0b - janvier 2002)
    Pour mettre en pratique nos connaissances récentes sur Cocoa et Java, Astro est une petite application qui calcule des thèmes astraux en version 2.0 alpha.
    Le fichier astro.java contient le code de gestion de l'interface utilisateur. Le fichier astrologie.java contient le code de calcul du thème astral - ce code provient d'un programme en basic d'où sa structure... Cet exemple illustre un moyen de transférer des informations entre deux objets Java ayant des rôles très différents.
    Le transfert des informations en entrée de l'objet du calcul se réalise classiquement via le constructeur de l'objet. Dans notre cas, nous avons codifié et regroupé les informations des divers objets graphiques en une chaîne de caractères représentant plusieurs champs séparés par des virgules.
    En sortie les informations de l'objet de calcul sont récupérées par des fonctions spécifiques.
    Source et application Astro (Java).
    Retour en haut de la page

  6. Bibliothèque mathématique et algorithmique (avril 2013)
    1. Arbres binaires, voir ci-dessus § d).
    2. Calculs avec des listes d'éléments génériques construites à partir du container Doubly_Linked_Lists francisé pour certaines opérations, transformé par des fonctions pour d'autres et augmenté des opérations création à partir d'un tableau, application d'une fonction de transformation des éléments, partage en sous-liste, pour un emploi plus naturel comme avec le langage Caml.
      (Sources - Ada 2005 - V1.0a)
    3. Calculs avec des matrices de réels : opérations usuelles +, -, *, puissance, trace, transposée, déterminant, inverse, ..., utilisation d'unité générique et du container Vectors.
      (Sources - Ada 2005 - V1.1c, résultats)
    4. Codage en Ada des exemples et exercices du livre "Programmation Avancée, Algorithmique et structures de données" de J.C. Boussard et Robert Mahl (Eyrolles 1984) : PGCD, SWAP, BubbleSort, BigFact,Power Xn, N_Uplets, Permutations, Jeu du Plus Grand Diviseur Premier, Jeu Crypto-Arithmétique, Optimisation du remplissage d'un sac à dos avec quatre procédures de parcours générique d'un arbre (standard, partiel, min-max, alpha-beta) utilisant des fonctions spécifiques à l'arbre en paramètres, calcul de factorielle n et du nombre de combinaison de n objets pris p à p, coloriage planaire, palindromes.
      (Sources chapitres 1 à 4 - Ada 2005 - V1.7a, résultats)
      ... suites contiguës bouclée, tris d'une suite par interclassement, par segmentation, selon une base "radix sort", simulation de files d'attentes, tables de hachage, intersection et union de deux ensembles par adressage dispersé, dérivation formelle, transformation en expression postfixée, évaluation d'une expression postfixée, tri arborescent, graphes à représentation linéaire fonctionnelle, associative contiguë et non contiguë, matricielle, par plexes, par adressage dispersé, chemin de longueur donnée.
      (Sources chapitre 5 à 8 - Ada 2005 - V1.17a, résultats).
    5. Et toujours, les grands nombres sont à l'honneur avec la classe Java BigIntCombinatoire (V1.0a - Java).
      Essayez donc le calcul de factorielle 1000 !
    6. Calculs avec des nombres complexes en Java avec la classe Complexe (V1.0a - Java).
    7. Et aussi, Attribution simple (Pascal et Ada), Attribution croisée (Pascal et Ada) et Remplissage optimisé (Pascal).

      Sources des programmes en Ada sur Github.
    Retour en haut de la page

  7. Outils Ada GNAT pour macOS (mai 2023)
    Le projet GNAT ou "GNU NYU Ada ToolChain" a démarré à l'université de New York pour développer un compilateur Ada 95 GNU.
    GNAT a été validé sur plusieurs plates-formes et il est maintenu officiellement par AdaCore.
    GNAT est gratuit dans sa version GPL, conforme à Ada 2012 (manuel du langage) et intégré au compilateur libre GCC de la FSF avec sa documentation.
    GNAT pour Mac OS X / Darwin est disponible pour MacOS 10.1 à 12.
    Une liste de diffusion existe sur gnat-osx.

    1. Installation de GNAT : Voici les instructions de mise en place et l'utilisation du compilateur GNAT avec le Terminal, pour :
      • MacOS 10.1 : gcc 3-1041 de gnat-osx (août 2003),
      • MacOS 10.2 : gcc 3.1-1173 de gnat-osx (août 2003),
      • MacOS 10.3 : gcc 3.3-1495 de gnat-osx (septembre 2004),
      • MacOS 10.4 : gcc 3.3-1650 de gnat-osx (mai 2005), gcc 4.3 de gnat-fsf (février 2008) et gcc 4.3 de gnat-gpl avec asis et les utilitaires associés (mai 2009). Le compilateur GNAT GPL 2009 (juillet 2009) déjà prêt à l'emploi est disponible pour Mac OS X PPC sur Source Forge,
      • MacOS 10.5 à 10.7 : gcc 4.5 de GNAT GPL 2012 (juin 2012).
      • MacOS 10.8 : gcc 4.7 de GNAT GPL 2013 (juin 2013) et gcc 4.8 de GNAT-FSF (avril 2013)
      • MacOS 10.9 : gcc 4.9.3 de GNAT GPL 2015 (juin 2015) et gcc 4.8 de GNAT-FSF (avril 2013)
      • MacOS 10.11 : gcc 4.9.4 de GNAT GPL 2016 (juin 2016) avec les correctifs gnatdoc / GPS et gcc 5.2 de GNAT-FSF (novembre 2015)
      • macOS 10.11.6 : gcc 6.3.1 de GNAT GPL 2017 (juin 2017)
      • macOS 10.13 : gcc 7.3.1 de GNAT Community 2018 (juin 2018)
      • macOS 10.13.6 : gcc 8.3.1 de GNAT Community 2019 (mai 2019)
      • macOS 10.15 - GNAT 2019 : gcc 8.3.1 de GNAT Community 2019 et gcc 9.1.0 de GNAT-FSF (février 2020)
      • macOS 10.15 - GNAT 2020 : gcc 8.4.1 de GNAT Community 2020 et gcc 9.1.0 de GNAT-FSF (octobre 2020)
      • macOS 11 - GNAT 2021 : gcc 10.3.1 de GNAT Commnunity 2021 (juillet 2021)
      • macOS 12 - GNAT FSF 11 : gcc 11.2 sur FSF (février 2022)
      • macOS 12 - GNAT FSF 12 : gcc 12.1 sur FSF (mai 2022), gcc 12.2 sur FSF (septembre 2022)
      • macOS 13 - GNAT FSF 13 : gcc 13.1 sur FSF (mai 2023)
      Voir l'utilisation avancée.
    2. Intégration avec XCode et Carbon : En prime, l'utilisation d'Ada est possible avec XCode, le Terminal, l'API Carbon Ada (299 Ko) et l'ensemble des compilateurs GNAT par paramétrage des projets XCode ou du Terminal. Voir en complément page Alpha l'intégration dans XCode d'Ada et des dernières versions de GNAT avec icône Ada personalisée.
      Ce mois-ci regardons dans le détail l'interface de programmation du module de dessin QuickDraw : le système de coordonnées, les rectangles, les régions, les polygones, la couleur, le crayon, les figures, les motifs, le texte, l'espace graphique.
      N'est plus valable avec Mac OS X supérieur à 10.5.
    3. Outils de développement : Différents outils et scripts sont disponibles en complément du compilateur proprement dit :
      • P2Ada : le traducteur Pascal en Ada (P2Ada) avec son utilisation sur des exemples,
      • C2Ada : le traducteur C en Ada C2Ada avec quelques modifications en page Alpha et son utilisation sur des exemples,
      • Reformat : outil de formatage des textes sources Reformat,
      • jGRASP : l'environnement de programmation jGRASP,
      • LookUp : Deux outils nous aident à la recherche de la bonne routine : Lookup pour Carbon Ada et XDoc pour Carbon C.
      • GNATStudio : environnement de programmation intégré (IDE) dédié au langage Ada. Il permet d'effectuer toutes les activités classique du développement d'un logiciel : le codage dans un éditeur dédié à Ada, l'intégration de bibliothèques en Ada, C ou C++, le test, le déverminage ou l'analyse de code.
        - GPS GPL 2009 (août 2009) déjà prêt à l'emploi avec les compilateurs GNAT et JVM-GNAT est disponible pour Mac OS X PPC sur Source Forge. Voir son installation et sa construction en français et en anglais sur Mac OS 10.4 PPC.
        - GPS GPL 2019 (mai 2019) déjà prêt à l'emploi disponible pour Mac OS X Intel par AdaCore. Voir son utilisation.
        - GNATStudio 23.0wb (novembre 2022) déjà prêt à l'emploi est disponible pour macOS 12 Intel sur Source Forge. Voir son installation et sa construction.
      • AdaStudio : Visual Ada Developer (VAD) est un logiciel libre pour construire des interfaces utilisateurs graphiques en Ada, voir son utilisation.
    4. Tutoriaux : Vous trouverez aussi en page à savoir :
      • GDB : l'utilisation du dévermineur GDB 7.4,
      • POSIX : l'installation de la bibliothèque Posix GPL 2012 pour Ada,
      • Exception : l'utilisation des extensions GNAT avec les exceptions Ada,
      • Accents : l'affichage des caractères accentués,
      • Multi-tâche : un exemple d'utilisation du multi-tâche.
    5. JVM-GNAT GPL 2013 par AdaCore (mai 2013) est l'environnement de développement Ada 2005 pour la plate-forme Java. À partir d'un code source en Ada, il génère un ByteCode compatible de l'environnement d'exécution Java 1.5 comme par exemple les applets. Voir son installation sur Mac OS X, les exemples JGNAT 1.3p (344 Ko), l'exemple en ligne Connect Four (GPL 2009) et le status complet de compilation des exemples.
      Les compilateurs JVM-GNAT GPL 2009 (juillet 2009) et GPL 2013 (mars 2018) déjà prêts à l'emploi sont disponibles pour respectivement Mac OS X PPC et MAC OS X Intel sur Source Forge.
    Retour en haut de la page

  8. Bibliothèque Turbo Pascal en Ada (V3.4a pour GTKAda et V10.2a pour Gnoga - juillet 2021) Les API CarbonAda facilitaient la programmation en Ada sur Mac, et aussi facilitaient la migration d'une application Pascal en Ada. GTKAda prend la relève avec avantage d'être multi-plateforme. Pour ceux qui souhaitent migrer des programmes depuis le Turbo Pascal, je fournis, en version préliminaire, une bibliothèque des unités de Turbo Pascal en langage Ada. Il s'agit d'une toute première version des unités basées sur GTKAda. Dans la bibliothèque vous trouverez plusieurs exemples de test.
    Source de la bibliothèque (V3.4a - Ada 2005, GTKAda CE 2021, XNAdaLib-CE-2021).
    Une version basée sur Gnoga orientée Web est disponible :
    Source de la bibliothèque et manuel de référence (V10.2a - Ada 2005, Gnoga V1.2a, XNAdaLib-2016)

    Exemples de test (GTKAda) :
    Terminal TP7 Ada
    Exemple de tracés de courbes (GTKAda) :
    Curves TP7 Ada
    Exemple de tracés de caractères graphiques (GTKAda) :
    Fonts TP7 Ada
    Plus d'exemples d'utilisation de TP7Ada avec GTKAda.

      Exemple complet (Gnoga) :
    Gnoga TP7 Ada

    Historique :
    - 10.2a : Adaptation à Gnoga 1.2a et XNAdaLib-2016
    - 10.1a : Ajout des traductions des exemples Courbes, Sudoku et Surfaces avec Zanyblue
    - 10.0a : première version basée sur la version 1.1a de Gnoga
    - 3.4a : Adaptation à GTKAda CE 2021 et XNAdaLib-CE-2021
    - 3.3a : Adaptation à GTKAda GPL 2016 et XNAdaLib-2016
    - 3.2a : Adaptation à GTKAda GPL 2015 et XNAdaLib-2015
    - 3.1a : adaptation à la version 3.8 de GTKAda
    - 3.0a : adaptation à la version 3.4 de GTKAda
    - 2.7a : ajout des polices de caractères vectorielles CHR
    - 2.6a : mise en oeuvre de l'unité TP7.Mouse
    - 2.5a : mise en oeuvre de l'unité TP7.CRT
    - 2.4a : mise en oeuvre de l'unité TP7.DOS
    - 2.3a : mise en oeuvre de l'unité TP7.Graph
    - 2.2a : intégration de la saisie à la fenêtre texte
    - 2.1a : mise en oeuvre de l'unité TP7.System
    - 2.0a : deuxième version basée sur GTKAda
    - 1.0a : première version basée sur CarbonAda
    Retour en haut de la page

  9. Bibliothèque Think Pascal en Ada (V1.0f - octobre 2005) Les API Carbon facilitent la programmation en Ada, et aussi facilitent la migration d'une application Pascal en Ada. Pour ceux qui souhaitent migrer des programmes depuis le Think Pascal, je fournis, en version préliminaire, une bibliothèque des unités de Think Pascal en Ada. Il s'agit d'une toute première version des unités basées sur Carbon. Les unités ont été recréées à partir de la documentation mais ne sont pas encore totalement fonctionnelles. Elles ne contiennent que la partie spécification pour certaines. Les corps complets des unités sont disponibles.
    Source de la bibliothèque (Ada)
    Historique :
    - 1.0f : ajout de quelques corrections pour la compatibilité avec
    la dernière version de XCode.
    - 1.0e : ajout d'une procédure avertissant lorsqu'une fonction n'est plus supportée, ajout d'une procédure émulant "SystemTask".
    - 1.0d : ajout du code de la gestion des fenêtres et complément du code de la gestion des routines de l'unité 'system'.
    - 1.0c : ajout du code de la gestion des chaînes de caractères et du code de la gestion des routines de l'unité 'system'.
    - 1.0b : modification de la gestion de fichier (spécification et code) avec une unité de base pour la sélection des fichiers avec le Finder et deux unités filles pour la gestion des fichiers textes et des fichiers typés.
    - 1.0a : première version des parties spécifications des unités émulant Think Pascal.
    Retour en haut de la page

  10. Automate d'écriture interactive (octobre 2003) Imaginez une histoire dont vous êtes le héros. Ce nouveau genre littéraire, assez peu répandu, il est vrai, se présente sous forme de petites scènes avec un choix laissé au lecteur qui permet de se diriger vers une autre scène. L'histoire n'est pas linéaire. D'un autre côté, l'ordinateur "multimédia" nous propose des possibilités immenses qui sont malheureusement souvent sous exploitées car trop linéaires. Le mariage des deux peut nous apporter une réelle nouveauté. Définissons le cahier des charges et donnons un exemple de page avec une syntaxe de description de script de notre récit interactif multimédia.
    Appel à contribution : Je concentre ce travail principalement sur l'automate et non sur le texte lui-même, alors que le texte est le résultat principal de ce projet. Si un de vous ou une de vos connaissances permet que j'expérimente l'automate sur un de ses textes (un texte court, même pour jeunes, fera très bien l'affaire), il en sera grandement remercié.
    Retour en haut de la page

  11. Construire une base de donnée pour bibliothèque (1.7a - août 2005)
    S'il y a bien un emploi typique pour un ordinateur, c'est celui de gérer une base de données. La première d'entre elles est bien sûr la base des fichiers de l'ordinateur. Nous allons donc mettre à profit cette faculté pour construire une base de données d'une bibliothèque bien réelle, celle des livres que nous possédons. Nous allons aussi utiliser les composants disponibles pour Mac OS X mais qui le sont aussi sur d'autres plateformes (Win, Linux...). Définissons le cahier des charges de notre bibliothèque (450 Ko), la composition et la création des tables de données avec MySQL, la programmation avec Java, l'interface utilisateur, l'import depuis un fichier et depuis Internet, la recherche d'une oeuvre.
    Sources de la bibliothèque (36 Ko - Java - texte accentué en UTF-8).
    Historique :
    - 1.7a : Création de la table des textes "textes".
    Ajout des champs biographie et commentaire à la table des auteurs
    Modification écran saisie et info auteur
    Ajout des champs résumé et commentaire à la table des oeuvres
    Modification écran saisie et info oeuvre
    Correction saisie enumérés
    - 1.6a :
    Création de la table des énumérés "enums".
    Création de l'écran saisie des énumérés.
    Clarification des champs "Nature" et "Genre".
    Affichage des ISBN et lignes non créés lors des imports CSV et Internet.
    Ajout du champ genre dans les oeuvres.
    Le champ nature est remplacé par genre dans l'import CSV.
    - 1.5a :
    Limitation du nombre de lignes affichées par pages (navigation avec prem, pred, suiv et der).
    Ajout d'une fonction de récupération d'une valeur d'une liste chaînée sous forme d'un entier.
    Affichage des possessions sous forme de nombre dans les listes d'oeuvres.
    Changement "group by" en "distinct".
    Correction cvs en csv, voilà où mène la dyslexie !!!
    - 1.4a :
    Filtrage des informations de debug si le propriétaire n'a pas l'autorisation.
    Correction liste des oeuvres d'un propriétaire (suppression colonne emplacement).
    Ajout de la recherche sur les possessions (acquisition, emprunt, prêt, lecture).
    Affichage de l'auteur "nom, prénom" dans info oeuvre.
    Correction de l'import HTML avec conversion des NCR (utilisation de la classe NCRDecoder), nb pages, séries dans les titres.
    Correction recherche série.
    Ajout des statistiques dans info Éditeur, Auteur, Collection, Propriétaire.
    - 1.3c :
    Évolution des possessions avec des champs communs pour l'acquisition,
    l'emprunt, le prêt, la lecture.
    Évolution des propriétaires avec un champ autorisation d'affichage de débug.
    Évolution des possessions avec la création d'une fiche par possession.
    Affichage auteur nom et prénom dans les sélections.
    Simplification et correction des requêtes SQL sur les compteurs.
    Évolution des possessions avec la création d'une fiche par possession.
    Ajout de la gestion des prêts.
    - 1.2a :
    Ajout de la fonction supprime Éditeur, Auteur, Collection.
    Ajout de l'écran remplace / supprime Éditeur, Auteur, Collection
    et nettoie Groupe Auteur.
    Prise en compte dans une recherche d'une oeuvre possédée.
    Structure BD V5, ajout champ série et modification longueur titre à 80.
    Ajout du champ série dans info et saisie oeuvre, import CSV et Internet.
    Ajout de la fonction de liste chaînée copyTo.
    Correction de l'affichage des oeuvres avec des éléments inconnus.
    - 1.1b :
    Titre des pages HTML plus explicite.
    Le lien accueil s'affiche toujours même après une exception.
    Amélioration du fonctionnement de l'importation Internet.
    Reformatage du code Java.
    Ajout de l'écran recherche_oeuvres avec opérateurs logiques entre rubriques.
    Affichage des listes en colonnes formatées.
    - 1.0d :
    Correction de la prise en compte ISO-8859-1 dans l'import Internet.
    Enregistrement et lecture sur disque des pages HTML en ISO-8859-1.
    Ajout sauvegarde, restauration, vidage de la liste sauvegardée des ISBN
    Ajout des écrans d'identification et d'inscription du possesseur au lancement de l'application.
    Ajout d'une fonction de saisie des possessions et lectures pour une oeuvre.
    Ajout de l'importation d'une oeuvre avec Internet.
    Ajout d'un écran de description de l'application.
    Ajout des sources Java de gestion de la base de données avec import d'un fichier.
    Ajout des champs nécessaires à l'importation dans la structure de la base de données.
    Modification de la structure des tables : l'index d'un auteur dans son groupe est directement le numéro de l'oeuvre et non plus un nom interne. Ajout des sources Java de gestion de l'interface utilisateur.
    - 0.0a :
    Création des tables. Accès à la base bibliothèque avec JDBC.
    Retour en haut de la page

  12. Unité Ada.Text_IO multi-format (2.0a - novembre 2005)
    Par défaut, Ada lit les caractères et les interprète avec le codage Latin1. L'objet de cet article est d'ajouter l'interprétation en Ada des codages de caractères Mac Roman par les routines de l'unité Text_IO. Le paramètre "FORM" sert à cela pour peu d'avoir modifié quelques codes sources de l'unité "Text_IO". Les modifications proposées ajoute les codages Mac Roman avec la traduction en Latin1 pour les routines d'entrées et de sorties de l'unité Text_IO. Le paramètre FORM peut ainsi prendre deux nouveaux attributs. Le premier pour le codage des caractères : "cem" pour "Character Encoding Method" peut valoir "1" pour Latin1 ou "m" pour Mac Roman. Le second pour le codage des fin de lignes : "lem" pour "Line Ending Mark" peut valoir "u" pour Unix ou "m" pour Mac.
    Utilisation : "Open(Fin, In_File, "journal.txt", "cem=m, lem=m");"
    Voir le programme source donné en exemple : "write_mac_roman.adb".
    $ gnatmake -a -gnatf write_mac_roman.adb
    $ ./write_mac_roman
    De même Wide_Text_IO est modifié pour accepter le codage des caractères Mac Roman avec "wcem=m" et le codage des fins de ligne Mac avec "wlem=m".
    Utilisation : "Open(Fin, In_File, "journal.txt", "wcem=m, wlem=m");"
    Voir le programme source donné en exemple : "wide_write_mac_roman.adb".
    $ gnatmake -a -gnatf wide_write_mac_roman.adb
    $ ./wide_write_mac_roman
    Le texte résultant est enregistré dans le fichier journal-mac-ada.txt.
    Merci de me signaler si ces modifications sont dans "l'esprit" de gnat.
    Ne pas hésiter à me faire toutes remarques.
    Sources modifiés de Gnat (60 Ko - Ada).
    Historique : - 2.0a :
    . Mise en conformité avec GNAT PPC-Darwin 2005.
    (Modification : a-textio.adb, a-textio.ads, a-tigeau.adb, a-witeio.adb, a-witeio.ads, a-wtenau.adb, a-wtgeau.adb, s-wchcnv.adb, s-wchcon.ads, s-wchstw.adb.
    Ajout : s-schcnv.adb, s-schcnv.ads, s-schcon.ads.)
    - 1.1a :
    . s-schcon.ads : correction commentaires sans "wide"
    . s-schcnv.adb : ajout "constant" sur une variable locale, correction nom d'une variable
    . wide_write_mac_roman.adb : exemple d'utilisation de Wide_Text_IO avec Mac Roman
    . s-wchcon.ads : gestion des caractères Mac Roman
    . s-wchcnv.adb : gestion des caractères Mac Roman
    . a-witeio.ads : ajout du support des fins de ligne Mac
    . a-witeio.adb : ajout du support des fins de ligne Mac
    . a-wtgeau.adb : ajout du support des fins de ligne Mac
    . a-wtenau.adb : ajout du support des fins de ligne Mac
    . read-me.txt : explication d'utilisation des fichiers en anglais
    - 1.0a :
    . s-schcon.ads : gestion des caractères Mac Roman
    . s-schcnv.ads : gestion des caractères Mac Roman
    . s-schcnv.adb : gestion des caractères Mac Roman
    . a-textio.ads : ajout de la gestion des options CEM et LEM dans le paramètre FORM
    . a-textio.adb : ajout de la gestion des options CEM et LEM dans le paramètre FORM
    . a-tigeau.adb : ajout du support des fins de ligne Mac
    . write_mac_roman.adb : exemple d'utilisation de Text_IO avec Mac Roman
    Retour en haut de la page

  13. Les entités HTML (V1.0a - mars 2005) Les entités HTML facilitent la diffusion de textes en HTML avec des caractères accentués. Ceux-ci sont codés soit avec leur position numérique dans le code ISO 10646 (Numeric Character Reference) soit par un nom symbolique. Pour moi la dernière option est la plus lisible. Par exemple, å représente le a nordique avec un rond au-dessus, bien plus facile à ce rappeller que å. La classe NCRDecoder que nous propose Patrick Hargitt (merci à lui pour la diffusion sous la licence GPL) permet de traduire une chaine de caractère HTML en une chaine Java.
    Source de la classe (Java).
    Retour en haut de la page

  14. Traducteur Java en Ada (V1.4b - avril 2010) J2Ada traduit un code source Java valide en code source Ada.
    Dans cette première version, une grande partie de la syntaxe générale du langage Java est traduite. Ces essais (version 1.4b) sont vraiment très préliminaires, les parties spécification et corps de l'unité Ada générée sont valides avec quelques modifications manuelles, voir la page Alpha.
    Retour en haut de la page

  15. Générateur de mots de passe (octobre 2009) Un mot de passe doit répondre à des critères strict pour être suffisamment efficace en cas d'attaque. C'est à dire, contenir des chiffres, des majuscules, des signes, avoir au moins 8 caractères, être différents les uns des autres sont autant de critères communément acceptés pour définir un mot de passe efficace mais contraignant lorsqu'il faut sortir un mot de passe de suite pour une inscription en ligne.
    La solution est de s'en remettre à un logiciel libre. Ces derniers ont l'énorme avantage de publier leur code source et donc par la même de faire la preuve de leur innocuité. Malheureusement, ils sont seulement disponibles en ligne de commande avec le Terminal.
    Qu'à cela ne tienne, nous allons construire un générateur de mots de passe (230 Ko) et profiter de nos acquis avec XCode et AppleScript pour lui construire une interface Mac.
    Retour en haut de la page

  16. Traduction en Ada des exemples des guides Linux Magazine (V3.0a - octobre 2014)
    Les programmes suivants sont la traduction en Ada des exemples du guide Linux Magazine HS 70 avec une approche de GTKAda et GNATColl.Python :
    1. bits.adb : test de parité et puissance de 2 rapide
    2. hello1.adb : premier programme GTKAda
    3. hello2.adb : programme GTKAda avec plus d'événements
    4. hello3.adb : programme GTKAda avec plus d'objets graphiques
    5. hello4.adb : programme GTKAda avec Glade et GTKBuilder
    6. hello5.adb : programme GTKAda avec traduction
    7. multi.adb:  programme GTKAda, Glade, GTKBuilder et internationalisation
    8. call.adb : programme Ada avec GNATColl.Python
    Ajout de la traduction en Ada de l'exemple du jeu de labyrinthe du guide Linux Magazine HS 71 avec une approche de AdaCurses : game.adb.
    Source des exemples (Ada 2012 - V3.0a)
    Retour en haut de la page

  17. Sortie textuelle en Ada formatée à la printf (V1.0a - octobre 2014)
    La bibliothèque Formatted_Output utilise la possibilité d'exécuter des scripts Python à partir d'Ada pour offrir un équivalent du printf. Ainsi, les options de formatage sont celles proposées en Python. L'écriture est assez naturelle :
    Printf (Fmt("Somme %d + %d = %d") & x & y & x+y);
    (Idée reprise de Tucker Taft sur comp.land.ada)
    Source de la bibliothèque (Ada 2012 - V1.0a)
    Retour en haut de la page

  18. XNAdalib (novembre 2022)
    La bibliothèque XNAdaLib 2022 est l'agrégat de plusieurs bibliothèques en Ada pré-compilées pour macOS 12. Elle contient principalement :
      - GTKAda 22.2 avec GTK+ 3.24.33 Quartz natif,
      - Glade 3.40.0,
      - Florist mi-2022a,
      - AdaCurses 6.3 (patch 20221105),
      - Gate 3 0.5d,
      - Simple Components 4.64,
      - AICWL 3.25,
      - Zanyblue 1.4.0,
      - PragmARC mi-2022,
      - UXStrings 0.4.0,
      - GNOGA 2.2 mi-2022,
      - AdaControl 1.21r3,
      - AdaDep 1.4r1,
      - AdaSubst 1.6r5,
      - SparForte 2.5,
      - HAC 0.21
    et aussi :
      - Template Parser 22.2,
      - gtksourceview 4.8.1,
      - GNUTLS 3.7.7,
      - ASIS GPL 2019,
      - GMP 6.2.1,
      - make 4.3.
    Les développeurs de GTK-OSX ont incorporé l'interface native du Mac utilisant le moteur graphique Quartz. Un programme avec GTKAda peut donc être conçu pour tourner sur Mac sans activer le sous-système X11.
    Voir son installation et sa construction pour macOS 12. Elle est déjà prête à l'emploi sur Source Forge.

  19. UXStrings: chaînes dynamiques de caractères Unicode en Ada (V0.6.0 - octobre 2023)
    La bibliothèque UXStrings démarrée dans le projet Gnoga est maintenant autonome sur Github et sur Alire. L'objectif de cette bibliothèque est de proposer en Ada un concept de chaînes de caractères de taille dynamique et avec des caractères Unicode. Les API sont inspirées de Ada.Strings.Unbounded afin de minimiser le travail de reprise de codes Ada existants.
    Une première implémentation est proposée comme démonstration du concept. L'encodage UTF-8 a été retenu comme représentation interne des caractères Unicode. Cette implémentation a plusieurs limitations comme le manque de récupération de la mémoire utilisée. Seulement quelques API ont été implémentées. Néanmoins, un programme de test est présent avec quelques fonctionnalités qui tournent. Voir le readme pour des explications plus complètes.
    Une deuxième implémentation UXStrings2 utilise la propriété des caractères ASCII inclus dans le codage UTF-8 pour indexer directement les caractères sans itérer sur le codage UTF-8 si toute la chaîne est entièrement en ASCII. C'est dans ce cas précis un gain de temps. Par contre si le contenu change il faut vérifier la conservation de cette propriété. Cela entraîne une perte de temps. Les contenus de langue anglaise sont composés en majorité de lignes sans caractères accentués donc entièrement en ASCII mais peuvent présenter certaines lignes avec des caractères accentués, UXStrings2 prend en compte automatiquement les deux.
    Une troisième implémentation UXStrings3 utilise le stockage des caractères Unicode dans des Ada.Strings.Wide_Wide_Unbounded.
    Ajout de plusieurs sous-programmes utiles : Contains, Ends_With, Starts_With, Is_Lower, Is_Upper, Is_Basic, Is_Empty, Remove, Replace.
    Ajout des listes de chaines de caractères avec les sous-programmes : Append_Unique, Filter, Join, Remove_Duplicates, Replace, Slice, Sort, Is_Sorted, Merge et Split.
    N'hésitez pas à publier vos commentaires et suggestions sur les spécifications de la bibliothèque, ils seront les bienvenus sur Gihub)
    Source de la bibliothèque (Ada 202x - V0.3.0)
    Retour en haut de la page

  20. QtAda6 (V0.4.0 - janvier 2024) La bibliothèque QtAda6 est une traduction des API de la bibliothèque graphique Qt en langage Ada. En fait, c'est les API de Qt for Python qui ont été ulisées plutôt que celles en C++. Elle contient les modules QtCore, QtGui et QtWidgets. Elle comporte plusieurs limitations : les Union, List et autre Dict ne sont pas traduits, l'héritage de classe Qt n'est pas disponible en Ada, la gestion de la mémoire est sommaire. Mais la bibliothèque est tout de même utilisable sur quelques exemples : quatre programmes de test sont fournis.
    Analog ClockHello
                  World
    Source de la bibliothèque (Ada 2022 - V0.4.0).
    Retour en haut de la page
Cette page vous a-t-elle aidé ?
Oui: dites en quoi elle a vous été utile.
Elle a été utile, mais: indiquez les informations erronées ou incomplètes.
Elle n'a pas été utile: dites ce qui vous aurait aidé.

À bientôt...

Il est interdit de reproduire, même partiellement, le contenu de cette page sans autorisation écrite préalable.

Toutes les marques déposées sont la propriété de leur dépositaire.