#Python: 3126 pages, 13 cm d’épaisseur!

Lundi dernier, le facteur a eu bien du mal à glisser dans ma boite à lettres, le courrier qui m’était destiné. Et pour cause! Il s’agissait de deux grimoires de Mark Lutz intitulés Learning Python et Programming Python que j’avais commandés quelques jours auparavant. 3126 pages, 13 cm d’épaisseur, tout en anglais! Joie!

Ce diaporama nécessite JavaScript.

C’est le livre de Gérard Swinnen intitulé Apprendre à programmer avec Python 3 qui m’a fait découvrir le langage Python et c’est le MOOC Python: des fondamentaux à l’utilisation du langage  qui m’a permis de compléter mes connaissances.

Vous n’êtes pas sans savoir que j’écris aussi régulièrement que possible, des chapitres consacrés au langage Python avant de les publier sur ce blog. Je le fais entre autres, dans un souci de partage des connaissances mais également pour moi-même. En effet, la rédaction de ces chapitres que je souhaite le plus pédagogique possible, m’oblige à décortiquer les concepts et les fonctionnalités du langage Python que je veux partager. Je n’ai pas d’autre choix que de me convertir à la rigueur et personnellement, ça me fait du bien. Attaché à la vulgarisation des connaissances, je le fais également dans le but de prouver que le codage est une activité à la portée de tous et qu’elle peut être une source de plaisir quels que soient le niveau et/ou l’ambition du codeur.

Mais il faut reconnaître que la vulgarisation a ses limites. Il vient un moment où il faut prendre une grande inspiration et plonger dans les subtilités du langage. Si on ne le fait pas, on finit par se contenter de ce que l’on a et par tourner en rond.

C’est la raison pour laquelle j’ai fait l’acquisition de Learning Python et Programming Python, deux pavés à côté desquels la Sainte Bible fait figure d’opuscule.

Avant d’entrer dans le vif du sujet, évacuons immédiatement l’aspect négatif à savoir la couverture du premier tome qui représente un rat. Outre le fait que je ne vois pas bien le rapport avec le langage Python, j’ai une sainte horreur de ces bestioles et par conséquent, je vais être dans l’obligation de recouvrir la couverture de ce tome, d’une livrée moins vomitive.

En dehors de ça, je dois dire que je suis tout à fait satisfait de mon acquisition.  Le premier tome, Learning Python, est clairement consacré à l’apprentissage proprement dit du langage, c’est-à dire de sa syntaxe. C’est très complet, très détaillé. Notez qu’avec 1500 pages, ce serait quand-même un comble si on terminait la lecture de ce livre avec une impression de succintitude. Donc, Ça commence avec le premier chapitre consacré à la manière d’exécuter un programme écrit en python (par exemple dans un terminal interactif) et ça se termine par le quarantième chapitre consacré aux métaclasses, un concept très avancé.

Cela dit, je ne suis pas certain que ce soit une bonne idée de commencer l’apprentissage du Python avec ce pavé de 1500 pages lorsqu’on est un vrai débutant. Pour le coup, le livre de Gérard Swinnen, très pédagogique, me semble bien plus adapté.

python3

Pour ce qui est de Learning Python, j’ai décidé de le parcourir de manière linéaire, c’est-à dire un chapitre après l’autre et en prenant mon temps. À chaque jour suffit sa peine… D’autant plus que je lis en parallèle, le deuxième tome du même auteur intitulé Programming Python. Il est encore plus volumineux que le premier!

Programming Python est consacré, non pas à l’apprentissage du langage proprement dit mais à la programmation pure et dure.  On entre en quelque sorte dans le vif du sujet. Il aborde des concepts tels que :

  • la programmation système
  • les interfaces graphiques (par exemple tkinter)
  • la programmation internet
  • etc…

J’ai commencé à le lire et je me réjouis déjà d’avoir découvert le module pickle qui permet entre autres, d’enregistrer des données dans un fichier tout en conservant leur type. C’est bien pratique.

