COLOFA a choisi PYTHON pour développer ses logiciels

Bonjour et bienvenue à toutes et tous dans le monde de la programmation,

Nous avons choisi python3.10 pour développer nos logiciels et souhaitons vous faire connaitre ce fabuleux langage, simple, puissant et extrêmement efficace… c’est un hybride de C++, java et javascript dont il emprunte  les meilleures subtilités.

A Télécharger gratuitement sur >>https://www.python.org › downloads

> Choisir ‘python 3.10 msi for windows’ (installation automatique sur windows 7/8/10), la version 3.10 msi permet d’utiliser les bibliothèques PIL et PYGAME qui ne sont pas encore disponibles pour les versions supérieures.

Il a été largement vulgarisé par Gérard Swennen professeur de physique et biologie Belge avec son livre d’initiation tout public ‘Apprendre à programmer avec PYTHON 3’ (environ 32 €. format papier, 22€ format numérique)  >>>http://inforef.be/swi/python.htm

De multiples systèmes fonctionnent avec PYTHON, il est fourni avec la base de données SQLITE3 et possède de nombreuses bibliothèques telles que PIL (traitement d’images et conception de jeux 2D) et PYGAME (traitement du son et de la messagerie) à télécharger gratuitement.

Extrait de texte de http://fr.wikipedia.org/wiki/Python :

Python (en anglais : [ˈpaɪ.θɑːn]) est un langage de programmation interprété, multi-paradigme et multiplateformes. Il favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d’un typage dynamique fort, d’une gestion automatique de la mémoire par ramasse-miettes et d’un système de gestion d’exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.

Le langage Python est placé sous une licence libre proche de la licence BSD8 et fonctionne sur la plupart des plates-formes informatiques, des smartphones aux ordinateurs centraux9, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et peut aussi être traduit en Java ou .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser.Il est également apprécié par certains pédagogues qui y trouvent un langage où la syntaxe, clairement séparée des mécanismes de bas niveau, permet une initiation aisée aux concepts de base de la programmation10.

Nota : il vient d’être retenu comme langage officiel d’apprentissage à la programmation par l’éducation Nationale !.

Nous vous proposons de partager notre expérience afin de vous inciter à vous lancer dans le monde merveilleux et sans limite de la programmation car c’est un loisir distrayant, formateur et très enrichissant au fil du temps.

Maîtriser un ordinateur est un exercice très valorisant, instructif et gratifiant car il conduit naturellement à une  analyse plus pertinente des sujets et à une grande rigueur de raisonnement qui sont la base même de la programmation. Aucun pré requis n’est imposé, il suffit d’être curieux(se), patient(e) et appliqué(e) car la programmation n’admet aucune faute de conception ou de syntaxe, c’est en cela que ce loisir est formateur.

On se lance en supposant que vous avez parcouru le livre de Gérard Swinnen !

Ce qui se conçoit bien s’énonce clairement (Boileau) donc nous allons présenter cette discipline avec le plus de simplicité et de clarté possible, au risque de heurter les puristes !.

Avant de vouloir ‘commander’ un ordinateur il faut d’abord savoir comment il fonctionne et comment l’alimenter. La matière de base est nommée ‘code’, c’est un texte écrit avec le clavier dans un éditeur de texte brut selon un langage composé de mots ‘clés’ et de texte rédactionnel usuel :

Voici un bout de ‘code source’ illustrant le sujet : on commande à l’ordinateur d’afficher du texte graphique (effaçable) à des endroits précis de l’écran : exemple  (ligne 540, colonne 370… self.can2 est le nom donné par le programmeur à la ‘surface’ d’écran recevant le texte)
self.can2.create_text(540,370,  text= »Part Non Alimentaire », font= »arial 10 italic bold « , fill= »red »)
self.can2.create_text(840,370, text= »Répartition des 4 semaines », font= »arial 10 italic bold », fill= »blue »)

 « create text » est un mot ‘clé de Python‘, « Part non alimentaire » est le texte qui va s’afficher sur l’écran,  font= »arial 10 italic bold », fill= »red » sont des mots ‘clés’ qui définissent le type de caractères, leur taille et leur couleur.

Lorsque le code est rédigé et vérifié, on lance son exécution avec la touche F5 du clavier si on développe le code source avec ‘Idle’ fourni dans le package python et incluant un éditeur de texte, un débogueur (signaleur d’erreur dans la rédaction du code), un pré-compilateur et un interpréteur traduisant le code source en langage machine (bits 0 et 1)  .

Exemple 1 : l’utilisateur demande (en général par action sur un bouton…) d’effectuer la mise à jour d’un certain nombre d’éléments.

> Deux solutions s’offrent au programmeur : soit il se contente d’autoriser la requête car il juge  la manoeuvre sans conséquences dommageables, soit il impose une série de contrôles avant d’autoriser ou interdire la requête demandée… on peut dire qu’il s’agit dans ce cas d’une décision ‘raisonnée’ que l’on peut qualifier ‘hyper programmation’  ou ‘hypercode’, ce que la mode actuelle qualifierait à tort  ‘intelligence artificielle’.

