L'informatique vous passionne ? Vous aimeriez apprendre à programmer ? Cette série de cours en ligne est faite pour vous. La programmation peut sembler difficile au premier abord, cependant c'est un univers accessible pour qui veut bien s'y intéresser.

Ce premier chapitre a pour but de répondre à toutes les questions sur ce qu'est la programmation et ce que cela implique de programmer. À la fin de ce premier chapitre vous aurez toutes les connaissances nécessaires à la création de vos premiers programmes ou applications.

La programmation c'est quoi ?

Programmation en Python
Apprendre à programmer n'a rien de difficile

Si vous avez l'impression de déjà avoir la réponse à cette question, on vous conseille tout de même de lire. En effet on pourrait vous apporter des informations que vous n'aviez pas auparavant.

Programmer signifie "Écrire les programmes informatiques correspondant à l'algorithme de résolution d'un problème." (source larousse.fr). En d'autres termes, programmer c'est donner des ordres à un terminal (ordinateur, smartphone, robot, etc.) et lui demander d'éffectuer des actions.

Votre terminal (que cela soit votre PC, Mac ou smartphone) comporte des programmes en tous genres. On peut citer parmi eux :

  • le navigateur web (avec lequel vous lisez ce cours)
  • le traitement de texte (ex. Notepad sur Windows ou TextEdit sur MacOS)
  • les jeux vidéos (Fortnite, Minecraft, World of Warcraft, etc.)
