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) :

  1. 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 

  2. 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 à accomplir

    classe Tâche
        propriété intitulé
        propriété détails
        propriété statut

        fonction Attribuer(personne)
        fonction ChangerLeStatut(nouveauStatut)
        fonction LaisserCommentaire(commentaire)
    fin classe 

  3. 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 personne

    abstraction Personne
        propriété nom
        propriété prénom
        propriété dateDenaissance
        propriété adresse
        propriété téléphone
    fin abstraction

    classe Salarié étend Personne
        propriété profession
        propriété dateEntrée
    fin classe 

  4. 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) !