Le père des livres du langage C

La perspective d’un étudiant pour le langage C, en tout cas c’était le cas pour moi lorsque j’étais étudiant, c’est que c’est un langage différent très puissant, dans le sens où il contient des mécanismes qui ouvrent la porte sur d’innombrables possibilités, comme par exemple la dualité pointeur/tableau, ou-bien la structuration de la boucle for, les unions, les pointeurs de fonctions, le nombre variable d’arguments dans les fonctions…etc. C’était des mécanismes certes parfois difficiles à apprendre mais le potentiel acquit met le langage à des années-lumières des autres langages qu’on étudiais à la même époque en algorithmique, comme le Pascal et le Basic. J’étais toujours intrigué par l’ingéniosité des développeurs de ce langage, et la réalité comme vous allez le voir sur la vidéo en bas, c’est que le langage historiquement a passé par différentes étapes, de réussite et d’échec dans les locaux de la compagnie de recherche Bell Labs, et avec le temps le langage petit à petit a mûri et devenu ce qu’on connaît maintenant comme le langage C.

The C Programming Language – le livre

La personne sur la vidéo s’appelle Brian Kernighan, c’est le coauteur du livre en question pour cet article, mais avant d’en parler du livre il vaut mieux revoir un peu l’historique du langage C. Alors ce langage était développé par Dennis Ritchie quand il était dans les laboratoires de Bell Labs dans le but de développer avec Ken Thompson le système d’exploitation UNIX, et le rendre portable sur plusieurs machines dont le PDP11, le langage C et le système d’exploitation UNIX auront une grande influence après respectivement sur les langages de programmation et les systèmes d’exploitation. Le langage C comme mentionné préalablement, n’a pas était inventé du néant, on peut tracer sommairement son évolution en commençant par le langage CPL, suivi par BCPL, ensuite du langage B, et finalement le langage C.

The-C-Programming-Language-First-Edition

Le livre en question est appelé The C Programming Language écrit conjointement avec Brian Kernighan, la personne interviewée sur la vidéo, et Dennis Ritchie le développeur du langage C, le livre est parfois nommé K&R d’après les initiales des noms des deux auteurs. Ce livre a été pour très longtemps un best-seller et jusqu’à maintenant ça reste un livre intéressent pour apprendre le langage C, la plupart des livres en C qui ont suivi se sont fortement inspirés de lui, moi personnellement j’ai appris le C sur deux livres en français qui sont quasiment identiques dans leurs structures à original K&R. La bonne nouvelle c’est que le livre par son âge (première édition en 1978) est tombé dans le domaine public et il est devenu accessible gratuitement sur internet, d’ailleurs je vous ai mis juste en haut la version PDF à lire sur le site, il y a aussi la version sur les archives d’internet.

Fonctionnement d’un transistor

Dans l’électronique numérique le transistor prend une importance capitale concernant la conception et la création des circuits intégrés, tous les composants informatiques électroniques dans les PC et ordinateurs actuels sont dans la quasi-totalité constitués que de transistors, comprendre son fonctionnement devient primordial pour un informaticien même-s’il faut bien savoir que l’utilisation du transistor dans les circuits numériques reste basique, puisqu’il est utilisé comme un simple interrupteur électrique. La vidéo suivante de la chaîne YouTube d’électronique The Engineering Mindset donne une explication très pédagogique de l’utilisation d’un transistor.

Fonctionnement du Transistor

De l’autre côté, la compréhension du fonctionnement du transistor pour un électronicien représente une étape importante et conséquente dans sa maîtrise du domaine, car il faut savoir que le transistor et souvent pointé comme un obstacle intimidant lors de l’apprentissage de l’électronique, c’est comme les pointeurs en programmation, ils sont difficile à comprendre mais leurs maîtrises est aperçue comme un essor important en habilité de programmation.

Différence entre CPU et GPU

Le CPU (Central Processing Unit) est communément ce qu’on appel processeur, et GPU (Graphical Processing Unit) est le processeur spécifique de la carte graphique. La principale différence entre les deux, c’est le CPU est un processeur générique, et théoriquement il peut exécuter n’importe quel algorithme, de l’autre côté le GPU est spécifique pour le rendu graphique et la 3D, il n’est pas générique mais il est très puisant, beaucoup plus puisant que le processeur pour les rendus graphiques. La vidéo en bas est celle de la chaîne YouTube Computerphile est la différence entre ces deux unités de calcul est plus détaillée.

CPU vs GPU

