Les fractales de Mandelbrot

En mathématiques, les fractales peuvent être grossièrement définis comme des formes géométrique qui se répètent à l’infinie en zoomant sur les bords de ces formes géométriques, vous pouvez voir une illustration sur l’image animée en bas. Le plus étonnant c’est que pour un non connaisseur des fractales il va supposer que ce sont des animations psychédéliques (envoûtantes) créées par un artiste quelconque, alors qu’en réalité ce sont des constructions purement mathématiques de création divine, cachées dans des formules mathématiques que les humains n’ont soupçonné l’existence qu’à partir de l’année 1978, sur une première image produite par le mathématicien Benoit Mandelbrot.

La vidéo en bas produite par l’excellente chaîne Youtube de mathématique Numberphile, fait la démonstration étape par étape d’une manière très simpliste la construction d’une image des fractales de Mandelbrot en passant par les fractales de Julia, qui sont comme vous allez le voir tous les deux très proches et très similaires. Effectivement, une image de Mandelbrot ou de Julia est formée sur la base d’une formule mathématique très simple, pour Julia c’est la suite Zn+1= Zn2+C où Z est une variable complexe et C une constante complexe, l’image produite indique pour chaque point/pixel (un point c’est la valeur de Z) sur le repaire en 2 dimensions des nombres complexes si la suite sur ce point converge (stable) ou diverge (instable, tends vers l’infinie). Pour l’image de Mandelbrot c’est exactement la même suite sauf que cette fois la valeur initiale de la suite est toujours 0 et c’est C qui change sur tous les points de l’image, si la suite converge le point est de couleur noir, sinon ce sont des nuances de couleurs en rapport avec la vitesse de divergence.

L’ensemble de Mandelbrot

Paradoxalement l’animation de zoom et les figures géométriques semblent très complexes, en réalité sa formule mathématique et sa programmation sur ordinateur sont très simples, et n’exige que peu d’efforts. Je vous donne le lien d’un logiciel déjà programmé, c’est le logiciel Xaos, il vous permet d’explorer par vous-même la cartographie de l’ensemble de Mandelbrot, que même jusqu’à ce jour beaucoup de mathématicien tentent de résoudre l’énigme de la formation de ces fractales.

Comment faire une bonne soudure

Il suffit d’une simple image pour résumé une longue explication pour comment faire correctement une bonne soudure (il s’agit de la soudure en électronique). Malgré que le site soit globalement destiné aux étudiants en l’informatique cela-dit en informatique lorsqu’il s’agit de conception hardware on est souvent mené à concevoir des circuits électroniques numériques et à les construites sur des PCB (cartes électroniques sur circuit imprimé), ainsi l’aboutissement final d’une conception numérique est la réalisation physique électronique du circuit.

Faire une bonne soudure

L’image en question en haut est très explicite, pour faire une bonne soudure il faut premièrement chauffer à sec la patte du composant et la trace sur le PCB de 2 à 3 secondes, deuxièmement on rajoute l’éteint, troisièmement on chauffe encore de 1 à 2 secondes, et après on laisse refroidir. La partie en bas sur l’image fait la comparaison entre une bonne soudure avec d’autres qui sont mal faits.

La récursivité comme solution pour le jeu du Sudoku

Le jeu du Sudoku est un jeu de puzzle populaire sur certains journaux et magazines, il est représenté sur l’image en bas, globalement il se constitue d’une grille de 9×9 cases partiellement remplies par des chiffres de 1 à 9, la grille est aussi subdivisée en 3×3 carré de 3×3 chiffres, le joueur doit remplir le reste des cases vides restantes en respectant la règle qu’il ne doit pas y avoir de répétition d’un chiffre sur une colonne, sur une ligne ou sur le carré 3×3.

Une grille vide de Sudoku

Les règles sont simples mais le casse-tête demande beaucoup de temps à l’humain pour le résoudre, et pourtant c’est déconcertant comment un programme d’une poignée de lignes de code arrive à résoudre le problème sur ordinateur en une fraction de seconde, dans la vidéo qui suit l’enseignant s’exulte de la magie de la récursivité, et c’est d’autant plus vrai que la récursivité est une technique de programmation réputée difficile à apprendre mais très efficace une fois maîtrisée. Il n’était par rare dans les examens d’algorithmique que j’ai eu à corriger de tomber sur des problèmes difficiles à résoudre par les méthodes conventionnelles (par boucles et tests) alors qu’ils devenaient très simples en récursivité.

résoudre le sudoku par récursivité

Services cloud gratuits pour développement de jeux vidéo

