C’est presque nostalgique pour moi ce type de contenu. Lorsque j’étais étudiant au début des années 2000 j’étais très branché dans le domaine du matériel informatique, ou ce qu’on appelle maintenant en argot le “matos informatique”. Et je me rappelle qu’à l’époque internet n’était pas aussi prolifique qu’aujourd’hui, il y avait peu de sites internet et pas du tout de YouTube spécialiste dans ce domaine. Malgré cela, il y avait une alternative qui me manque aujourd’hui et qui était tout aussi attrayante, c’était les magazines. À l’époque en Algérie, était disponible un magazine que j’appréciais particulièrement, c’était le magazine PC expert. Un magazine mensuel qui à force de le lire va vraiment renforcez vos connaissances dans ce domaine pour devenir un féru en matos.
C’est une nouvelle époque, les médias ont changé, mais le sentiment d’engouement pour ces nouvelles technologies reste le même. La vidéo en haut de la chaîne YouTube PCBuilderChannelest une excellente vidéo d’introduction au montage PC. Pour ma part, un informaticien doit connaître plus ou moins le processus de construction de sa propre machine, même si c’est un développeur ou un administrateur de base de données et que le hardware l’intéresse peu.
L’utilisation des machines virtuelles devient de plus en plus fréquente en cause principalement des vertus que cette technologie dispose et aussi surtout de la puissance fulgurante des PC modernes. Le concept des machines virtuelles est assez simple, c’est tout simplement un logiciel qui permet de simuler où émuler une autre machine sur votre PC. Par exemple vous pouvez aisément installer Linux dans une machine virtuelle créée et émulée par votre système Windows. Ça veut dire en d’autres mots que vous pouvez créer une machine virtuellement à l’intérieur de votre PC. Bien sûr la machine virtuelle va utiliser beaucoup de ressources de votre machine actuelle, mais dans la plupart des cas ça vaut le coup d’installer une nouvelle machine à l’intérieur de votre machine.
La vidéo haut et celle de la chaîne YouTube PowerCertAnimated, Je trouve que c’est une excellente vidéo qui permet d’exposer d’une façon concise le concept des machines virtuelles. En contrepartie la vidéo en bas de la chaîne YouTube ExplainingComputers est l’implémentation concrète par l’exemple de l’installation d’une distribution Linux sur une machine Windows en utilisant VirtualBox.
On va présenter là l’un des meilleurs programmeurs au monde, en tout cas selon les dires de nombreux acteurs de l’industrie du software. John Carmackest un développeur qui a su affirmer sa notoriété au fil du temps sur différents projets. Tout observateur de la carrière de John Carmack peut constater que John avait toujours un pas en avance en technologie par rapport à tout le monde, c’était ce qu’on appelle un précurseur dans son domaine.
La carrière de John avait commencé dans l’industrie des jeux vidéo, avec la société Id Software,cofondé entre autres, avec un très grand nom de l’industrie aussi nommé John Romero. Leur premier grand hit était le jeu vidéo Commander Keen, dans lequel la première fois où les PC implémentaient les jeux en side scrolling 2D (semblable au jeu comme Super Mario Bros), réservé auparavant aux consoles de jeux vidéo équipées du hardware spécifique pour le faire. John Carmack a réussi par des petits hacks à implémenter la même technique sur PC. Le 2-ième hit estWolfenstein 3D, là encore John Carmack réussit à introduire et à populariser une technologie jusque-là très marginale, et qui va bouleverser le monde vidéoludique après, “la 3D”. À la base, le PC dans les débuts des années 90 n’avait ni la puissance suffisante ni le hardware spécifique pour implémenter la 3D. Pour cela, il fallait aussi utiliser des techniques précises pour le réaliser, car le moteur du jeu Wolfenstein 3D est très particulier, ça permettait de rendre la 3D, mais avec beaucoup de restrictions. Par exemple, tous les murs de l’environnement doivent être construits avec des ongles de 90° suivant le schéma d’une matrice. C’était le prix à payer pour afficher de la 3D sur des machines à quelques mégahertz de puissance. Le 3-ème hit est Doom, et là encore c’est une grande révolution, puisque historiquement c’est le jeu qui a lancé le genre des FPS (First Person Shooter), et toujours avec des restrictions sur le moteur pour pouvoir afficher de la 3D avec quelques dizaines de mégahertz maintenant sur les machines et sans utiliser de l’accélération hardware 3D. Le 4-ème hit et le jeu Quake, est encore une fois une nouvelle révolution dans le domaine vidéoludique, c’est l’apparition du multijoueur online.
En 2013 Carmack rejoint la société d’Oculus VR pour entamer une nouvelle orientation dans sa carrière. Pour rappel la société Oculus VR est une société spécialiste dans la réalité virtuelle et la réalité augmentée. C’est une société qui a été acquise par Meta(anciennement Facebook) et ces produits représentent maintenant le fer de lance de Meta pour son projet de réalité virtuelle appelée Metaverse. Entre-temps Carmack a aussi l’occasion de toucher diverses technologies dans sa carrière, dont la technologie aérospatiale des diffusés, l’énergie de la fusion nucléaire, et récemment la technologie de l’intelligence artificielle. Plus précisément, de l’Intelligence Artificielle Générale(ou AGI). C’est de l’intelligence artificielle pour la création d’agent autonome qui a la capacité d’apprendre ce que peut apprendre un humain normal. C’est le genre d’intelligence artificielle qu’on voit dans les films de science-fiction. Apparemment c’est la technologie que Carmack consacre le plus de temps actuellement.
Sur la vidéo en haut, on peut voir un podcast ou interview de 5h de Camark fait par Lex Fridman (voici sa chaîne YouTube et le lien de son site web), un enseignant-chercheur dans l’université d’MIT, et une figure bien connue dans le domaine de l’intelligence artificielle. La discussion est très enrichissante, ça permet de mettre en lumière la manière de penser de l’un des meilleurs programmeurs au monde, et aussi avoir un aperçu sur l’univers de la haute technologie.
Que vous soyez informaticien ou pas, à un moment ou un autre dans votre vie vous aurez à faire face à ce qu’on appelle les adresses IP. Les adresses IP impliquent le plus souvent votre réseau informatique à l’intérieur de la maison et la connexion à Internet. Ils sont généralement vus par le commun des mortels comme des nombres magiques et incompréhensibles. Mais en réalité c’est tout autre, il suffit de les représenter sous format binaire pour qu’ils deviennent très simples à utiliser.
Par définition une adresse IP est une adresse unique donnée à une machine dans un réseau informatique. Ils sont utilisés pour identifier les différentes machines et de pouvoir simplifier la communication entre elles. Ajouter à cela, le masque sous-réseau qui est un mécanisme qui permet de structurer, de hiérarchiser, et de subdiviser un grand réseau en plusieurs petits réseaux plus maniables et plus organisés. La vidéo en bas de la chaîne YouTube PowerCert est une excellente vidéo pédagogique pour faire comprendre la notion l’adresse IP pour un utilisateur lambda.
Sans exagération ni de subjectivité, actuellement le langage Python et l’un des langages les plus utilisés en informatique. C’est un langage plutôt orienté vers les applications de bureau, les serveurs web, le calcul scientifique, script et automatisation des tâches, l’intelligence artificielle, data science…etc. D’un point de vue pédagogique, on peut clairement distinguer deux écoles de formation de programmation. L’école classique, comprenant entre autres le langage C et C++. C’est l’école dans la manière de formation se focalise sur une compréhension bas-niveau de la programmation, l’étudiant généralement, assimile en profondeur le fonctionnement de la machine. En contrepartie, il lui est très difficile de réaliser une application complète et finie. La deuxième école se focalise sur un apprentissage haut-niveau, et ça implique généralement le langage Python ou Javascript. Dans lesquels les concepts de programmation sont étudiés d’une manière générique, mais avec l’accès à un arsenal d’outils prêts à être utilisés à la volée. Avec cette dernière école, il devient plus facile de concevoir des applications complètes et prêtes à être utilisées, même si elles sont le plus souvent des applications ballonnées et peu optimisées. La vidéo en bas présente un cours très structuré, et très abordable pour les débutants concernant le langage Python. Ça a été réalisé par l’académicien Mosh Hamedani, possédant une chaîne YouTube et ainsi site web CodeWithMosh.com avec plusieurs vidéos et cours pour apprendre différents langages de programmation.
Voici un cheat sheet pour le langage C++, avec en plus un quick referencequi est plus détaillé et plus approfondie. Pour rappel un cheat sheet est un résumé concis pour un langage ou une librairie ou une technologie donnée. Son principal intérêt est de permettre aux programmeurs de se rappeler rapidement de tous les mécanismes avec leurs syntaxes, utilisés par le langage ou la bibliothèque. Il est de coutume de voir les cheat sheet imprimés en grand format et plaqués sur le mur du bureau de travail, à raison avoir l’accès à coups d’œil. Voici en bas sous format PDF le cheat sheet (la source du PDF).
Les quick reference sont à peu près la même chose, parfois ils sont plus détaillés et présentent des définitions un peu plus approfondies. Mais il faut bien savoir que les cheat sheet et les quick reference ne sont pas utilisés pour apprendre un langage. Ils sont le plus souvent utilisés comme un appui mémoriel pour une personne qui maîtrise déjà le langage. Mine de rien, sur une certaine mesure, ça peut être bénéfique pour une personne qui veut apprendre le langage, ça lui permettra d’avoir une vision globale, ou une carte globale du langage, qui peut utiliser pour s’orienter et cadrer son processus d’apprentissage. Le PDF du quick reference est présenté en bas (la source du PDF).
J’ai eu personnellement l’occasion dans le passé de jouer à quelques simulateurs de voiture, ces jeux prétendent l’implémentation d’une physique la plus proche possible de la physique réelle des voitures de course. Mais à ma connaissance, les parties internes de la voiture ne sont pas réellement simulées, mais plutôt décrites par des modèles mathématiques qui vont le plus possible approximer le comportement global de la physique d’une voiture. Ce qui est proposé dans cette vidéo est une autre approche, puisque les compartiments internes sont reproduits dans la simulation. En réalité, seul le moteur a été reproduit, mine de rien, c’est l’élément de loin le plus complexe et le plus influent dans la physique d’une voiture.
L’idée initiale du créateur de ce simulateur était de reproduire le son d’un moteur d’une manière procédurale pour qu’il soit le plus fidèle possible au son réel des engins à combustion. Mais clairement avec la démonstration sur la vidéo de la simulation physique, ça pourrait facilement trouver dans d’autres domaines d’utilisation. C’est vrai que la simulation physique ici n’est pas aussi pertinente qu’un simulateur s’exécutant sur un supercalculateur, avec une énorme équipe de développeurs et des millions de lignes de code, mais ça reste un simulateur relativement précis et rigoureux, puisque selon le créateur, ça a abouti à plusieurs publications scientifiques. Et surtout son code reste relativement léger, ce qui lui permet probablement la possibilité d’être intégré dans des applications grand public comme, les jeux de course, les simulateurs de voitures sur PC, simulateur d’apprentissage mécanique…etc. Vous pouvez tester le simulateur et voir son code source sur le dépôt GitHub du développeur.
Faire un classement des meilleurs langages de programmation n’est pas une mince affaire, le problème c’est qu’il est impossible d’appliquer une métrique universelle pour comparer les langages. Chaque langage possède ses propres avantages et ses propres inconvénients, et souvent ils diffèrent les uns des autres selon le type d’applications visées ou en rapport avec un domaine technologique précis. Par exemple, il y a des langages pour le développement web, le cloud, les systèmes embarqués, les systèmes distribués, les systèmes d’exploitation, les bases de données, les jeux vidéo, les applications scientifiques…etc.
Pour exclure toute subjectivité, on va se servir des résultats d’un sondage fait par le site web StackOverflow. Ce site web est très connu pour les informaticiens, il est fort probable que si vous faites du codage et que vous avez cherché la solution d’un problème en programmation sur Google, de le trouver parmi les premières réponses. Ce sondage a été fait sur la communauté de StackOverflow, et le nombre de participants est vraiment conséquent, le sondage aurait inclus pas moins de 70000 participants.
La liste des langages les plus utilisés pour l’année 2022 est comme suite (Lien du sondage pour plus de détails) :
L’algorithme de Huffman et l’un des algorithmes les plus connus dans le domaine de la compression de données comme ceux utilisés dans Winzip ou Winrar, il représente principalement l’un des premiers algorithmes de compression textuel. Le plus drôle dans la naissance de cet algorithme est qu’il a été inventé par Huffman lorsqu’il était encore étudiant à MIT, leur enseignant à cette époque leur a donné le choix de choisir entre faire l’examen ou de rédiger un rapport sur un sujet donné, Huffman a choisi d’écrire le rapport qui a ensuite en 1952 produit ce célèbre algorithme de compression.
L’algorithme se base sur le principe de donner un code binaire réduit pour les caractères les plus répandus dans un texte, et inversement de données un code plus long pour les caractères les moins fréquents. D’autre part, l’algorithme de Huffman, permet indirectement de conceptualiser les principes de la théorie de l’information créer par Shannon, une partie de la théorie stipule que l’information la plus importante est celle qui a la probabilité ou (la fréquence) la plus basse, et inversement, l’information la moins importante possède la probabilité la plus élevée dans un texte ou un bloc de données.
On peut clairement distinguer sur la vidéo en haut l’utilisation d’un arbre binaire, qui permet principalement la synthèse des codes binaires pour chaque caractère. Cet arbre va être créé, premièrement, en affectant la fréquence d’apparition de chaque caractère dans le texte, où chaque caractère va représenter les feuilles de l’arbre, les feuilles avec les fréquences les plus basses vont composer les nœuds avec une fréquence égale à la somme des fréquences des 2 feuilles, d’une manière récursive et ascendante les nouveaux nœuds créent dans l’arbre vont aussi être créés par la somme des 2 nœuds (ou feuilles) avec la plus basse fréquence, jusqu’à ce que tout l’arbre soit construit.
Cet algorithme est très important à maîtriser pour les étudiants en informatique, ça permet premièrement de comprendre les principes de la compression, et deuxièmement, d’assimiler les concepts de la théorie de l’information. La première vidéo en haut et celle de l’excellente chaîne YouTube de Tom Scott, une chaîne principalement destinée à la science. Et la deuxième vidéo pour mieux expliquer la création de l’arbre de l’algorithme de Huffman.
Tout le monde en parle, il n’y a pas longtemps des ingénieurs de Google ont fait l’annonce d’un nouveau langage qui pourrait remplacer le langage C++. Pour rappel, le langage C++ est un langage très reconnu, depuis très longtemps il est ancré dans la production de plusieurs types de logiciels. C’est un langage réputé pour sa robustesse et sa rapidité, il est particulièrement populaire dans des logiciels comme les systèmes d’exploitation, les gestionnaires de base de données, les moteurs de jeux vidéo, les systèmes embarqués, la commande industrielle…etc. Malheureusement comme tout autre langage, il possède quelques défauts intrinsèques à ses objectifs de performance et de rapidité, les deux principaux défauts sont, son manque de sécurité comparé aux autres langages, puisqu’il permet d’offrir un accès direct aux entrailles de la machine. Et deuxièmement, le bagage technique que le langage a accumulé à travers les années de sa longue vie, ce qui le rend charger avec des fonctionnalités qui sont devenues aujourd’hui obsolètes, mais le langage doit les conserver pour des soucis de rétrocompatibilité avec les anciennes applications.
Justement, le langage de programmation proposé par Google nommé Carbone, propose des solutions pour ces deux problèmes mentionnés, plus d’autres améliorations qui sont inspirées des autres langages modernes. En réalité, les ingénieurs de Google, d’après leur déclaration, ne visent pas à remplacer le C++, mais plutôt de proposer une alternative plus flexible et plus sécurisée pour les besoins de la production logicielle moderne, visant même à avoir une interopérabilité bidirectionnelle avec le code du langage C++. L’annonce du langage Carbone s’est faite dans laconférence internationale du langage C++ à Toronto, Canada. Le visionnage de la présentation est disponible sur la vidéo en bas. Il est clair que le langage est encore dans la phase expérimentale, mais les ingénieurs sont suffisamment avancés pour proposer une nouvelle syntaxe pour le langage, que vous pouvez même tester à travers une démo sur le site de compilation online Compiler Explorer. L’un des points positifs du langage Carbone est d’embrasser une approche de développement open source beaucoup plus flexible que la standardisation ISO du C++, d’ailleurs le dépôt github et un serveur Discordsont déjà mis à la disposition à quiconque veut participer à son développement.