Squaremoji Island est un jeu indépendant développé en Javascript (source : http://wishforge.games)

Les programmes sont partout et permettent de faire tout (ou presque tout). Ainsi un programme peut s'apparenter à un jeu vidéo multijoueurs en 3D, une application web, un outil pour régler un problème récurrent (ex. nettoyer son PC), un mod pour ajouter de nouvelles fonctions à un jeu et bien plus encore.

Bien sûr tous les programmes n'ont pas la même taille et demandent pour certains plusieurs heures de travail et des équipes avec métiers différents. C'est le cas des jeux vidéo AAA comme Assassin's Creed qui est développé des années durant par des centaines de personnes et qui fait intervenir différents métiers.

Comme vous débutez, nous n'allons pas commencer par la création d'un jeu vidéo, çe demenderait bien trop de temps. Au lieu de cela nous allons voir les concepts de la programmation web. C'est beaucoup moins impressionant que la réalisation d'un gros projet, cependant c'est un passage obligatoire pour qui veut se lancer dans la programmation et exceller dans ce domaine.

Quel langage choisir pour programmer ?

Votre ordinateur calcule d'une manière bien différente des humains. L'ordinateur ne comprend que des instructions de "0" et de "1". C'est ce qu'on apelle du binaire. Lorsqu'on souhaite lui faire le calcul de deux nombres il le fait avec des 0 et des 1. C'est le langage qu'utilise votre poste informatique, appelé système binaire. Il ne connait que ce système et pour un humain c'est tout simplement incompréhensible (sauf pour les plus barbus).

Vous voyez donc le problème, comment parler aux ordinateur s'ils ne comprennent  que le binaire et qu'on y comprend rien ?

Parler aux ordinateurs

Votre ordinateur n'interprete ni l'anglais, ni le français ni aucune autre langue de ce monde. Et même si la programmation revient à écrire du texte compréhensible par des humains sur une machine, l'ordinateur passe d'abord par un processus (qu'on aborde juste après).

Au début de l'informatique, la programmation s'effectuait avec des cartes perforées. Une fois entrée dans les premiers ordinateurs ces cartes donnaient les ordres concernant les instructions à executer. Cette époque est aujourd'hui révolue et la programmation s'apparente aujourd'hui à de la rédaction.

Pour parler aux ordinateurs donc, les ingénieurs ont eu l'idée de développer des langages qui peuvent se traduire en binaire. L'une des tâches les plus ardues ici étant de développer le programme qui "traduit" le langage de programmation en logique binaire compréensible par la machine. Heuresement, on a pas à écrire ce programme qui fait la traduction. Il en existe plusieurs et cela de toutes les sortes.

Prenons le cas d'un calcul de mathématique simple tel que "40+2". Pour nous humain cela semble enfantin, mais pour qu'une machine puisse réaliser ce calcul il faut traduire le tout en logique binaire.

La compilation est le fait de "traduire" un programme en binaire

Quelques définitions

Maintenant que vous avez saisi le concept de base de la programmation, qui est de faire executer des tâches à une machine, passons donc aux définitions. La programmation et l'informatique comme n'importe quel autre domaine a ses définitions et son jargon. Tout au long de votre apprentissage de la programmation il va falloir retenir le vocabulaire associé aux technologies. Cela vaut pour n'importe quel langage.

Sur le schéma précédent la première case de la chaîne est tout simplement le programme que vous avez écrit dans le langage de programmation de votre choix. Ces langages prennent une forme simple et compréhensible par les programmeurs.    Il existe de nombreux langages de programmation, certains sont plus faciles que d'autres. En voici des exemples :

  • C
  • C++
  • C#
  • Java
  • Go
  • Rust
  • Python
  • PHP
  • Ruby

Cette liste est non exhaustive et nous n'avons pas classé ces langages par difficulté. Ce ne sont que des exemples.

Langage de haut niveau et langage de bas niveau

Certains langages sont plus haut niveau que d'autres et donc théoriquement plus facile à utiliser. Plus un langage est simple plus on dit que c'est un langage de haut niveau. À contrario un langage qui se rapproche du binaire est un langage de bas niveau.

Code source

Exemple de code source

Lorsqu'on crée une application ou un programme on rédige du code source. Le code source c'est votre programme écrit dans un langage de programmation. Il sera traduit plus tard en binaire. Le code source donné en exemple su l'image ci-dessus est celui de Bitcoin qui est disponible sur GitHub.

Compilation

Compilateur Rust
Rust a son propre compilateur qui permet de traduire le code Rust en binaire

La compilation est l'étape de "traduction" que nous avons vu plus haut. Traduire du code source en binaire, c'est le compiler. Le programme qu'on utilise pour cette tâche s'apelle un compilateur. Il existe des compilateurs pour chaque langage de haut niveau. En effet le C ne demande pas la même traduction que le Rust.

Pour un même langage il peut exister plusieurs compilateurs. Compiler du langage C sur Linux utilise le compilateur GCC (GNU C Compiler) alors que le faire sur Windows on utilise une technologie Microsoft.

Executable

Ghidra désassembleur
Une fois compilé le code source n'apparait plus (en théorie)

L'exécutable est le programme binaire crée par le compilateur. Sur Windows les exutables ont l'extension ".exe" pour "EXEcutable".

Chaîne de compilation simplifiée

Maintenant que les définitions sont posées, reprennons notre schéma, avec le véritable vocabulaire. On a ici une chaîne de compilation qui prend en entrée le code source que vous avez rédigé, le passe dans le compilateur et sort un executable.

C'est difficile de programmer ?

Maintenant que nous avons mis en place les bases conceptuelles de la programmation, on peut légitimement se demander si la programmation c'est difficile. Fondamentalement la programmation n'est rien de plus que donner des ordres à la machine. La programmation n'est qu'un outil pour arriver à un résultat sur vos projets. La difficulté dépend donc directement de ce que vous allez programmer. En effet programmer une calculatrice sur Windows est bien plus simple que de programmer une fusée qui pourrait aller dans l'espace.

La programmation est un outil

La programmation ne nécessite pas des connaissances avancées en mathématique. D'ailleurs la plupart des programmeurs ne font usage que des opérations comme l'addition, la soustraction, la division ou la multiplication. En revanche, si vous envisagez de programmer pour un laboratoire de physique il se peut qu'un bagage en mathématique soit alors nécessaire.  

Il n'y a pas de difficulté insurmontable, tout dépend du programme que vous souhaitez faire. Dans le cas d'un programme qui fait de la 3D comme un jeu vidéo il se peut que des notions trigonométrie soient nécessaires. Chaque cas est particulier, mais pour apprendre un langage de programmation seul vous n'avez pas besoin de connaissance supplémentaire.

Comment devenir un bon programmeur

Apprendre à programmer demande de savoir comment fonctionne un ordinateur quels sont les concepts qui y affèrent. Cela ne se fait pas en jour, mais au fur et à mesure de vos expériences et projets vous deviendrez de plus en plus compéntent.

Il convient tout de même d'avoir quelques qualités pour progresser sereinement :

  • La patience : un programme ne marche pas forcément comme vous le souhaitez du premier coup. Il faut donc perséverer et réflechir à ce que vous souhaitez faire avant de vous lancer dans le code.
  • Aimer apprendre : programmer implique aussi de devoir découvrir de nouveaux concepts ou de nouvelles technologies. Pour que vos projets avancent il va souvent falloir faire appel à la documentation, qui donne les clés pour réussir.
  • Lire l'anglais : la majorité des trucs et astuces sont en anglais sur Internet. Aussi la majorité des langages ont des mots clé en anglais. Sur les premiers programmes que vous rédigerez l'anglais ne sera peut être pas nécessaire, cependant plus vous gagnerez en compétence et moins il y a de réponse en français.
  • Réaliser des projets : pour progresser vite et bien, fixez vous des projets. Par exemple imaginez quelque chose que vous aimeriez programmer et faites-le. Vous avez envie de faire un jeu vidéo ? Découper votre jeu vidéo en module et programmez les différentes fonctions de base, comme la sauvegarde, l'affichage, etc.

Pour finir

Dans ce premier chapitre nous avons vu le concepts de la programmation :

  • Pour réaliser un programme il faut du code source, qui est écrit dans un langage de programmation.
  • Le compilateur prend le code source rédigé par le programmeur et le traduit en lengage machine en sortant un exécutable qui peut être interprété par un ordinateur grâce au système binaire. C'est la phase de compilation.
  • Il existe différents langages de programmation (ex. C, C++, Java, Python) et cela pour différents cas d'usage. Certains sont de haut niveau et d'autres de bas niveau. On en utilise pour le web, pour des programmes, des applications ou des applications spécifiques (ex. faire décoller une fusée, faire de l'intelligence artificielle).
  • Apprendre à programmer ne nécessite pas de connaissance particulière. La programmation étant un outil elle s'adapte à ce que les gens veulent faire ou réaliser comme projet.