C / C++

Le langage C (procédural) et C++ (orienté objet) sont des langages compilés, bas niveau, c’est à dire qu’ils sont au plus proche du comportement de l’ordinateur. Cela implique beaucoup plus de possibilités de contrôle (allocation manuelle et adressage de mémoire), un code plus optimisé en terme de performances, mais aussi un code plus verbeux et plus difficile à s’approprier.

Les bibliothèques graphiques (SDL et Qt)

La bibliothèque SDL est une bibliothèque logicielle libre qui permet de créer des fenêtres graphiques à partir d’un programme en console : on peut aisément contrôler le positionnement des images ou de textes. Elle est très utilisée dans la création de jeux vidéos en 2D car elle permet également de manipuler facilement des sprites.

La bibliothèque Qt est une API écrite en C++ qui permet de créer des programmes complexes rapidement avec en agençant des éléments graphiques appelés widgets.

Carte d’interface E/S (VM167)

Le C/C++ se prête particulièrement à des systèmes embarqués où les ressources comme la mémoire ou la vitesse d’exécution sont limités.

La carte VM167, on peut voir le port mini-USB et les différentes broches E/S.

La carte VM167 permet de contrôler des E/S (Entrées / Sorties) digitales ou analogiques dans un programme écrit en C/C++, leur tensions varient de 0 à 5 Volts. Une fois les drivers installés et les fichiers .h et .c inclus dans le programme, on peut commencer à utiliser les fonctions de la bibliothèque pour communiquer avec le monde extérieur via les E/S. De ce point de vue elle ressemble beaucoup aux microcontrôleurs PIC (programmés avec MPLAB X IDE) et aux cartes Arduino (programmées avec Arduino IDE), à ceci près qu’ ici tout ce passe en temps réel suivant le déroulement du programme.

PHP

Le PHP procédural

Le langage PHP est un langage serveur permettant de rendre des portions de pages web dynamiques en insérant du code PHP directement dans le HTML. Cette façon de procéder rend son apprentissage assez intuitif.

Il nécessite l’installation d’un serveur local comme WAMP qui permet d’interpréter localement des scripts PHP, Apache (serveur HTTP) est également intégré. La communication avec une base de données, par exemple MySQL, se fait à l’aide de l’objet PDO, qui permet de faire des requêtes préparées.

L’outil PHPMyAdmin, installé avec WAMP, permet de gérer manuellement la base de données MySQL (création des tables, création des champs, insertions des données, etc…).

Le PHP avec le framework Symfony2

Le framework Symfony2 est basé sur le modèle MVC (Modèle-Vue-Contrôleur), il permet d’avoir un code structuré. Il possède également son propre gestionnaire de paquets appelé Composer et permet d’avoir un système d’authentification facile à mettre en place avec FOSUserBundle.

Côté vue, on peut faire de l’héritage de template, pratique pour rendre un menu dynamique au lieu d’un simple include(). Il utilise le moteur de template TWIG pour injecter le contenu provenant du contrôleur dans le HTML. Côté modèle, il est aisé de faire des opérations CRUD (Create, Read, Update, Delete) avec Doctrine.

HTML / CSS

Le HTML (HyperText Markup Language) est un langage descriptif, c’est à dire composé de balises spécifiques à chaque type d’éléments sur la page (texte, titre, lien, tableau, liste, images, etc…), c’est le squelette de la page web. Des sélecteurs sur les balises permet d’y ajouter des règles CSS. Cette structure et son contenu jouent un rôle important dans le référencement naturel de la page web.

Le CSS (Cascading Style Sheets, feuilles de style en cascade en français) agrémente l’interface utilisateur (IU) en mettant en forme le HTML avec un style (couleurs, formes, placement des éléments, etc…). Ce style peut être interprété de façon légèrement différente selon les navigateurs, ce qui peut causer des problèmes de compatibilité.

La dernière version (CSS3) permet de gérer les animations et les transitions, permettant de s’affranchir du JavaScript pour la gestion de ces effets. Le CSS permet le responsive design grâce aux media queries : le contenu s’adapte alors automatiquement à la largeur du terminal (ordinateur, tablette ou mobile). Pour le développeurs le pattern le plus utilisé est le mobile-first, c’est à dire d’abord concevoir l’application sur mobile, puis d’étendre les règles CSS sur les formats plus grands. Ce langage a bénéficié de nombreux frameworks qui lui fournissent des classes prêtes à l’emploi.

Ces frameworks CSS, comme Bootstrap, Materialize CSS ou Semantic UI ont tous un style qui leur est propre, et qui les rendent parfois reconnaissables, si il ne sont pas trop personnalisés. Ils disposent d’un système de grid (grille en français) où viennent se placer les éléments HTML. Enfin, ils permettent enfin de gagner du temps en habillant le code avec un joli style déjà prêt sans que le développeur soit contraint de coder lui-même l’ensemble des classes CSS.

JavaScript

Le langage JavaScript est un langage non typé, front-end et basé sur les événements généré par le DOM. Au début du web, c’était un langage cantonné à de simples effets visuels sur la page web, mais il a rapidement été possible de communiquer avec le serveur via des requêtes AJAX pour mettre à jour des portions de pages sans les recharger entièrement.

L’arrivée de la bibliothèque JQuery a permis de considérablement simplifier les développements JavaScript, tous les frameworks CSS l’utilisent aujourd’hui.

NodeJS est une plateforme logicielle qui permet d’écrire du JavaScript côté serveur, et donc développer des applications full-stack (back-end et front-end) dans un même langage.

La nouvelle syntaxe ES6, aussi appelée ES 2015 introduit de nouveaux éléments syntaxiques tels que l’utilisation du mot-clé let au lieu de var, et des fonctions fléchées, améliorant au passage la lisibilité du code.

Des frameworks front-end sont apparus, transférant une partie de la logique métier du serveur au client, comme par example le routing, et reléguant le serveur à une simple API communiquant avec une base de données. Les trois principaux frameworks JavaScript front-end sont AngularJS, Angular2+, ReactJS et VueJS.