Pour rappel le cloud computing est une récente technologie consistant à offrir aux entreprises des services sur internet en IT (Information Technology: technologies en informatique). Ça permet aux entreprises au-lieu d’acheter du matériel et du logiciel et d’installer leurs propres infrastructures informatiques en local, de louer des services en IT proposé par d’autres entreprises tierces spécialistes dans la construction et le maintien de ce genre d’infrastructure. Les services loués par les entreprises sont variers et peuvent être catégorisés en 3 modèles, ça peut être des services au niveau infrastructure (appelés IaaS) comme la mise à disposition de serveurs, datacenters, du stockage, un réseau, des machines virtuelles…etc. Ou au niveau plate-forme (appelés PaaS) et ça inclut les systèmes d’exploitation, les bases de données, les serveurs web, les middlewares, les API de développement, le monitoring…etc. Ou-bien au niveau application (appelés SaaS), ça permet aux entreprises d’installer leurs applications à distances et de les utiliser à distance, en assurant la gestion des bases de données et les backups (les sauvegardes) par l’entreprise tierce. Les entreprises offrants ce genres de services sont généralement appelés cloud computing service providers et sont généralement des filiales de célèbres firmes d’IT, parmi eux on peut nommer AWS (Amazon Web Services) d’Amazon, ou encore Microsoft Azure, Google Cloud Platform, IBM cloud…etc.

Image du jeu Fortnite

Les services offerts gratuitement pour le développement de jeux vidéo sont de la part de la société EPIC games, c’est exceptionnel dans le fait que les services sont généralement payants d’autant plus que les services pour jeux vidéo sont assez rare. EPIC games est une firme très ancienne et très connue dans le monde vidéoludique, actuellement elle est surtout connue pour le très célèbre jeu Fortnite (image en haut) ou de leurs moteur de jeu Unreal Engine réputé pour ça puissance graphique (image de son interface en bas). Mais le plus étonnant c’est les récentes actions très particulières de la firme, par exemple l’année dernière elle a offert 1,2 millions de dollars à la fondation open source Blender Fondation pour subventionner le logiciel de modélisation en 3d Blender (plus de détails sur l’article), ou la subvention aussi par 250 milles dollars du moteur de jeu open source Godot (plus de détails sur l’article) pratiquement un concurrent direct pour son moteur Unreal. Récemment aussi EPIC games sous période de confinement a eu l’idée d’agoniser plusieurs événements virtuels sur son jeu Fortnite, et le résultat est un nouveau record mondial de prêt de 28 millions de participants, c’est évident qu’il est impossible d’organiser des événement de cette envergure dans le monde réel, d’ailleurs d’après ce phénomène beaucoup de personne motionnaient les prémices du web 3.0, un web totalement virtuel dans lequel avec un avatar l’internaute peur évoluer. Sans oublier la récente mesure du moteur Unreal Engine entamée envers les développeurs indépendants (indie en Anglais, se sont des développeurs avec un revenu et un capital très faible, souvent c’est un unique développeur qui travail depuis sa maison), la mesure permet à ces développeurs d’utiliser gratuitement le moteur et de publier leurs jeux sans aucune redevance (royalties en Anglais) jusqu’à ce que le jeu dépasse en profit la bar d’un million de dollars.

L’interface du moteur de jeu Unreal

Concrètement les services d’EPIC games offrent aux développeurs le backend pour le déploiement en réseau des jeux en multijoueurs, ainsi ces services ne concernent réellement que les jeux en réseau et pas en local. Le backend est sous forme d’une API permettant la gestion de l’infrastructure réseau hébergeant le jeu, ces sévices facilitent grandement la vie des développeurs, parce que autrement le développeur devrait les gérer lui-même et ça implique beaucoup de travail de programmation, la location de serveurs et le maintien de ces derniers. En parcourant la page officielle des services sur le site d’EPIC games on peut énumérer quelques services proposés par le cloud d’EPIC, comme le matchmaking pour organiser des matches entre plusieurs joueurs, la création de Lobbies qui sont des zones virtuelles où les joueurs peuvent bavarder, s’inviter pour des matches, ou chercher d’autres joueurs, le suivi des statiques des joueurs, les services d’authentification et la gestion de la liste d’amis, sauvegarde, création de canaux peer-to-peer…etc. Sans oublier que cette API est accessible sur n’importe quel moteur de jeu et peut-être intégrer sur différentes plate-formes de jeu comme la plate-forme de PlayStation, Xbox ou Steam.

Linus Torvalds

