Notions de base
Vous ne pouvez pas comprendre la récursivité
sans avoir d’abord compris la récursivité
- Client / serveur
- Navigateur
- Le W3C (World Wide Web Consortium)
- Hébergement
- Front-end / back-end
- Front-office / back-office
- Langages de programmation
- Formats de données
Client / serveur
Une grande part du web s’appuie sur une architecture que l’on appelle client / serveur. Cela veut dire qu’il y a des clients (vous), qui demandent des choses à des serveurs (les sites). Le client, au sens strict, ce n’est pas vraiment vous, c’est votre navigateur. Et le serveur, c’est un logiciel qui tourne sur une ou plusieurs machines (en fonction de l’hébergement), et qui répond à vos requêtes. Sympa.
Pour en savoir plus…
Navigateur
Les courses seraient plus simples, s’il n’y avait qu’un seul supermarché. Mais nous ne sommes pas en URSS, et il y a plein de navigateurs.
- Internet Explorer est produit par Microsoft (Bill Gates, vous voyez ? Windows ? Un effort ?). Il ne tourne que sur les PC. Personne ne l’aime.
- Chrome est produit par Google (le transhumanisme, les voitures qui se conduisent toutes seules, etc.).
- Firefox est produit par la Fondation Mozilla, et il est open source (tout le monde peut accéder au code source).
- Safari est produit par Apple (La pomme ? Les iPhones ? Steve Jobs ?). Il n’est disponible que sur Mac.
Sur les différents périphériques mobiles (tablettes, smartphones), ce sont encore d’autres variantes des mêmes navigateurs. Et bien sûr, sinon ce ne serait pas drôle, tous ces navigateurs ont des versions, et ils évoluent. C’est un tel casse-tête qu’il existe un site, Can I Use qui liste les fonctionnalités qui marchent pour chaque version de chaque navigateur. Sur cette page vous voyez les navigateurs qui sont capables de lire des vidéos nativement. Cliquez sur les petits boutons “Current aligned”, “Usage relative”, “Date relative” et “Showing all”, vous verrez c’est rigolo. Si, si, c’est rigolo.
Le W3C (World Wide Web Consortium)
Avec tout ce bazar de versions, comment ça peut marcher me direz-vous ? Parce que le World Wide Web a été imaginé par Sir Tim Berners-Lee (en Suisse, au CERN, un truc où on fait tourner des atomes dans des tuyaux) et qu’il élève patiemment son bébé depuis sa naissance en 1989 (c’est la date de naissance du Web, pas de Tim. Tim est né en 1955. Comme Steve Jobs. Passionnant, non ?). En 1994, il a fondé une organisation, le World Wide Web Consortium (W3C), pour concevoir et standardiser le Web. Depuis, le W3C met au point des standards que le reste du monde applique (souvent).
Hébergement
Reprenons notre histoire de serveurs. Si vous avez bien lu, vous savez que c’est un logiciel qui tourne sur une machine. Mais quelle machine?
Au début du Web (dans les années 1990), il s’agissait d’ordinateurs sans écran, dans des racks (des armoires). C’est ce qu’on appelle des serveurs physiques.
Puis, on a trouvé une solution pour fabriquer des sortes de “machines dans la machine”, des serveurs séparés les uns des autres, au sein de la même machine physique, qui pensent tous qu’ils sont une vraie machine autonome (flippant). C’est ce qu’on appelle des serveurs virtuels.
Enfin, on a trouvé une solution pour complètement séparer le physique et le logique: on crée des serveurs avec des ressources (disque dur, mémoire, processeurs) mais ils n’existent pas réellement, ils sont répartis sur diverses machines, d’une façon compliquée. C’est ce qu’on appelle le cloud. Et c’est qui le patron du cloud? C’est Amazon, plus précisément Amazon Web Services (AWS).
Il peut y avoir plusieurs serveurs pour la même application. Par exemple, si on s’attend à un trafic important, on peut mettre plein de serveurs côte à côte, comme des fantassins dans une armée: c’est ce qu’on appelle du multi-front. Quand les requêtes des clients arrivent, il faut les répartir entre tous ces serveurs: c’est ce qu’on appelle le load-balancing. On regarde qui est disponible, et on lui passe la requête. Et quand on peut adapter le nombre de serveurs en fonction de la charge, ça s’appelle l’auto-scale. Le scale, c’est la capacité à dimensionner les ressources de façon transparente. L’auto-scale, c’est donc du scale, qui se déclenche seul. Un peu comme la Google Car.
Ah, une dernière chose. Une application peut être hébergée sur plusieurs serveurs par couche. Un exemple classique s’appelle l’architecture trois tiers: un serveur s’occupe de la présentation, un autre s’occupe du métier, un troisième s’occupe des données. Sachant que chaque couche peut-être multi-front et auto-scalable, bienvenue dans la matrice.
Front-end / back-end
Dans les applications Web, il y a presque tout le temps 2 côtés : le front-end et le back-end.
Le front-end, c’est de l’HTML, du CSS et du JS. C’est ce qu’on voit dans le navigateur. L’HTML contient tout le contenu, avec des balises en plus. C’est absolument crucial pour le référencement. Le CSS contient l’apparence, la mise en page. Le JS contient les interactions et les événements qui ne sont pas faisables en CSS.
Le back-end, ça peut-être plein de choses, mais chez nous c’est du Ruby on Rails ou du WordPress, et des bases de données PostgreSQL ou MySQL. L’idée c’est de mettre toutes les données dans la base de données, et d’écrire une application qui écoute les demandes (les URLs appelées, avec souvent des paramètres cachés en plus), qui va chercher les données dans la base, et qui fabrique les pages HTML (et le CSS et le JS).
Et le développeur full-stack, c’est celui qui fait du front-end et du back-end!
Front-office / back-office
Assez souvent, on parle juste de back et de front, mais c’est en fait un peu confusant parce qu’il y a un autre back et un autre front: le back-office et le front-office.
Le front-office, c’est ce que l’utilisateur voit. Le visiteur classique, qu’il ait créé un compte ou pas.
Le back-office, c’est ce que l’administrateur voit. Celui ou celle qui produit le contenu, ou gère les utilisateurs, ça dépend du site. On trouve souvent le back-office à un chemin (path) du type /admin. Dans un WordPress, par exemple, le back-office est accessible au chemin /wp-admin (et aussi /admin parce que c’est pratique).
Pour fabriquer le front-office, il faut du front-end et du back-end. Et pour fabriquer le back-office? Pareil.
Langages de programmation
Le code, c’est en fait plein de langages différents, qui ont des usages, des qualités, des défauts, des histoires, des syntaxes, des environnements, des vies passionnantes. Faisons un petit tour d’horizon de ceux que nous utilisons.
HTML
L’HTML, c’est le cœur du Web, l’un des trois éléments fondamentaux inventés par Tim Berners-Lee. L’acronyme signifie Hyper Text Markup Language. Ce n’est pas vraiment un langage de programmation, mais plutôt un système de balises. Google et tous les moteurs de recherche l’analysent, pour comprendre ce dont parlent les pages. Chaque document HTML est composé d’une partie “Head”, qui donne des informations sur le document lui-même (on parle de métadonnées, c’est à dire des données sur les données), et une partie “Body”, qui contient les données à proprement parler.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
CSS
CSS signifie Cascading Style Sheets. Ce n’est pas non plus vraiment un langage de programmation, mais une liste de règles pour la mise en page. La règle ci-dessous veut dire que toutes les balises h1 (les titres de niveau 1) doivent s’afficher en typo rouge. Les règles sont composées de 2 parties : le sélecteur (de quoi en parle) et les déclarations (comment on l’affiche).
h1 {
color: red;
}
Javascript
Javascript est un vrai langage, mais très mal-aimé (comme Claude François). En vrai, il est plutôt beau, mais il a une syntaxe qui ne le sert pas vraiment, et plein de gens aimeraient qu’il soit ce qu’il n’est pas (un langage objet), et le détestent pour cette raison. C’est un peu comme reprocher à Pénélope Cruz de ne pas être Marilyn Monroe. D’une certaine façon.
alert("Hello World");
Ruby
Ruby est le plus beau langage du monde. En tous cas, tous les fans de Ruby sont d’accord là-dessus. Il a été créé par Yukihiro « Matz » Matsumoto en 1995, et est devenu très populaire avec la naissance de Ruby on Rails (RoR) en 2004 (créé par David Heinemeier Hansson). RoR est un framework pour créer des applications Web. Un framework est un cadre de travail, avec des outils et des méthodes. Ruby est élégant, concis, avec une syntaxe légère et expressive, et une communauté de développeurs de grande qualité.
puts 'Hello World'
PHP
PHP n’est pas le plus beau langage du monde. Il est né en 1994, et son papa s’appelle Rasmus Lerdorf. C’était d’abord une bibliothèque de fonctionnalités, qui a grossi, grossi, grossi, et est devenu une énorme collection d’outils, incohérente et immensément populaire. La syntaxe n’est pas particulièrement légère, les différents composants ne se comportent pas tous de la même façon, les noms ne suivent aucune règle commune. La communauté est très vaste, avec beaucoup de développeurs débutants et de nombreux développeurs autodidactes plus ou moins cultivés.
echo "Hello World";
Et il y a WordPress, la locomotive du PHP, le système de gestion de contenus (CMS) le plus populaire du monde. Créé par Matt Mullenweg en 2003, il se développe constamment depuis: 5% de l’Internet tourne avec WordPress, 50% des sites qui utilisent un CMS tournent avec WordPress. WordPress n’est pas particulièrement stable, pas particulièrement élégant, mais il fonctionne, il fait plein de choses, il a plein de thèmes graphiques (des habillages), plein de plugins (des fonctions), et il est gratuit et open source.
Objective-C
Quand Steve Jobs sort d’Apple en 1985, il crée NeXT, une société qui produit des ordinateurs haut de gamme. Il crée ensuite Pixar, mais ça n’a rien à voir. Les ordinateurs NeXT ont un système d’exploitation écrit en Objective-C, et c’est sur l’une de ces machines que Tim Berners-Lee invente le World Wide Web et programme le premier navigateur (qui s’appelle justement “WorldWideWeb”). En 1997, Apple va mal, Steve Jobs y revient et rachète NeXT, qui va devenir le socle technologique de l’iPhone, l’iPad, et Mac OS X. C’est un langage de grande qualité, très performant, très intègre mais très verbeux et assez exigeant. Il est doté d’un éditeur dédié, Xcode. Objective-C est un langage compilé, c’est à dire que le code est
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSLog (@"Hello, World!");
}
C#
C# (on dit C sharp) est un langage compilé, créé par Microsoft en 2000. Il est relativement élégant, performant, et plutôt verbeux. Les applications Windows 8 et Windows 10 natives sont faites en C#, et on peut aussi l’utiliser pour écrire des jeux vidéos, avec Unity notamment.
public class Hello1
{
public static void Main()
{
System.Console.WriteLine("Hello, World!");
}
}