Vous voulez apprendre à programmer ? Vous êtes le bienvenu !
Comment ça marche ?
La programmation, c’est un peu comme une recette de cuisine. Si on compare la programmation informatique avec la cuisine d’un grand restaurant, on pourrait dire que le Chef du dit restaurant programme sa cuisine, et qu’un ordinateur lit la recette.
Un ordinateur, pour fonctionner, à besoin qu’on lui dise quoi faire, et comment le faire. Autant pour l’être humain, ce fonctionnement est inné, mais pour la machine, c’est une toute autre histoire.
On doit dire à notre machine, quelle qu’elle soit (ordinateur, téléphone, tablette, machines de production …) ce qu’elle doit faire. Pour ce faire, on va lui donner une série d’instructions, compatibles avec la machine, et cette dernières les interprètera non pas comme elle le voudrait, mais comme on le lui a dit. Cette série d’instruction sera donnée dans un langage que la machine comprend.
Oui, mais fondamentalement, comment ça marche ?
Il y a deux cas de figures : les langages dit « compilés » (C++, ..), et les langages dit « interprété » (Python …). Nous avons aussi des langages de « haut niveau » (C++, C# …), et des langages de plus « bas niveau » (ASM, …).
Le langage utilisé dépendra avant tout de la machine qui devra comprendre les instructions, mais aussi des besoins – ce qu’on veut lui demander de faire, et des coûts (certains langages de programmation sont payants, ou des interfaces de programmation).
Quelles différences entre langage de haut niveau et langage de bas niveau ?
Plus un langage est dit de bas niveau, plus il est proche du code machine (qui ne fonctionne qu’en binaire, avec des 0 et des 1). En conséquences, il est plus difficile à lire pour un être humain. A l’inverse, plus un langage est dit de haut niveau, et plus il est généralement proche d’une grammaire compréhensible par un humain. L’ASM est le langage de plus bas niveau, ensuite on a par exemple le C et C++ qui sont déjà dit de haut niveau, et pour des langages de plus haut niveau encore, on a le C# avec lequel on peut presque faire des phases.
Quelles différences entre langage interprété et compilé ?
Un langage compilé, est un langage comme un autre, mais qui a besoin d’un compilateur pour fonctionner. Le rôle du compilateur est de transcoder le programme, généralement de haut niveau, en langage machine. Son rôle est donc très important. Un second rôle qui lui a été attribué au fil des ans, est d’optimiser le code machine pour la machine cible, pour que le code puisse être exécuté plus rapidement. Exemples de langages compilés: C++, Java …
Dans le cadre d’un langage interprété, on n’écrit pas du code pour une machine, mais pour un interpréteur. Il n’y a généralement pas d’optimisation du automatique du code, cependant, l’avantage de ce genre de langage est qu’il peut être interprété de la même façon quelle que soit la machine cible, pour peu que la machine cible est l’interpréteur de disponible. Exemples de langages interprétés: PHP, Python …
Description d’un langage de programmation
Un programme, quel qu’il soit contient un point d’entrée. Au plus bas niveau de la machine, c’est la première « ligne » du programme qui sera interprété, puis la seconde, et ainsi de suite. Dans le cadre d’un langage interprété, il en va de même en règle générale. Cependant, dans un langage plus structuré, le point d’entrée est généralement à un endroit précis du programme. Par exemple, par défaut, en langage C, c’est la fonction « main() » qui définit le point d’entrée du programme, et ce sera la première ligne de cette fonction qui sera lue par la machine.
Chaque langage possède sa propre grammaire et sa propre syntaxe. Chaque langage possède aussi des avantages et des inconvénients. Par exemple, rien qu’entre langage compilé et langage interprété, le premier sera plus rapide à s’exécuter (avantage pour la compilation), quant au second il sera « portable » d’une machine à une autre, sans recompilation (avantage pour l’interprétation).
Les points importants avant de choisir son langage
Avant de choisir un langage de programmation, il vous faut avant tout définir ce que le programme va faire. Allez-vous lui demander de faire des calculs complexes ? Ou encore d’afficher des graphiques complexes à l’écran ? Ou même de simplement envoyer des message d’une machine à une autre ? Rien que pour ces trois cas de figure, je n’utiliserais pas le même langage. Cependant, avant de choisir un langage, il faut définir l’ensemble du programme, le généraliser avec de l’algorithmie.
L’algorithme, ou comment concevoir un programme
L’écriture et la syntaxe d’un algorithme est très personnel, et ne changera pas en fonction du langage de programmation que vous utiliserez. Cependant, il va vous aider à bien concevoir un programme, et permettra par la même de distinguer les tâches à effectuer. Il existe des algorithmes généraux, et d’autre plus détaillés. L’algorithme est parfois proche d’un langage de programmation, cependant certains se schématisent. Cela permet de plus de simplifier le programme et le scinder en plusieurs parties et sous-ensembles, permettant de mieux visualiser son programme, et de requérir à d’autre programmeurs pour aider sur un ensemble ou sous-ensemble du programme.
Il existe toutefois des standards pour l’algorithmie (un standard, contrairement à une norme, n’est pas obligatoire). Si possible, restez au plus proche de ces standards, ils ont été conçus de sorte qu’un maximum de gens puisse comprendre ce que vous faites. Cependant, lorsque l’on souhaite programmer seul, et que ça le restera tout le long de l’écriture du programme, un peu de liberté ne fait jamais de mal.
Exemple d’algorithmes
Prenons un cas simple. Je souhaites réaliser un programme qui me dit si je suis majeur ou mineur, et qui devra effectuer des actions précises dans les deux cas de figure.
Algorithme général écrit:
Début
Demander Age
Si Age >= 18 Faire ActionMajeur
Sinon Faire ActionMineur
Fin
Algorithme général schématique:
Ces 2 algorithmes sont exactement les même et font la même chose, cependant, d’une ils ne sont pas écrit de la même façon, mais en plus, je ne respecte pas les standards algorithmiques. L’essentiel est de pouvoir structurer son code et ses pensées. Vous aurez remarqué que dans les deux algorithmes il y a un début et une fin. C’est simplement parce que tout programme, quel qu’il soit, quel que soit le langage utilisé ou la machine cible, comporte un début et une fin.
Note: Les plus pointilleux d’entre vous remarqueront que j’ai mis deux fins sur mon schéma, et que je n’ai pas aligné mes deux « Fin » (en plus!). Je rappelle qu’ici ce sont des exemples très personnels de programme.
Ce programme général est compatible avec n’importe quel langage de programmation. On pourrait même s’en servir ici pour en faire un circuit électronique, si on le souhaitait. C’est la magie de l’algorithme.
Conclusions
Avant d’écrire un programme, toujours penser à définir ce que va faire ce programme, qui permettra de faire un choix par la suite du langage de programmation à utiliser. Faire un algorithme permet de simplifier son programme et de le scinder en plusieurs sous-ensembles simple. On peut ensuite définir chaque sous-ensemble d’un programme en un ou plusieurs autres sous-ensembles. J’ai omis de définir les actions à réaliser dans mon programme, permettant ainsi une libre interprétation. Je reprendrais probablement cet exemple dans un autre article.
Bref, toujours bien définir les besoins de son programme, le réfléchir et le penser avant sur papier, puis ensuite définir quel langage utiliser en fonction de ce que l’on veut faire, mais aussi de ses préférences (ASP vs PHP, C vs C++, Java vs .Net, …).