Linus Torvalds, un grand nom dans l’informatique moderne, l’inventeur du fameux Linux, l’un des softwares les plus utilisés actuellement dans le monde, quoiqu’il ne prédomine pas dans le secteur des PC, sa diffusion dans le secteur des serveurs est colossal, le marché des tablettes et smartphones est de même notamment en relation avec système Android construit sur une base Linux, sans oublier les différents systèmes embarqués à base de Linux comme les téléviseurs, les consoles de jeux, les routeurs, les DVR…etc. Il aussi peu connu que Linus Torvalds est l’initiateur du logiciel de gestion de versions Git utilisé pour le développement distribué de logiciels sur des dépôts comme GitHub par exemple.

Linus Torvalds a fait une interview sur la vidéo en bas, organisée au sein d’une conférence pour la fondation TED, la fondation est responsable de la mise en ligne gratuitement d’interventions (talks en Anglais) par différents acteurs dans des domaines divers comme la science, la technologie, l’éducation, la politique…etc. Dans l’interview Linus Torvalds revient sur le déroulement de la création de Linux et de Git, sur son implication dans le monde et la philosophie open source parce que à l’époque c’était un peu par hasard, il parle de sa manière de travailler, de sa vision concernant l’innovation et l’invention et de tout autres choses. C’est une vidéo très riche sur homme qui l’est d’autant plus.

Interview de Linus Torvalds

Analyse hardware de la PlayStation 1

L’une des merveilles technologiques qu’a connu le monde vidéoludique dans son histoire est sans doute la PlayStation 1 de la marque Sony, pour ma part c’est la meilleure console de jeux vidéo de tous les temps. Sa sortie en 1994 a marqué un tournant technologique sans précédent, elle présentait des performances en 3D dépassant de loin son homologue PC, avec un prix 2 à 3 fois moins cher (pour rappel à l’époque de sa sortie les PC tournés encore sur Windows 3.11), une prouesse qui a ébloui toute personne concernée par la technologie. Et une question se posait, comment Sony avait réussi à produire un tel exploit technologique ?

La réponse de nos jours est désormais simple et bien connue, c’est en 2 mots; spécialisation et optimisation. La PlayStation d’un point de vue général n’était pas plus puissante que les PCs de l’époque, mais dans son domaine, en occurrence la 3D, elle était très très en avance, son architecture globalement était orientée vers le rendu 3D en optimisant au maximum les coûts des composants, les concepteurs ont voulu dès le début construire une architecture simple à programmer étant les début de la 3D, avec le moindre coût. Sur le diagramme en bas on peut avoir un aperçu de cette architecture.

Architecture de la PlayStation 1

Un très bon article (voici son lien,c’est aussi la source du diagramme) arrive à décortiquer d’une manière relativement détaillée l’architecture. On peut ainsi observer sur le diagramme que la PlayStation 1 dispose d’un processeur de 33.87 MHz dérivé de MIPS et implémentant le jeu d’instruction MIPS I (le même étudié dans le module Architecture des Ordinateur). Généralement MIPS dispose de 4 slots pour rajouter des Co-processeurs, le processeur de la PlayStation n’utilise que 2, le MMU (pour la gestion de mémoire virtuelle) et le GTE (Geometry Transformation Engine) module purement mathématique accélérant les calculs de transformation et des projections géométriques des polygones qui représente une bonne partie du moteur de rendu 3D. Sur le même silicone du processeur se trouve aussi un DMA (Direct Memory Access) automatisant et accélèrent le transfert de donnés entre différentes mémoires, et le MDEC (Motion Decoder) pour la lecture du flux vidéo, en raison que le processeur n’a pas assez de puissant pour le faire d’une manière logiciel, les processeurs actuels (de 4 à 5 GHz) peuvent le faire facilement et ne disposent pas forcément un composant dédié.

Le processeur est ensuite raccordé au bus sur le quel sont rattachés : une RAM de 2 Mo du type EDO RAM, le GPU (Graphics processing unit) responsable de l’affichage graphique, le SPU (Sound Processing Unit) l’unité responsable du son, le CD-ROM controller, le BIOS (Basic Input/Output System) sous forme d’une ROM de 512 Ko contenant principalement le programme de démarrage de la machine, et une interface pour la communication avec les manettes et les cartes mémoires. Le GPU de la PlayStation est relativement primitif, il ne peut essentiellement que dessiner des triangles, sachant que le triangle est la forme primitive élémentaire constituant une scène en 3D, la commande de dessiner un triangle et ses paramètres lui provient du processeur, il dispose d’une mémoire propre VRAM de taille 1 Mo. L’unité de son aussi dispose de 512 Ko de mémoire SRAM. L’image en bas illustre la carte-mère et la disposition physique des composants.

Carte-mère de la PlayStation 1