Voilà… À raison de dix pages quotidiennes (cinq pour chaque tome), j’en ai pour trois cents jours de lecture! Mais c’est la condition sine qua non si je veux continuer à rédiger des chapitres sur le langage Python.

Red Star OS, une distribution made in « Corédunore »…

On parle beaucoup de la Corédunore ces temps-ci, principalement pour les excentricités de son chef suprême, un petit bonhomme rondouillard et au sourire benêt qui s’est donné comme but dans la vie, de caler une charge nucléaire sous la coiffe d’un missile intercontinental et de faire décoller ce dernier sans qu’il explose sur le pas de tir (si possible).

Outre les bombes atomiques, Kim Jong-un (C’est comme cela qu’il s’appelle) a un autre dada. On dit de lui qu’il est féru d’informatique. Et curieusement, dans cet immense pénitencier qu’est la Corédunore, ce petit homme bien joufflu peut s’adonner à son passe-temps favori en utilisant une distribution issue du monde libre!

En effet, la Corédunore a développé son propre système d’exploitation baptisé Red Star OS et basé sur le noyau Linux. Vous imaginez bien que je n’ai pas résisté à l’envie de tester cette distribution venue d’un autre monde et le moins qu’on puisse dire, c’est que ça n’a pas été une partie de plaisir au niveau linguistique. Commençons par le côté positif : Le téléchargement de l’image iso a été un jeu d’enfant et son installation dans une machine virtuelle s’est bien passée, excepté le fait que j’avais initialement alloué 8 GB de disque dur, ce qui était insuffisant. J’ai donc doublé la charge.

Ce diaporama nécessite JavaScript.

Mais le problème, c’est que tout est en corédunoréen, la langue locale. Or, je possède des lacunes dans cet idiome. Je dois même vous confesser que je n’en parle pas un traître mot. Dieu merci, je suis tombé sur cet excellent tutoriel qui explique de manière détaillée, la marche à suivre pour installer la distribution en anglais.

Tout se passe dans un terminal. En gros, il faut créer un compte root  en entrant cette commande:

/usr/sbin/rootsetting

Puis il faut se loguer en root et entrer les commandes suivantes avant de rebooter :

sed -i ‘s/ko_KP/en_US/g’ /etc/sysconfig/i18n
sed -i ‘s/ko_KP/en_US/g’ /usr/share/config/kdeglobals

J’en ai même profité pour mettre le clavier en azerty grâce à la commande setxkbmap fr.

Il vous faudra également entrer la commande  rm /etc/sysconfig/iptables si vous voulez déverrouiller le navigateur Firefox rebaptisé Naenara et surfer librement car je ne vais pas vous cacher qu’il y a quelques restrictions locales dans ce domaine. Baguenauder sur le world wide web est même carrément interdit pour le citoyen lambda. En fait, l’intranet local ne compte que vingt-huit sites! Voici une courte vidéo qui vous montre à quoi ressemble Red Star OS.

Les fonds d’écran valent le détour également. Au-delà du ton léger que j’adopte pour rédiger cet article, je n’oublie pas la misère et la famine qui frappe ce pauvre peuple victime de ce régime délirant.

Dernière chose… Nous les Français, nous avons la chance de pouvoir choisir librement nos dirigeants et par la même occasion, notre destinée. Alors demain, premier tour de l’élection présidentielle, quelque soit votre choix, n’oubliez pas d’aller voter.

framagit: une forge que j’ai découverte bien trop tard!

Bonjour à tous,

Voici un article qui va sembler bien naïf à tous les codeurs aguerris mais il se trouve que jusqu’ici, je déposais mes codes sur pastebin, un lieu de relégation où la poussière les recouvrait lentement.

