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

État de l’art sur les processeurs

La vidéo suivante est produite par la chaîne Youtube Computerphile, une excellente chaîne de se spécialisant sur diverses technologies en informatique. La vidéo est animé par le Docteur Steve Bagley (le lien de son site personnel) de l’université de Nottingham en Angleterre, il fait la présentation d’un état de l’art sur le fonctionnement externe et interne des processeurs (CPU). La présentation touche des concepts importants dans l’Architecture des Ordinateurs comme l’architecture de Von neumann, l’interaction CPU-RAM, l’exécution des instructions à travers les compartiments internes du CPU, dont Fetch, Decode, Execute, l’exécution en pipeline et le phénomène du pipeline hazard (ou risques du pipeline), qui exige un traitement spécifique pour certaines instructions.

À l’intérieur du CPU

L’introduction du cours deep-learning de MIT

Une introduction en vidéo fracassante et spectaculaire du cours de deep-learning de l’université de MIT pour cette année, l’enseignant a eu avec cette introduction de bien faire comprendre aux étudiants de quoi s’agit-il et les projections effectifs des connaissances de ce cours.

introduction au cours de deep-learning de MIT

Pour rappel, le deep-learning est une branche du machine-learning elle-même une sous-classe du domaine de l’inintelligence artificielle. On peut facilement observer que de nos jours c’est l’intelligence la plus avancée et la prometteuse en comparaison aux autres intelligences.

Cours sur les structures de données

La vidéo suivante concerne les structures de données, c’est une très bonne vidéo dans le domaine de l’algorithmique, celle-ci est produite par un ingénieur de Google du nom de William Fiset (voici sa chaine Youtube). La vidéo prend en tout plus de 8 heures, parcourant les concepts et les modèles de structures de données les plus connus d’une façon croissante, du plus simple commençant par les tableaux aux plus complexes terminant par les files à priorité indexées.

Structures de données

Dans sa globalité, la narration est très bonne, comme toutes les vidéos de la chaine Youtube du site FreeCodeCamp.org d’ailleurs. Le narrateur aborde ces concepts qui sont le plus souvent complexes, d’une façon structurée avec un rythme constant et soutenu d’accroissement de difficulté de telle sorte que l’auditeur arrive à suivre sans difficulté. Néanmoins ça reste de l’algorithmique et ça demande toujours des pauses pour des temps de réflexion.

Le langage utilisé pour l’implémentation de ces concepts est le Java, et personnellement j’ai trouvé ça désolant, le langage C ou C++ aurait été plus approprié à mon avis, sachant que ces deux langages permettent d’accentuer l’analyse sur les notions comme les pointeurs et la gestion dynamique de la mémoire qui sont cachés et faite d’une manière automatique par Java.

Il est aussi important de dire que la vidéo représente effectivement un parcours relativement approfondi sur les structures de données, mais pour bien maîtriser ces concepts, elle ne peut en aucun cas replacer la pratique par plusieurs exercices et l’implémentation réel de plusieurs programmes sur machine, et surtout faire face à de vraies erreurs de programmation et avoir à faire potentiellement du débogage sur les programmes, qui sont très bénéfiques pour ce genre de concepts.

Le compilateur online OnlineGDB.com

Le site web OnlineGDB.com, est l’un des plus connu service sur le cloud qui permet d’offrir un compilateur et un environnement de développement (IDE) aux programmeurs pour une vaste gamme de langage de programmation dont: C, C++, Java, Python, C#, PHP, Ruby, VB, Perl, Swift, Prolog, Javascript, Pascal, HTML, CSS,…etc. il permet de faire l’édition de texte, la compilation, l’édition de liens, l’exécution, le débogage,…etc. Ainsi que la sauvegarde online, le partage de code source, le téléchargement des sources…etc.

description de OnlineGDB.com

Au final, on peut dire que ce service online permet d’offrir un environnement de développement simpliste pour un énorme éventail de langages de programmation, c’est pratique pour faire des tests de langages ou faire des programmes de taille réduite pour les étudiants, mais ne peut en aucun cas rivaliser avec un vrai environnement de développement qui est généralement beaucoup plus riche et adapté pour les gros projets.

Le contenu de 3dbuzz libre d’accès

Le site 3d buzz (https://www.3dbuzz.com/) a été un excellent site web bien connu dans le domaine de la création vidéoludique, il représentait principalement une collection de vidéos sous format de tutoriels payants touchant les principaux logiciels et langages de programmation pour le développement des jeux vidéo, néanmoins une importante partie des tutoriels, comme vous pouvez le voir sur la liste en bas, n’est pas réservée que pour le domaine vidéoludique mais touche l’informatique en général. Le site malheureusement vient de fermer ses portes en cause de la mort du principal créateur du site, et la famille du défunt a voulu lui rendre hommage en libérant et mettant en accès gratuit le contenu de son site.

Le contenu du site n’est resté que quelques jours librement disponible après la fermeture du site, mais des sites miroirs comme le site miroir (https://mirror.rikuwu.com/3dbuzz/) sont actuellement disponibles répliquant les ressources du site, il existe aussi deux liens torrent (lien1 , lien2) pour télécharger tous les 205 Go du site aspiré. Il existe aussi un post reddit dédié pour la collection des différentes ressources, à consulter pour plus d’informations ou si les liens ci-dessous venaient à disparaître.

La liste de quelques outils et langages de programmation disponible sur le site est comme suite :

  • 2D Artwork
  • 2D Game Art
  • 3Ds Max
  • After Effects
  • AI Programming
  • ASP.net
  • C#
  • C# and XNA
  • Blender
  • C++
  • Building 2D games in C++
  • Building iPhone Applications
  • Unity 4.5
  • CryEngine 3
  • Developing Unity Games for the iPhone
  • Doom 3 Modding
  • Drawing
  • Game Assets in 3DS Max
  • Far Cry Level Development
  • SOLIDWORKS
  • GIMP
  • Half Life 2 Level Development
  • Objective-C
  • Android Development
  • Delphi
  • F#
  • Windows Phone 8 Development
  • Maya
  • Basic Mathmatics
  • MMO Development
  • MOBA MMO
  • Modern HTML and CSS
  • Modern JavaScript
  • OpenGL
  • Photoshop CS5
  • Python
  • Quixel Suite
  • React.js
  • UDK
  • Web Design
  • XNA
  • Zbrush
  • et plusieurs autres…

Postmortem du jeu Diablo

Le terme postmortem désigne généralement l’analyse du déroulement d’un projet fini, avec la mise en perspective de ses sucées et ses échecs. Le projet en question sur la vidéo en bas concerne le mythique jeu sur PC Diablo, considéré pour beaucoup parmi les jeux vidéo les plus influents de tous les temps. Ce postmortem est présenté par David Brevik, le principal concepteur du jeu, il fait narration sur plusieurs anecdotes arrivées lors du dévellopement, des anecdotes parfois techniques, commerciales ou sur sa vie personnelle. L’une qui m’a le plus marqué est le fait il ne savait pas programmer avec le langage C lorsqu’il a commencé le développement de Diablo, mais qu’il l’a appris au cours du projet, aussi le fait que Battle.net, la plateforme de Blizzard pour jouer online, réputé à l’époque pour sa performance, se composait uniquement d’une seule machine qui arrivait à faire gérer des milliers de joueurs dans le monde entier. C’est sûr et certain, ce postmortem est très bénéfique et enrichissant en terme technique, ludique, et émotionnel.

Postmortem de Diablo avec David Brevik