Il existe quelques types d’applications qui sont adaptées pour l’exécution sur GPU, et il même possible d’exécuter ces types de programmes qui ne sont pas graphiques sur le GPU, cette manière de programmer s’inclut dans l’appellation connue sous GPGPU (General Purpose GPU), dans laquelle le programme en question est exécute sur le GPU et pas sur le CPU. Pour le faire, les constructeurs de cartes graphiques comme Nvidia et AMD fournissent des API (des bibliothèques) aux programmeurs leurs permettant la déportation de leurs programmes du CPU vers le GPU. C’est sûr que pas tous les programmes sont adaptés pour l’exécution sur GPU, les plus adaptés sont généralement les programmes hautement parallélisables, comme par exemple la Crypto-monnaie, l’Imagerie, la Simulation Physique, une partie de l’Intelligence Artificiel…etc.

Algorithme de Dijkstra

L’algorithme de Dijkstra est un algorithme très connu dans le milieu académique informatique, à un certain niveau il n’existe pas un étudiant qui ne connaisse pas l’algorithme de Dijkstra ou n’avoir jamais entendu parler, la raison est que c’est un algorithme très utilisé en pratique, la manifestation de son utilisation la plus simple est sans doute la recherche du plus court chemin sur les navigateurs GPS des voitures ou sur Google map, il est surtout aussi bien connu dans son utilisation dans les protocoles de routage dans les réseaux informatiques, ça permet aux données de prendre le plus court chemin sur la toile d’internet.

Algorithme de Dijkstra

La vidéo de la chaîne YouTube Computerphile est une explication de la manière dans l’algorithme fonctionne, l’algorithme de Dijkstra est un algorithme qui permet de trouver le plus court chemin dans un graphe, d’une manière simple, mathématiquement un graphe peut représenter des villes avec le chemin entre ces villes, il peut représenter les routeurs sur un réseau avec leurs connexions…etc. Malgré que les étapes par lesquelles l’algorithme passe semblent informes et compliqués ils sont aux contraires cohérents, consistants et logiques, supposons on demande à une personne de trouver le plus court chemin entre deux villes sur une carte avec de multiples villes et multiples chemins, il va intuitivement suivre les mêmes étapes de l’algorithme, ainsi il va commencer par choisir le chemin le plus court vers les villes voisines, garder la trace de tous les chemins et avancer d’une ville à l’autre, revenir sur un supposé long chemin s’il s’avère qu’il peut mener vers une ville donnée par un autre cours chemins et ainsi de suite. La façon de revenir vers d’anciens chemins est bien connue en algorithmique, ça s’appelle le backtracking, et l’algorithme de Dijkstra d’en fait parti ces algorithmes.

Machines en Lego

C’est très impressionnant ce qu’on peut faire avec des legos, le jouer pour enfants à base de petites briques de construction, d’autre part aussi il existe une version disons plus orientée pour adultes ou plutôt pour adultes en technologie, ça s’appelle lego technic et comme vous allez le voir sur la vidéo en bas, ça exige clairement des connaissances techniques en mécanique. À vrai dire les legos techniques sont utilisés comme un outil pédagogique dans certaines universités dans des domaines comme la mécanique, la robotique, l’automatisme…etc, c’est parfois aussi un outil de choix dans pas mal de laboratoires de recherche, ça sert à construire très rapidement des prototypes et des maquettes fonctionnelles dans les premières phases de construction de projets en mécanique.

La construction en Lego de Akiyuki

La vidéo est celle d’un Japonais assez connu pour ses constructions vertigineuses, il s’appelle Akiyuki et voici sa chaîne Youtube. La construction en question a été l’objet d’une compétition du nom LEGO Great Ball Contraption (GBC) et voici son site web. On peut constater que les legos techniques utilisent généralement des éléments mécaniques avancés, comme les engrenages, les poulies, les chaînes de transmission, les moteurs, les actionneurs pneumatiques, les batteries, les télécommandes à distances…etc. Il existe encore une variante des legos encore plus avancée, c’est les legos mindstorms, c’est principalement destinée à la robotique, grossièrement parlant ce sont des legos techniques avec en plus un ou plusieurs cerveaux programmables, des capteurs, des servomoteurs, des afficheurs, des caméras…etc, particulièrement ce qui concerne la robotique.

Introduction aux structures de données

Encore un autre cours sur les structures de données, d’autre part c’est très important, le cours sur la vidéo en bas est très court, la vidéo ne dure que 3 heures avec un survol sur les principales structures de données. Pour rappel, cette matière éducative traite les différentes manières d’organiser et d’arranger les données dans la mémoire pour une utilisation optimale dans la programmation, il existe plusieurs structures, chaque une d’elles a ses avantages et ses inconvénients en dépend de la nature du problème et de l’algorithme utilisé.

Cours sur les structures de données

