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.

Livre sur l’infographie

L’infographie est définie comme étant le domaine de création d’image numérique assisté par ordinateur, le domaine dans lequel des logiciels spécifiques sont utilisés pour aider à modeler des images et des illustrations graphiques, la suite d’Adobe avec ses logiciels phares Photoshop et Illustrator est sans doute la plus célèbre dans le domaine. Mais le livre dont on va parler ici concerne une autre définition du terme infographie, en Anglais c’est appelé Computer Graphics, et c’est la discipline de l’informatique englobant les études de méthodes pour générer et synthétiser du contenu visuel par ordinateur, généralement de la 3D (3 dimensions) mais ça peut inclure aussi de la 2D (2 dimensions), en d’autres mots c’est l’étude des algorithmes utilisés pour reproduire les scènes en 3D comme ceux utilisées dans les jeux vidéo, la simulation 3d, les environnements virtuels, les films d’animation 3D…etc.

Computer Graphics from Scratch – couverture

Le livre avec la couverture en haut est nommé Computer Graphics from Scratch, from scratch signifie à partir de zéro. L’auteur est un enseignant en infographie et il a avec le temps réussi à rassembler une collection d’articles sur les algorithmes du domaine, et qui a décidé un jour de tout mettre dans un livre, le livre est payant mais tous les articles dans le livre sont heureusement gratuits et disponibles sur le site de l’auteur. Le livre et le site sont subdivisés en 2 parties, une pour le Raytraycing, dans laquelle des techniques et des algorithmes sont expliqués pour générer de la 3D en images de synthèse, c’est généralement la 3D utilisée dans les films et les séquence vidéos en 3D, la particularité du Raytraycing c’est que ça permet de produire de la 3D réaliste et de très bonne qualité, mais elle n’est pas temps réel, son rendu doit passer par un processus très lent de précalcul pour générer une séquence vidéo. La deuxième partie est sur la Rasterization, ça concerne le rendu en temps réel de la 3D, c’est la technologie utilisée dans les jeux vidéo, le rendu est instantanément produit sans précalcul, mais la qualité de la 3D n’est pas aussi réaliste que le Raytraycing.

Micro3D engine – un petit moteur de rendu 3D

L’avantage de ce livre c’est qu’il traite les principaux concepts de mathématique et de la géométrie, qui sont généralement assez difficiles dans d’autres livres du même genre, et arrive à les simplifier au niveau d’un lycéen, les algorithmes sont aussi présentés d’une manière très simple et très claire, sans oublier de mentionner sa taille qui est de 200 pages, le rendant très accessible. J’ai eu par le passé l’occasion de travailler sur un Rasterizer, il est présenté sur la vidéo en haut, c’est un petit moteur de rendu 3D dans lequel j’ai implémenté les éléments de base dans un Rasterizer, à savoir la translation, la rotation, le changement d’échelle, la texture, l’élimination de faces cachées…etc, malgré qu’il lui manque encore beaucoup de choses comme, le chargement d’objet 3D, le shading, l’ombrage..etc. C’est l’un des projets que j’ai beaucoup apprécié la programmation et dont j’ai beaucoup appris, le code est très petit sur approximativement 3000 lignes de code en C, il est public et disponible sur mon dépôt GitHub et que vous pouvez tester par vous même par ce lien.

Collection d’exercices en C++

J’ai fait la découverte récemment sur un livre online sur rassemblant une collection d’exercices en C++ fait spécialement pour des étudiants universitaires, l’auteur du livre est un enseignant qui a réussi avec le temps à collecter une base d’exercice. Le site de l’enseignant et le lien source du livre peuvent être utile pour plus d’informations et de ressources. Pratiquement la collection dans le livre est subdivisée en chapitres, qui traitent différents aspects du langage, comme les bases de C++, les Classes, les Templates, les Bibliothèques, les Exceptions, la programmation concurrentielle…etc.

exercises_for_programming_in_cpp-2021-04-01

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

Le Processeur éducatif nommé Scott

À cette période de l’année, à l’université, c’est le summum, le sommet de la course vers la quête de l’apprentissage pour les étudiants. J’ai pu visualiser récrément une excellente vidéo sur le thème qui intéresse particulièrement les étudiants du Module Architecture des Ordinateurs, la vidéo en bas est plus centrée sur la micro-architecture, le narrateur explique le fonctionnement interne d’un processeur, avec en plus son interaction avec les autres composants d’un PC, comme la RAM, le moniteur et le clavier.

