La séquence de démarrage de Linux

N’importe quel informaticien de nos jours sait ce que c’est Linux. C’est le système d’exploitation Open-source et gratuit, adoré par les informaticiens puisqu’il offre beaucoup plus de commanditées aux informaticiens par rapport aux autres systèmes d’exploitation. Néanmoins, dans le marché grand public des PC de bureau, il se place à la 3e place après Windows et Mac OS. L’un des points forts qui rend Linux attrayant pour les informaticiens, est son ouverture et la possibilité de facilement le modifier. Comme vous allez voir sur la vidéo en bas, le processus de démarrage, appelé aussi le processus de boot, de Linux est bien connu et bien documenté, et bien flexible aussi. Contrairement aux autres systèmes d’exploitation. Cet aspect est très intéressant pour les informaticiens d’un point de vue pédagogique, puisque ça permet de comprendre comment un système d’exploitation se comporte. Et aussi d’un point de vue de flexibilité, puisque ça devient plus facile de modifier et de customiser le système d’exploitation aux besoins de l’application.

Linux booting process

La vidéo en haut et celle de la chaîne Youtube ByteByteGo. Une très bonne chaîne technique qui explique généralement des concepts informatiques. Vous allez voir dans la vidéo la succession tout le processus de démarrage du système d’exploitation Linux.

Adresse réseau MAC

Le fonctionnement des réseaux informatiques à un bas niveau, ça veut dire à un niveau proche de la transmission électrique, là où les protocoles essentiels et élémentaires formant l’infrastructure basique qui va construire cet immense réseau d’Internet. On trouve principalement 2 formes d’adresses pour distinguer une entité dans le réseau. La plus connue est sans doute l’adresse IP, c’est principalement l’adresse qui va distinguer votre ordinateur parmi des millions d’ordinateurs sur l’ensemble d’internet. C’est une adresse dite logique, parce qu’elle n’est pas fixe à la machine, et change souvent car elle est en général affectée par le fournisseur d’accès à Internet ISP. La 2e forme d’adresse est l’adresse MAC, et contrairement à l’adresse IP cette adresse est fixe à la machine et ne théoriquement pas être changée. Cette adresse est généralement appelée l’adresse physique, et plus précisément elle se trouve gravée sur la carte réseau (le NIC) de la machine. Contrairement à l’adresse IP, L’adresse MAC est normalement utilisée pour reconnaître les machines locales dans le même réseau, les machines qui ont une connexion physique directe, comme par exemple les ordinateurs, les téléphones, les tablettes connectés au même routeur dans la maison. Dans le réseau local, une machine doit avoir les 2 adresses en même temps, et c’est le protocole ARP qui permet de faire la liaison entre ces 2 adresses en détenant une base de données des adresses de toutes les machines sur le réseau. Sur la vidéo en bas de la chaîne PowerCert Animated Videos plus de détails sont donnés et la manière exacte d’utiliser ces adresses est bien expliquée.

L’adresse MAC

Le jeu de la vie de Conway

John Conway est un brillant mathématicien qui a travaillé sur un concept qui s’appelle le jeu de la vie. C’est un concept avec un raisonnement un peu particulier, consistant à créer des entités complexes évoluant à partir d’entités simples, cultivées dans un environnement régi par un nombre restreint de règles très simples. Ce jeu a permis après en mathématique, la création ce qu’on appelle les Automates Cellulaires. Mais très récemment, ça a beaucoup évolué et ça a abouti à un nouveau domaine scientifique nommé Artificial Life (ou ALife), consistant à créer de la vie artificielle, et potentiellement intelligente, dans un environnement virtuel contrôlé par des lois et des règles artificielles et des stimulus. La plus récente percée est sans doute le projet Lenia.

Le jeu de la vie par John Conway

Sur les 2 vidéos de l’excellente chaîne Youtube Numberphile, on peut voir l’explication du jeu de la vie, par Conway. Il explique entre autres, comment le jeu s’exécute, l’historique de son évolution, et les différentes études mathématiques effectuées sur ce jeu. Dans ce genre de système, Il est fascinant de voir comment avec des automatismes et des règles si simples, on peut créer des entités relativement évoluées et indépendantes. Et surtout, ça ouvre la porte sur un nombre de créations infini. Mais le principal problème pour ces systèmes, c’est qu’il est très difficile de contrôler ce processus de création. L’évolution dans ce genre de système est tellement complexe qu’il est très difficile de prédire le résultat après un nombre élevé d’itérations. Le plus important c’est d’arriver à créer des systèmes stable dans le temps.