Or, lorsque j’ai mis en ligne le code de mon application intitulée Mon jardin, un pseudénommé Microniko m’a vivement conseillé de déposer mon code sur framagit. Il s’agit d’une forge, c’est-à dire une instance d’hébergement et de développement collaboratif de logiciels basée sur Gitlab.

Je me suis donc exécuté et grand bien me fit puisque après une courte période de prise de tête prise en main, j’ai adopté l’outil. Je dois dire que je regrette de ne pas l’avoir découvert plus tôt. Outre le fait qu’on peut déposer son code et que tout un chacun peut y apporter sa contribution, c’est également un formidable outil pour s’organiser. C’est surtout ça qui me plaît en fait!

Avant, voici ce que j’utilisais lorsque je voulais référencer un bug ou qu’une nouvelle idée d’amélioration germait entre mes deux oreilles : un carnet à spirales qui me sert à noter tout et n’importe quoi, un stylo et un surligneur. Mais ça, c’était avant.

carnet

Maintenant que je suis forgeron, j’utilise tous les jours la fonctionnalité issue. C’est un mot anglais qui peut se traduire par problème mais également par question, enjeu, aspect. C’est la raison pour laquelle je n’hésite pas à l’utiliser pour les bugs que je souhaite corriger mais également lorsque survient une idée d’amélioration.

Un contributeur a ouvert la première issue et j’ai suivi son exemple en en ouvrant neuf autres. J’en ai refermé sept. En fait, j’utilise cette fonctionnalité pour faire de l’amélioration continue. C’est propre, c’est carré. Par la sobriété du design, le nouvel utilisateur sent d’emblée qu’il n’est pas là pour enfiler des perles et personnellement, je ne saurais trop conseiller à toutes les têtes d’enclume qui s’obstinent à utiliser les outils du passé, de devenir forgerons.

framagit

Cela dit, comme j’ai moi-même chu la tête la première sur une enclume quand j’était petit, j’utilise encore mon carnet à spirales mais pas de la même manière! Seulement pour noter un bout de code ou une nouvelle idée quand je ne suis pas devant mon ordinateur.

J’apprécie également la fonctionnalité qui permet de comparer deux versions de mon code après y avoir apporté une modification. Mieux encore, on peut même lier des mises à jour de code à une issue bien précise!

framagit_2

Croyez bien que ce formidable outil a littéralement changé ma vie. Comme je dis bien souvent : À adopter sans hésiter!

Qui a écrit la toute première ligne de code?

Et si la toute première ligne de code s’était exécutée toute seule? Et si cette ligne était à l’origine du Big Bang?

Le premier langage que j’ai appris, le français, est un langage humain et c’est bien normal puisque j’appartiens à cette espèce. Ce n’est que très tardivement que j’ai découvert les langages de programmation (à l’approche de la quarantaine…).

J’ai alors constaté qu’il existait des langages de bas niveau et de haut niveau. Et curieusement, haut niveau ne veut pas dire « réservé aux cracks de la ligne de code », bien au contraire! Un langage de haut niveau signifie que sa syntaxe est proche des langages humains et par conséquent, il est plus facile à apprendre. C’est le cas par exemple du langage Python. « Bonjour » se dit :

print("Bonjour") # en python

Je vous renvoie à cette page Wikipédia pour découvrir comment on dit « Hello World » dans des langages de programmation qualifiés de bas niveau.

C’est le langage C qui a engendré Python. Ce langage, né dans les années 70, est un langage de bas niveau, c’est-à dire plus proche du langage machine. Au-dessous, on trouve l’assembleur. C’est le dernier langage avant d’arriver à l’antre de la bête binaire, gardienne bicéphale du langage machine, le seul qu’un ordinateur est en mesure de comprendre, c’est-à dire une suite de 0 et de 1. Voilà comment on dit Bonjour! en langage machine:

0100001001101111011011100110101001101111011101010111001000100001

Vous pouvez faire l’essai avec un convertisseur et constatez par vous-même que ce que j’écris est vrai.