L’auteur au début de la vidéo fait une bonne introduction sur la notion de la complexité (big O), il continue ensuite en séquence par donner de bonnes explications sur les différentes structures, sans pour autant aborder leurs implémentations et programmation, les structures abordées en question sont ; les tableaux, les vecteurs (tableaux à taille variable, appelés dans la vidéo ArrayList), les piles, les files, les listes chaînées, les listes doublement chaînées, les maps (appelés dans la vidéo dictionary), les arbres avec trois variantes, les arbres binaires de recherches, les tries (arbres pour stocker les mots d’un dictionnaire), les tas (appelés dans la vidéo heap), en terminant avec les graphes.

La vidéo est celle de la chaîne Youtube FreeCodeComp.org, la chaîne appartient au site-web éducatif du même nom, la chaîne dispose d’un nombre important de vidéos didactiques et tutoriel de très bonnes qualités sur différents aspects de l’informatique.

Fonctionnement d’un clavier PS/2

La majorité des claviers d’aujourd’hui utilisent le port USB pour communiquer avec les ordinateurs, cependant il reste une partie non négligeable des PC qui utilisent encore le port PS/2 pour leurs claviers et aussi leurs souris. La quasi-totalité des cartes-mères actuelles disposent encore de ce port, il reste parmi les ports les plus anciens actuellement encore en utilisation dans le domaine de la micro-informatique, ses premières utilisations datées dans les milieux des années 80, donc le début de la micro-informatique.

L’interface du clavier PS/2

La vidéo présente est celle de l’académicien Ben Eater, c’est une excellente vidéo comme c’est toujours le cas avec ses vidéos (voici les liens de ça chaîne Youtube et son site-web). La vidéo nous mène dans l’exploration du protocole utilisé par le clavier pour communiquer avec le PC, c’est très bien expliqué malgré que le protocole n’est pas simple ni intuitive que ça, les claviers des machines comme l’Apple II ou le Commodore 64, très célèbres machines avant lui étaient beaucoup plus simples, quoi qu’il en soit c’est un protocole indispensable à connaître si la nécessité se fait sentir pour l’utilisation d’un clavier dans un projet.

La robotique dans l’université de Stanford

La robotique est un domaine qui m’affectionne en particulier, j’ai eu par le passé la chance de participer à de petits projets en robotique qu’ils ont laissé de très bons souvenirs. Pour ce premier blog sur le sujet je voulais introduire l’atmosphère si particulière de cette discipline, par une perspective académique sur l’enseignement universitaire dans l’une des universités les plus prestigieuses et les plus connues mondialement, qui est l’université californienne de Stanford. La robotique a une particularité unique d’être une discipline se trouvant sur un chemin de croisement entre trois autres disciplines totalement différentes, qui sont la mécanique, l’électronique et l’informatique, ce qui rend son apprentissage spécial et les projets concrets commerciaux ou de recherche dans le domaine exigeant généralement des équipes pluridisciplinaires de différentes spécialités. La vidéo en bas montre des étudiants s’appliquant sur des projets divers en robotique.

Projets d’étudiants dans l’université de Stanford

Animations de trigonométrie

Les fonctions trigonométriques comme le sinus, le cosinus, la tangente…etc, sont des fonctions mathématiques géométriques très communes, très utilisées en ingénierie, en physique, en jeux vidéo, en architecture, dans l’aérospatial…etc, pour n’en citer que quelques-uns. Mais une compréhension approfondie des différents concepts et des sources et origines des fonctions trigonométriques procure un avantage considérable pour savoir les utiliser amplement avec plus de maîtrise dans la manière de les exploiter et de les pratiquer. La vidéo suivante est de la chaîne Numberphile, c’est une excellente vidéo comme il est de coutume venant de cette chaîne.

Animations en trigonométrie

Les animations faites dans cette vidéo ont étés réalisées par le logiciel Geogebra, personnellement je ne connaissais pas ce logiciel, mais apparemment à première vue il présente un grand potentiel éducatif, le terme Geogebra vient de la concaténation des deux mots geometry et algebra, c’est décrit comme un logiciel éducatif et interactif de mathématique qui permet de faire de l’algèbre, la géométrie, l’analyse et la statistique. Apparemment, ça couvre les niveaux scolaires du primaire jusqu’au universitaire, une version online est aussi disponible pour exécuter l’application sur le cloud, d’ailleurs l’exemple présenté sur la vidéo est interactivement accessible online sur ce lien.

Court tutoriel sur Arduino

Ce qui suit est une excellente petite vidéo de 15 minutes sur Arduino, elle nous vient de la chaîne Youtube Afrotechmods, une excellente chaîne sur l’électronique avec énormément de projets, d’explication et de démonstration. La vidéo est un court tutoriel sur Arduino, ça couvre l’essentiel de son utilisation avec de petits exemples.

Cout tutoriel sur Arduino