L’invention du jeu de la vie par Conway

La question naturelle qui se pose pour un informaticien est de savoir s’il est possible de recréer un système informatique en utilisant ces automates. Et s’il est possible de les recréer physiquement, en électronique ou sur une autre technologie d’information. John Conway a déjà évoqué dans les vidéos qu’il est possible de créer des configurations pour le calcul. Ça reste à savoir s’il serait possible de recréer n’importe quel système informatique complet. Peut-être en réussissant à recréer l’une des Portes Universelles (ou même les Transistors), avec la possibilité de faire transmettre l’information, il serait possible de construire des processeurs et des composants hardwares avec des caractéristiques nouvelles et différentes. 

Introduction au jeu de Go

Le jeu de Go est un jeu de table comme les jeux d’échecs ou le jeu de dames. Peu connu mondialement mais très populaire en Asie de l’Est, notamment au Japon, en Corée du Sud, et en Chine. À l’instar des jeux d’échecs, c’est un jeu très technique qui demande beaucoup de réflexion. Comme vous allez voir sur la vidéo, ses règles sont très simples mais la quantité de stratégies qui peuvent en découler de ces règles est sans limite. Comme les jeux d’échecs, le jeu de Go baigne dans une culture propre à lui. Il possède une communauté et un nombre énorme d’adeptes, avec des associations, des clubs, des centres de formation, des livres, des cours… etc. Les joueurs haut niveau qui participent aux compétitions mondiales, sont généralement intensément entraînés dès leur plus jeune âge.

How to play Go

Beaucoup de personnes pensent que le jeu de Go est plus technique que le jeu d’échecs, mais réellement, il est difficile de présenter des arguments suffisamment solides dans une activité purement intellectuelle. En tout cas, deux événements historiques à retenir pour ces deux jeux. C’est la défaite de Garry Kasparov, le top mondial des échecs, en 1997 face à l’IA de IBM Deep Blue. Depuis, l’intelligence artificielle est jugée plus forte dans ce jeu que l’être humain. Et aussi plus récemment, en 2016, le champion du monde du jeu de Go Lee Sedol, a perdu face à l’intelligence artificielle de Google AlphaGo. Ce qui démontre la supériorité de l’intelligence artificielle face à l’humain dans ce genre d’exercice intellectuel. 

Langages de programmation indispensables à apprendre, selon Geohot ?

Geohot est le pseudonyme du célèbre hacker du nom de George Hotz. C’était un hacker bien connu dans le début des années 2000 pour ses jailbreak des téléphones iPhone, et surtout célèbre pour être le premier à pouvoir contourner la sécurité de la console de jeux Playstation 3, réputée à être très sécurisée à son époque. Après avoir eu des problèmes avec la justice, notamment avec la société Sony pour le hack de leur console, Il s’est converti à l’intelligence artificielle et a créé sa propre boîte informatique nommée comma.ai, spécialisée dans la vision des véhicules autonomes. Et après cela, juste récemment il a lancé son propre framework en deep learning appelé tinygrad.

Geohotz chez Lex Fridman

La vidéo est un extrait d’une interview avec le célèbre académicien journaliste Lex Fridman (voici le lien de sa chaîne Youtube). Dans la vidéo, on peut remarquer que Geohot prend plus ou moins le point de vue d’un hacker. Il va souligner l’importance d’apprendre des langages bas niveau, comme le langage C et l’assembleur, avec ce qui est rare pour un informaticien, les langages de description hardware comme Verilog et VHDL. En plus de quelques langages fonctionnels comme de Haskell et des langages ML (Machine Learning) comme le TensorFlow et le PyTorch. Geohot dispose d’une chaîne Youtube très intéressante (voici le lien de la chaîne), dans laquelle vous pouvez trouver des vidéos globalement de programmation et des projets qu’il fait. Il dispose aussi d’une chaîne Twitch, sur laquelle il stream de temps en temps, sur laquelle vous pouvez le contacter directement (voici le lien de la chaîne). 

L’algorithme de la recherche dichotomique

La recherche dichotomique, ou encore bien connu en anglais sous le nom de “Binary search”, est un algorithme de recherche bien connu en académie et surtout bien implanté dans le domaine pratique. Ça s’apparente aux arbres binaires dont j’ai récemment écrit un article les concernant. Ils sont apparentés dans le sens où les arbres binaires peuvent implémenter efficacement l’algorithme de la recherche dichotomique.