C’est illisible et absolument indigeste pour nous les humains et c’est bien la raison pour laquelle on a inventé les langages de programmation, tout simplement pour servir d’interface entre nous et les ordinateurs.

On connait le géniteur du langage Python. Il s’agit du Néerlandais Guido van Rossum, on connait ceux qui sont à l’origine du langage C : les compères Dennis Ritchie et Ken Thompson. Avec un minimum de recherche, on arrive à trouver le nom de celui qui est le père du premier langage assembleur, un dénommé Nathaniel Rochester… Mais qui a rédigé la première ligne de code en langage binaire? Qui est-il, ce mystérieux programmeur à l’origine de l’informatique? D’ailleurs, a-t-il jamais existé?

Peut-on concevoir que cette ligne se soit exécutée toute seule et qu’elle soit non pas à l’origine de l’informatique mais carrément à l’origine du Big Bang? Avant cette explosion primordiale, il y avait le Néant. C’est du moins ce que l’on suppose compte tenu du fait que nos lois de la physique nous empêchent de remonter au-delà du Big Bang. c’était le règne du zéro, le seul nombre à la fois réel, positif, négatif et imaginaire pur (source wikipédia), un nombre aux propriétés surnaturelles.

Or, il faut savoir que zéro élevé à la puissance zéro est égal non pas à la tête à Toto mais à 1

00 = 1

Ça veut dire quoi? Ça veut tout simplement dire que du néant, a jailli la matière.

Faites l’essai avec une calculatrice et vous constaterez que là encore, ce que je dis est vrai. C’est d’ailleurs le cas pour n’importe quel nombre élevé à la puissance 0. Par exemple, 20 = 1, 150 = 1. Petite démonstration:

  • 24 = 23 x 2
  • 23 = 22 x 2
  • 22 = 21 x 2
  • 21 = 20 x 2
  • 20 = 1

À partir de là, on peut hardiment supposer que le Big Bang n’est rien d’autre que le zéro primordial élevé à sa propre puissance. Notre univers existe parce qu’il n’avait pas le choix. Par la force du zéro (le néant), il ne pouvait que donner naissance au 1 (la matière). Les implications de cette théorie sont terribles puisqu’il n’est pas exclu que notre univers ait pu se passer de Dieu pour voir le jour. Cela ne signifie pas que Dieu n’existe pas mais cela signifie que ce dernier n’est peut-être pas à l’origine de la naissance de l’Univers. Ce n’est pas sa création et il n’a aucune emprise sur cette dernière.

big_bang

Après que le zéro eut engendré le 1, les deux se sont accouplés pour donner naissance au 2 (c’est-à dire 10 en langage binaire). Puis le 3 a vu le jour suivi du 4, etc… Tout s’est enchaîné dans une inflation aussi fulgurante que celle qui a frappé le Zimbabwe en son temps.

Vous savez pourquoi je vous parle de ça? Parce que pas plus tard qu’hier, je suis tombé sur un livre que j’avais lu il y a quelques années. Il s’intitule Avant le Big Bang et ses auteurs sont les célèbres frères Bogdanov. Il y avait justement tout un passage sur ce 00 = 1 et ça m’avait quelque peu interpellé. D’aucuns pensent que ces deux gugusses ne sont que des bonimenteurs de foire et malheureusement je ne peux pas les contredire car je n’ai pas un bagage astrophysique suffisant pour démêler le vrai du faux dans cette histoire. Tout ce que je peux dire, c’est que malgré leurs supposées approximations scientifiques, ce sont des vulgarisateurs hors pair et je trouve que c’est une qualité qui n’est pas donnée à tout le monde. Je me souviens également avec nostalgie de Temps X, émission qui a marqué mon enfance.

 

La création du monde reste un insondable mystère mais il n’est pas interdit de penser qu’elle est le fruit du tout premier programme informatique jamais exécuté (00 = 1), celui qui a également donné naissance au langage binaire.