Voilà, on vient de faire un petit survol sur l’architecture de la PlayStation 1, je vous conseille fortement de lire l’article qui détail beaucoup plus l’architecture, (lien de l’article). Il est probable que je consacrerai dans le futur inchaallah un tutoriel bien plus détaillé et approfondi pour arriver au moins à implémenter des petits programmes sur la machine, ces petits programmes sont généralement appelés démos. En conclusion, il est facilement observable que l’architecture d’une PlayStation 1 et totalement différente d’un PC, on avait vu dans le module de l’Architecture des Ordinateurs que le PC suivait plus ou moins l’architecture de Von Neumann qui est relativement simple, alors que la PlayStation suit un modèle totalement différent, plus éparpillé et plus distribué éventuellement pour optimiser au-mieux les caractéristiques vidéoludique de la machine.

30 livres en informatique récents et totalement gratuits

Récemment l’éditeur Allemand de livres et de journaux scientifiques international Springer, bien connu dans les sciences et technologies a fait l’initiative de publier gratuitement une trentaine de livres informatiques très récents (de 2016 à 2019) sous format numérique, ça concerne plusieurs domaines informatiques, dont la programmation, l’intelligence artificielle, programmation système, programmation parallèle, sécurité réseaux, cryptographie, traitement d’images et beaucoup d’autres. La liste des livres et leurs liens respectifs sont sur la liste en bas :

Lien rassemblant la liste de tous les livres

Cheat-sheet pour le langage C

Personnellement le langage C avec le langage C++ sont mes deux langages de programmation préférés, et je suis très ravi que ça soit les principaux langages enseignés au sein de l’université. Lorsque j’étais étudiant je me rappelle avoir eu la fausse idée sur la relation entre le langage C et le langage C++, je pensais que le C++ est une évolution du C et qu’une fois le langage C++ maîtrisé je n’aurais plus besoin d’utiliser le langage C, alors qu’avec le temps je me suis aperçu que malgré que le C++ hérite beaucoup du langage C, ce sont deux langages très différents, le C est surtout un langage procédural structuré autour de la fonction, très populaire dans les domaines comme les systèmes embarqués (systèmes avec des ressources réduites) et les systèmes d’exploitation, d’ailleurs le noyau Linux est en grande partie écrit à base de C. En contrepartie le langage C++ est un langage orienté objet, plutôt populaire pour les applications complexes avec des exigences de performances et de robustesse, comme les programmes de simulation (ou programmes à calcul intensif), les programmes de contrôle industriel, les moteurs de jeux vidéos, les compilateurs…etc.

Lien du Cheat-sheet du langage C

Le lien ci-dessus est celui du cheat sheet pour le langage C, à vrai dire c’est plutôt un résumé sur le langage C avec de petites explications, des exemples…etc. C’est un excellent article pour se mémoriser rapidement tous les principaux concepts du langage, néanmoins ce n’est pas le meilleur pour débutant pour apprendre le langage à partir de zéro.

Routeurs, switchs et hubs

Il est bien connu que d’un point de vue académique les réseaux informatiques sont représentés comme un graphe au sens mathématique, donc plusieurs nœuds interconnectés par des liaisons pour transmettre l’information d’un nœud à l’autre. Les nœuds globalement sont de deux types; les terminaux, comme les PCs, les serveurs, les tablettes ou smartphones, formellement ce sont la source de l’information (serveurs) ou consommateurs d’information (PCs, téléphones). Et le deuxième type sont les nœuds internes de transmission et irrigation de l’information qui sont les routeurs, les switchs, et les hubs. Probablement un informaticien aura un jour ou l’autre à manipuler et utiliser ces dispositifs, il est important de bien saisir leurs manières de fonctionner, la vidéo suivante démontre en illustration la différence entre les trois dispositifs, avec les points forts et faibles de chacun. Cette vidéo est de l’excellente chaîne éducatif sur les technologies en informatique PowerCert.

Calcul géométrique de la multiplication et la racine carré

Il est étonnant aujourd’hui que la racine carrée est facilement calculée en utilisant la calculatrice ou d’autres appareils électroniques sophistiqués, mais serait-il possible pour quelqu’un de la calculer manuellement sans utiliser de machine, pour les informaticiens il existe les méthodes dites numériques permettant de la calculer avec des opérations simples comme l’addition, la soustraction, la multiplication, et la division. Il existe aussi d’autres méthodes mathématiques pour approximer sa valeur (voir wikipédia), néanmoins j’ai été étonné par la simplicité de la méthode géométrique démontrée dans la vidéo suivante, datant de l’époque de la Grèce antique la méthode est extrêmement facile ainsi que sa démonstration géométrique. La vidéo aussi présente une autre méthode aussi géométrique et simple pour calculer la multiplication.

Calcul géométrique de la racine carrée