La vidéo en bas de la chaîne YouTube Computerphile expose très bien le concept de l’algorithme, et même que l’idée derrière cet algorithme est assez simple et intuitive. Supposons un ensemble où vous avez des valeurs ou des entrées ordonnées, comme par exemple un dictionnaire, où les entrées sont ordonnées par ordre alphabétique. La méthode la moins efficace pour chercher un mot est de parcourir les entrées une à une du début à la fin du dictionnaire. Mais en réalité, il est plus optimal de commencer la recherche au milieu. En sachant que les entrées sont ordonnées, vous pouvez deviner si la valeur recherchée se trouve dans la moitié inférieure ou dans la moitié supérieure. Vous venez ainsi d’éliminer le temps de recherche sur la moitié de l’ensemble. Et le processus ensuite va se répéter récursivement pour la moitié restante jusqu’à arriver précisément à trouver la position de votre valeur. C’est ainsi le principe de fonctionnement de la recherche dichotomique.

Algorithme de recherche dichotomique

Théoriquement, cette méthode peut à première vue sembler peu efficace, mais en réalité elle est très très puissante. Si par exemple vous avez un dictionnaire d’un million d’entrées, dans le pire des cas, vous aurez à faire 20 opérations pour trouver votre valeur. Alors que dans une recherche avec la méthode basique de parcourir toutes les entrées, dans le pire des cas, vous aurez à faire un million d’opérations. Entre 20 opérations et un million d’opérations il n’y a pas photo, clairement l’algorithme est très efficace. Et ça l’est encore plus avec des ensembles plus grands, puisque la complexité de cet algorithme est logarithmique. C’est vrai que ça semble vertigineux, si vous ne me croyez pas, vous pouvez tester ça vous-même, en utilisant une calculatrice et en divisant la valeur un million par 2, 20 fois.

Récupérer les fichiers dans une clé USB corrompue par un virus

C’est un problème que nous, les enseignants, faisons souvent face. Des Flash disque ou clés USB d’étudiants qui sont corrompus par des virus, et leurs fichiers deviennent inaccessibles à l’utilisation. Je crois qu’il est utile et nécessaire d’écrire un petit article avec une vidéo explicative pour faire apprendre aux étudiants la manière à faire pour contourner ce problème. La première chose à prendre en considération est de comprendre le fonctionnement du virus. Dans la plupart des cas, lorsqu’un virus va compromettre une clé USB, il ne va pas supprimer les fichiers déjà existants, mais il va plutôt les faire cacher, et ensuite créer des raccourcis trompeurs avec les mêmes noms des fichiers, qui vont lancer ou exécuter le code du virus si l’utilisateur appuie dessus. Ainsi, la première chose à faire, c’est de supprimer ces raccourcis. C’est très simple de distinguer un fichier ou un dossier raccourci, Il est distingué par une petite flèche, en bas de l’icône du fichier ou du dossier, et généralement il a la taille d’un kilo-octet. Après ça, il faut chercher dans le système d’exploitation à faire afficher les fichiers cachés. Ça dépend du système d’exploitation, mais généralement c’est assez simple de chercher dans les options de Windows “option des dossiers” et faire afficher les fichiers cachés et les fichiers système. Et voilà, maintenant vous pouvez accéder à vos fichiers et dossiers que le virus a fait disparaître, et vous pouvez même changer leurs propriétés pour redevenir les fichiers normaux, fichiers non cachés. La vidéo en bas est une vidéo en arabe, elle permet d’expliquer plus en détail ce processus de récupération des fichiers corrompus dans une clé USB.

Récupérer les fichiers corrompus dans une clé USB par virus

Apprendre l’électronique avec Arduino

Personnellement, je trouve la plateforme Aduino, l’un des meilleurs moyens pour permettre aux étudiants et aux initiés de faire une introduction aux systèmes embarqués. Pour faire simple, les systèmes embarqués sont des systèmes qui nécessitent des connaissances en électronique pour construire la plateforme physique, et en informatique pour programmer la plateforme. Ainsi, pour pouvoir faire du système embarqué, il faut au minimum avoir des connaissances dans les 2 disciplines.

Cours approfondi sur Arduino