Processeur de l’intérieur

Le processeur en question est le processeur Scott, c’est un processeur académique développé par John Scott, le processeur reste comme un processeur simpliste par rapport aux processeurs actuels, mais les concepts de base restent les mêmes. John Scott a probablement acquis les bases de la conception Hardware et la conception des processeurs tout au long de sa carrière en travaillant à la silicon valley dans des entreprises comme Intel et IBM. La conception de ce processeur a abouti au final à un livre ; But How Do It Know? – The Basic Principles of Computers for Everyone, plusieurs autres éléments et informations sont accessibles sur le site consacré à ce livre, www.buthowdoitknow.com

Le meilleur livre pratique de Machine Learning

Le Machine Learning (ou ML) est une branche importante de l’Intelligence Artificielle, la majorité des technologies actuelles d’IA utilisent des techniques de cette branche, comme par exemple les innovations DeepMind de Google ou les Enceintes Connectées, comme Google Home, Amazon Echo ou Apple HomePod, représentées sur la photo en bas. Je ne suis pas un spécialiste du domaine pour conseiller le meilleur livre pour apprendre cette discipline mais sur internet on arrive trouver des spécialistes qui peuvent nous orienter dans le choix d’un bon livre pour un bon investissement d’apprentissage dans le domaine. Le gars sur la vidéo en bas fait des vidéos de tutoriaux sur l’utilisation du langage Python dans le domaine du Data Science et Machine Learning, d’ailleurs le Python est très prisé pour ces deux disciplines. D’après l’auteur de la vidéo le livre Hands On Machine Learning with Scikit Learn and Tensorflow est le meilleur livre actuel sur le Machine Learning concernant l’aspect pratique du domaine (et non théorique), il explique dans la vidéo pourquoi d’après lui c’est le meilleur livre qui existe.

3 assistants vocaux (de gauche à droite) : Apple Homepod, Amazon Echo, Google Home

D’après ma modeste expérience dans l’éducation, le meilleur moyen d’apprendre pour un étudiant est un  »bon » livre, j’ai toujours répété à mes étudiants qu’un bon livre vous fera apprendre dix fois plus ce que vous apprendrez en suivant le cursus normal pour module donné, et c’est tout à fait logique, les bons livres sont généralement écrits par des spécialistes avec des années d’expérience, peut être les meilleurs dans le domaine, par exemple pour le module des architecture des ordinateur le livre Computer Organization and Design écrit par David A. Patterson et John L. Hennessy, les deux auteurs sont des experts reconnus mondialement, c’étaient les deux initiateurs de la conception des processeurs RISC, de facto de 99% des processeurs actuels. Les deux auteurs ont obtenu le prix Turing, l’équivalent du prix Nobel en informatique. John L. Hennessy est l’un des fondateurs du processeur MIPS étudié dans le module, il a été le tuteur des deux étudiants Larry Page et Sergey Brin lors de leur projet de fin d’étude pour la création du moteur de recherche Google. David A. Patterson est actuellement l’un des leaders de la fondation RISC-V, le processeur dit du future. Le livre contrairement au cours permet de prendre le temps et petit à petit d’approfondir et détailler minutieusement les différents aspects du domaine.

is this the best book on Machine Learning ?

Il faut savoir que l’Intelligence Artificielle est une discipline qui monte de jour en jour en puissance, ça serait probablement l’une des technologies prédominante dans les décennies à venir, investir dès les premières années dans cette technologie serait inch-allah bénéfique à long terme. Il faut juste savoir que ce domaine est réputé d’avoir une appréciation théorique lourde, et un background mathématique et statistique poussée. J’ai eu l’opportunité dans mon ingéniorat de travailler sur les Réseaux de neurones, l’une des techniques les plus répondues dans le ML, j’ai aussi travaillé sur les Support Vector Machine et je me rappelle qu’il me fallait étudier en plus des notions en mathématique non étudiés dans le cursus normal d’informaticien, comme certaines notions d’optimisations et d’analyses mathématiques, des concepts et théories en statistique…etc. Quoique le livre présenté en haut se concentre sur l’aspect pratique du domaine, l’aspect théorique reste pas moins important et non négligeable que l’aspect pratique.