Exemple 2 : la conception d’un moteur de recherche implique souvent de l’hyper programmation > la recherche d’un mot dans un texte est classique, elle impose à l’ordinateur de trouver la correspondance du mot recherché dans un texte ou un ensemble complexe de données. Dans le cas de recherche simple on se contente de l’opérateur d’égalité (==) l’occurrence’ chat existe-t-elle oui ou non dans ce texte ?, mais  on peut améliorer la recherche en modifiant de façon dynamique l’occurrence recherchée et par une aide ponctuelle en faisant afficher quelques mots ‘proches’ de cette orthographe (catch,chatte,chatière…) que le programme va chercher dans une base de données, à charge pour l’utilisateur de faire son choix.

En résumé : la conception d’un programme informatique contient un certain nombre de ‘fonctions’ ordinaires (on se borne à faire exécuter sans contrôle supplémentaire les tâches simples et sans risque) et un certain nombre de ‘fonctions’ avec contrôles supplémentaires basés sur le raisonnement humain.(c’est ici que se déploie tout le savoir faire du programmeur).

Quels sont les risques de dérive d’un ordinateur ?... n’étant doué d’aucune intelligence ni de raisonnement, ni de sentiments il ne pourra qu’exécuter ce qu’on lui a écrit, c’est à dire donner le résultat attendu ou erroné si le raisonnement écrit (texte constituant le code) par le programmeur est … lui même erroné !, il peut au pire détruire ou modifier des données si un ordre malintentionné lui est donné (hackage), il faut donc tester tous les cas de figure avant de valider un projet.

L’IA (soit disant Intelligence Artificielle)  dont on nous rebat les oreilles dans tous les médias a pour but principal de développer un pseudo  ‘auto-apprentissage’ basé sur le choix de plusieurs scénarios (algorithmes mathématiques) résultant de l’analyse de plusieurs résultats liés à un problème donné : si l’utilisateur effectue telle action >  alors évaluer le résultat > proposer une autre approche elle même évaluée et évaluer le résultat, une autre approche elle même évaluée… etc (cette pratique se nomme : analyse et filtrage des résultats) et le programmeur imposera alors au final à la machine, l’exécution la plus favorable en termes de logique, et voilà, c’est enfin démystifié une fois pour toute, mais pour ce faire il est nécessaire de posséder une grande puissance de calcul lorsque l’on manipule un grand nombre de données… qui donnent  un grand nombre de résultats… qui imposent un grand nombre de contrôles… qui imposent….. et voilà la limite est atteinte, alors on clos ce chapitre !… voir la page suivante qui traite de l’IA et de la reconnaissance d’images.

C’est le casse tête de l’automatisation intégrale de la conduite automobile : il faut des dizaines de capteurs pour analyser des centaines de données pour avoir un résultat satisfaisant : si > les voies de circulation sont aménagées pour cela, si la signalisation est compatible , complète et entretenue, s’il ne neige pas, si la pluie n’est pas trop intense, si des branches ou des oiseaux ne viennent pas perturber la vision…etc, c.a.d impossible de concevoir un système à automatisation totale sur voie publique sauf sur parcours spécialement aménagé… on appelle cela ‘une voie ferrée‘ et ça existe depuis plus d’un siècle !.

Ceci nous conduit à aborder la phase de ‘débogage’ d’un code.

La mise au point d’un programme informatique nécessite une quantité de tests et de contrôles afin d’éliminer au fur et à mesure les erreurs de syntaxe (règles propre au langage), les fautes de frappe, ajuster les  affichages sur l’écran, la cohérence des informations d’aide à la saisie, la validité des résultats numériques… etc, c’est pourquoi il est conseillé d’utiliser l’outil ‘Idle’ de Python qui facilite la rédaction du code  et le débogage en indiquant la nature du défaut et le N° de ligne en cause.

Règles de base de conception d’un programme de type ‘événementiel’  :

On nomme ‘évènementiel’ un type de programme qui s’exécute selon les événements qui lui sont soumis, par exemple un ‘clic’ sur un bouton de commande envoie un signal qui va faire exécuter la partie du programme (fonction) à laquelle il est ‘connecté’ par cette action ou engendrer une ‘cascade’ en enchaînant l’exécution de plusieurs ‘fonctions successives’ (exemple : afficher tel texte sur telle zone de l’écran, ensuite effectuer telles opérations, ensuite enregistrer ces résultats, ensuite effacer cette partie d’écran, et enfin copier ce résultat dans la base de données… etc)

Un programme informatique de ce type se compose généralement d’une fenêtre (mère) contenant du texte, un ou plusieurs champs de saisie et d’affichage de résultats, une ou plusieurs listes de choix, et un ou plusieurs boutons de commande permettant l’interactivité entre l’humain et la machine par l’intermédiaire de la ou des ‘fonctions’ (voir les exemples du livre de Gérard Swennen).

Pour bien démarrer…

1 - Procéder par approche en confectionnant un 'squelette' constituant un code exécutable (création de la fenêtre mère et affichage d'un texte)

> vérifier et lancer le test, corriger si besoin et recommencer...

2 - Implanter les éléments de type graphique (champs de saisie et d'affichage) et les fonctions qui vont exploiter ces éléments.

> vérifier et lancer le test, corriger si besoin et recommencer... et oui, il faut être vigilant et patient pour mériter une récompense !. 

Les copies d’écran ci-dessous sont extraites de notre logiciel ‘MAJORDOME’

Aujourd’hui colofa.com est devenu colofa.fr

Une fenêtre de saisie et d’affichage … très complexe !
Trois fenêtres superposées sur l’écran !

 

Tableau dynamique des dépenses sur 12 mois extraites de notre base de données SQLITE3

 

 

Rédaction en cours…..

Precedente      Suivante