Qu’est-ce que la programmation ?
La programmation est une passerelle entre le langage humain verbal, et le langage de la machine, binaire. On peut citer 4 niveaux de langage :
- le binaire, uniquement avec des 0 et des 1
- l’assembleur, le plus proche du binaire, qui travaille avec les registres du processeur
- les langages compilés, convertis en binaire (toutes les applications et jeux sur les ordinateurs et les smartphones)
- les langages interprétés, utilisant un logiciel de conversion en direct (le langage des sites Internet, par exemple)
Les bases du langage
Le nombre d’actions que l’on fait en programmation est relativement limité, on peut les résumer à ces quelques termes :
- lire une donnée
- afficher une donnée
- écrire une donnée
- effectuer un test sur une donnée
- faire une boucle sur une collection de données
La structuration du langage informatique a permis de nombreuses optimisations, des raccourcis, des adaptations aux progrès techniques et technologiques, mais aussi un plus haut niveau d’abstraction dans la manipulation des données.
On remarquera que les langages utilisent généralement une syntaxe anglaise, cela permet une internationalisation du code.
L’algorithme
L’algorithme est la pensée humaine structurée, qui sera retranscrite dans le langage informatique de son choix. Prenons un exemple tout simple :
Si le fichier de paramétrage est présent
Alors on lit la valeur enregistrée dedans
Sinon on le crée et on y écrit la valeur par défaut
On va écrire cette petite commande en différents langages.
PHP (serveur Internet)
if (file_exists('parametre.txt') {
$handle=fopen('parametre.txt', 'r');
$value=fread($handle, 4096);
fclose($handle);
} else {
$handle=fopen('parametre.txt', 'w');
$value=fwrite($handle, 'Valeur par défaut');
fclose($handle);
}
Visual Basic
Dim value As String
If Dir("parametre.txt") Then
Open "parametre.txt" For Input As #1
value = StrConv(InputB(LOF(iFile), iFile), vbUnicode)
Close #1
Else
Open "parametre.txt" For Output As #1
Write #1, "Valeur par défaut"
Close #1
End If
La structuration langagière
Tous les langages ont une structure. En français c’est sujet-verbe-complément, et cela permet à chacun de comprendre ce que l’autre dit. Dans d’autres pays on emploie complément-verbe-sujet, ce qui peut poser problème, outre le vocabulaire spécifique !
Les premiers langages étaient des langages procéduraux, c’est-à-dire que l’intégralité du processus était listé, avec tous les cas de figure, de manière séquentielle et linéaire. Les compilateurs réécrivent les langages évolués en données binaires, de manière séquentielle et linéaire, mais le programmeur ne code plus de la sorte.
En effet, l’évolution des techniques et technologies a permis de simplifier au maximum la programmation, notamment dans le réemploi des parties répétitives. Cela évite d’inventer la roue à chaque fois ! Voici les techniques mises au point pour nous faciliter la vie (mais pas toujours) :
- les fonctions : il s’agit de rassembler un code répété par un appel, avec l’mploi de paramètres permettant de personnaliser le processus. Les fonctions peuvent également être rappelées par elles-mêmes, on les nomme récursives.
Exemple : appeler le bureau pour dire que je suis malade peut s’écrire de la forme suivante :fonction Appeler(numéro, motif)
décrocher le combiné
composer le numéro
si quelqu’un décroche OU répondeur alors
donner le motif
fin si
raccrocher
fin fonction - les classes et objets : il s’agit de structures permettant de manipuler des informations complexes et ayant des capacités de modification et d’interaction
Exemple : une classe définissant une tâche à accomplirclasse Tâche
propriété intitulé
propriété détails
propriété statutfonction Attribuer(personne)
fonction ChangerLeStatut(nouveauStatut)
fonction LaisserCommentaire(commentaire)
fin classe - les abstractions : il s’agit de classes disposant d’une structure permettant la création d’autres classes
Exemple : une classe définissant une personne et une autre un salarié, par extension de la personneabstraction Personne
propriété nom
propriété prénom
propriété dateDenaissance
propriété adresse
propriété téléphone
fin abstractionclasse Salarié étend Personne
propriété profession
propriété dateEntrée
fin classe - les injections de dépendance : il s’agit de pouvoir lier des propriétés complexes au sein d’autres classes, indépendamment de l’évolution de leur structure, mais je ne saurais vous en dire plus…
Frameworks
L’une des grandes difficultés du programmeur est de comprendre un code abstractisé par un autre programmeur ; chacun dispose de sa propre logique. Heureusement, certains codes abstractisés ont été reconnus comme des références et sont appelés des frameworks, et connaissent un fort engouement communautaire pour les comprendre et les améliorer.
Les plus connus sont :
- .NET, de Microsoft
- Synfony, de SensioLabs, en PHP
- WordPress, en PHP, pour les blogs
- PrestaShop, en PHP, pour les sites marchands
- Et bien d’autres : Joomla, Drupal, Majento, plus tous ceux que les entreprises cuisinent dans leur coin…
Que retenir ?
La différence majeure entre le langage humain et le langage informatique tient que les difficultés de compréhension ne résident pas au même endroit :
- pour les humains, c’est davantage dans le vocabulaire et dans ce que l’on est censé attendre comme actions (les sous-entendus et suppositions)
- pour la programmation, c’est davantage dans la manière dont les phrases sont construites, car les fonctions et objets masquent une grande partie de la phrase globale
Idéalement, les objets et fonctions utilisent des termes compréhensibles, permettant en quelques secondes de saisir la teneur du processus, sans les détails. Sachez néanmoins qu’il existe des logiciels pour rendre un code incompréhensible (des fonctions, classes et paramètres d’une seule lettre, suppression des retours à la ligne, etc) !