#Python – Application « Mon jardin » : Analyse du code (1ère partie)

Edit du 04/04/2017

Je viens de déposer la totalité du code source sur Framagit : 

https://framagit.org/Ordinosor/mon-jardin/tree/master

Pour lancer l’application:

  • il faut télécharger le fichier compressé contenant le dossier mon_jardin et le fichier jardin.py.
  • Puis, il faut décompresser le fichier et placer mon_jardin et jardin.py dans votre répertoire courant (par exemple, chez moi, c’est « /home/benoit »).
  • Ensuite, il faut rendre jardin.py exécutable. C’est ce fichier qui lance l’application.
  • Enfin, il faut entrer dans un terminal la commande suivante, par exemple chez moi :  /home/benoit/jardin.py. Bien sûr, vous remplacez /home/benoit par votre répertoire courant.

Bonjour à tous,

Il y a quelques jours, je vous avais présenté mon application destinée aux jardiniers en herbe. Elle est composé de six modules. Je suis en train de reprendre le code de chacun d’entre eux pour en éliminer les bugs et les risques de crash.

Je me suis dit que ce serait peut-être une bonne idée de vous présenter et d’analyser le code de chaque module dans une vidéo. Je commence par le premier qui créé la page d’accueil et la page des menus. Il s’appelle jardin.py :

Voici le code:

https://pastebin.com/embed_iframe/BBGVRccR

Et voici la vidéo explicative:

Python : Mon application destinée aux jardiniers

Edit du 03/ 04/2017

Je viens de déposer la totalité du code source sur Framagit : 

https://framagit.org/Ordinosor/mon-jardin/tree/master

Pour lancer l’application:

  • il faut télécharger le fichier compressé contenant le dossier mon_jardin et le fichier jardin.py.
  • Puis, il faut décompresser le fichier et placer mon_jardin et jardin.py dans votre répertoire courant (par exemple, chez moi, c’est « /home/benoit »).
  • Ensuite, il faut rendre jardin.py exécutable. C’est ce fichier qui lance l’application.
  • Enfin, il faut entrer dans un terminal la commande suivante, par exemple chez moi :  /home/benoit/jardin.py. Bien sûr, vous remplacez /home/benoit par votre répertoire courant.

Bonjour,

Cela fait un an et demi que j’ai commencé à coder divers programmes en Python et du coup, je me suis dit que ce serait peut-être une bonne idée de tous les rassembler dans une même application destinée aux jardiniers amateurs désireux de gérer leurs semis, plantations et récoltes.

Rien de bien révolutionnaire dans ce programme mais cela me permet de mettre en pratique mon apprentissage amateur du Python et de découvrir les différentes subtilités de ce langage puissant et agréable.

Par conséquent, je me permets de poster une vidéo dans laquelle je vous présente ladite application. Je vous demande un peu d’indulgence compte tenu du fait que je ne suis pas un développeur professionnel. La programmation est pour moi un passe-temps qui s’est transformée en véritable passion mais je reste fondamentalement un amateur. Je sais que mes codes sont perfectibles mais je n’hésite pas à remettre l’ouvrage sur le métier lorsque cela s’avère nécessaire (risque de bugs, code trop lourd etc…).

J’utilise beaucoup les try-excet-else afin de prévenir tout crash. Je reste ouvert à toute critique constructive ou a toute suggestion d’amélioration. Voici donc mon application intitulée sobrement (et provisoirement) Mon Jardin. Toute aide est la bienvenue! (J’aimerais bien améliorer l’application avec d’autres personnes).

Voici le code source:

https://framagit.org/Ordinosor/mon-jardin/tree/master

Je souhaiterais exporter ce programme sur d’autres ordinateurs mais je ne sais pas trop comment m’y prendre. J’ai bien tenté d’essayer avec cx freeze mais le résultat n’ pas été concluant. Si quelqu’un a une idée, je suis preneur. Merci d’avance.