J’ai déjà à plusieurs reprises écrit sur Arduino. Mais cette fois-ci, je suis tombé sur une vidéo très approfondie sur le sujet. Parce que, Premièrement, la vidéo ne nécessite de l’étudiant aucune connaissance préalable en informatique et en électronique. Et Deuxièmement, ce qui est le plus intéressant, c’est que l’étudiant n’est pas obligé d’avoir une carte Arduino matérielle pour pouvoir suivre ce cours. Car on retrouve sur la vidéo une référence à un simulateur qui arrive à faire la simulation d’Arduino et de l’électronique avec en plus une superbe interface bien agréable. C’est le simulateur online tinkercad.

La vidéo en question est celle de la chaîne YouTube du site web éducatif www.freecodecamp.org, et comme vu précédemment dans d’autres blogs, c’est un excellent site plein de nombreux cours et tutoriels en informatique.

Projet du weekend : Angry Birds-like en Python

Il n’y a pas plus fun et amusant dans la programmation que la programmation des jeux vidéo, le but étant de créer un univers vidéoludique dans lequel les joueurs peuvent s’amuser, et même parfois apprendre, ou être projeté dans un univers imaginaire et suivre une histoire, ou faire la connaissance et socialiser avec d’autres joueurs. Malgré son aspect jovial, la programmation des jeux vidéo n’est pas une tâche si facile. Contrairement à d’autres types d’application, la programmation des jeux vidéo nécessite la maitrise de nombreux aspects très différents les des autres. Comme par exemple, la programmation procédurale, la programmation objet, la programmation événementielle, la programmation concurrentielle, la simulation physique comme sur le tutoriel en bas, la programmation réseaux, la maitrise de quelques notions en algèbre et en géométrie, l’intelligence artificielle, systèmes d’exploitation pour le portage et la distribution sur différentes plateformes, une bonne base d’algorithmes et de structures de données, et surtout l’infographie (ou en Anglais computer graphics)…etc. 

Simulation physique sur Python

Sur la vidéo en haut, de l’excellente chaîne Youtube Tech With Tim, il est possible de suivre un petit tutoriel sur comment on peut développer avec Python une simulation physique similaire à la simulation utilisée dans le jeu Angry Birds. La vidéo ne se focalise pas réellement sur l’aspect jeu vidéo, mais plutôt sur l’aspect simulation physique. Il y a beaucoup de jeux dont leur gameplay se base sur la physique, mais dans la plupart du temps, ce n’est pas si facile pour un étudiant ou un débutant avec des connaissances basiques de la programmation de passer à la programmation des jeux vidéo utilisant la physique. En réalité, ce que vous allez voir sur la vidéo est une petite introduction au framework graphique PyGame, qui est utilisée le plus souvent pour le développement de petits jeux vidéo (dit jeux indé). Il est utilisé conjointement avec une autre bibliothèque appelée PyMunk dédiée à assurer la simulation physique du jeu. Normalement pour maîtriser le tout, le développeur doit investir beaucoup de son temps, mais la vidéo ici représente juste une petite introduction pour ce type de programmation pour avoir un pas de départ. 

Les arbres binaires comme structure de données

Il est évident que les structures de données en informatique font partie des mécanismes de programmation les plus importantes à maîtriser pour la programmation. Une structure de données est la manière d’organiser la donnée à l’intérieur d’un programme pour que celle-ci soit le plus efficacement possible facile à accéder et à utiliser. Les structures de données, il y en a de tous genre, du plus simple au plus compliqué, comme les tableaux, les vecteurs, les listes chaînées, les piles, les files, les anneaux, les arbres, les graphes…etc.

Cours sur les Arbres Binaires

Sans surprise, les arbres binaires (appelées en Anglais Binary Tree, Bi-Tree ou B-Tree) s’inspirent d’une schématisation arborescente, qui est considérée comme une structure de données relativement plus ou moins complexe. On peut l’imaginer simplement comme une arborescence généalogique d’une famille avec plusieurs générations. Il y a le nœud qui représente l’individu, chaque individu peut posséder plusieurs enfants, les enfants ont leurs propres enfants, et ainsi de suite. Et l’arrière-grand-père le plus haut dans la hiérarchie est appelé la racine de l’arbre, c’est celui qui représente l’arbre. Pour les arbres dits binaires, un individu ne peut posséder plus de 2 enfants. Les arbres binaires sont très utilisés, peut-être le cas le plus probable est celui de la recherche dichotomique. C’est un algorithme très efficace pour la recherche de données dans une grande base de données.

La vidéo en haut de la chaîne YouTube du site web éducatif www.freecodecamp.org illustre cette structure de donnée sous format d’un tutoriel de courte durée pour espérant apprendre à l’intégrer dans ses propres programmes.