S’il y a bien une catégorie de personnes que le P++ ravira, c’est bien celle qui critique PHP d’être un dialecte faiblement typé et donc cela implique la rumeur que des développeurs web de ne pas savoir coder proprement. Nous vous proposons un rapide rappel sur le typage pour les individus n’ayant fait que de la programmation web.
Notion de typage
En PHP ou en JavaScript (JS), une donnée stockée dans une variable est associée à un type. Et cela, comme dans la plupart des langages de programmation de haut niveau. Ainsi, une donnée peut appartenir à un ensemble des entiers naturels (int), à un ensemble des entiers réels à virgule flottante (float) ou être une chaîne de caractère (string) comme montré ci-dessous :
Code :
$nbInt = 10; // type int (entier);
$nbFloat= 3,14159 // type float ;
$welcome= "Bienvenue sur le site high-news.fr" // type string;
C’est-ce qu’on appelle le typage scalaire dans lequel les booléens (true, false) sont compris à l’opposé du typage complexe (array, objet).
De manière générale, le type est un ensemble de valeurs et d’opérateurs permettant d’augmenter la qualité d’un code et d’éviter les erreurs de type de données. Trois principes de base peuvent régir le typage dont la déclaration du type de donnée, le respect et la préservation de la donnée lors de l’assignation et manipulation.
De façon générale, il existe deux catégories dans lesquelles peuvent être classés les langages de programmation, i) le typage fort et ii) le typage faible. Le PHP est classé dans la seconde catégorie de parce qu’il n’est pas nécessaire de déclarer le type, mais aussi parce que l’affectation de n’importe quelle valeur à une variable typée et non nulle.
Cela pose à fortiori un problème majeur. Prenons l’exemple d’une fonction qui permet de calculer l’âge d’un individu dans dix ans. Si le programme s’attend à un nombre, il est possible de lui fournir un mot. Le programme s’exécute et sort un résultat non désiré.
Pour éviter ce problème, il est nécessaire de rajouter une condition supplémentaire permettant la vérification du type de donnée attendu. Il est donc compréhensible que l’ajout d’une telle condition alourdisse le code de façon inutile, mais aussi que le non-ajout provoque un résultat indésirable. Imaginez maintenant un code plus complexe et « mal » codé.
Code :
function calculAge($ageIndividu){
$result= $ageIndividu + 10;
return $ageIndividu."+ 10= ".$result; // Affiche "test+ 10= 10" si $ageIndividu= "test" }
function calculAge($ageIndividu){
if(is_int($ageIndividu)){ // Le code ne s'exécute pas si $ageIndividu n'est pas de type int $result= $ageIndividu + 10;
return $ageIndividu."+ 10= ".$result;
} }
P++ versus PHP
Le cofondateur de PHP, Zeev Suraski, a récemment mentionné la création d’un nouveau dialecte nommé P++. Bien que non-présenté comme un fork, le P++ serait un dialecte se détachant de la philosophie historique de PHP, pouvant faire son évolution de façon indépendante de PHP et surtout plus strict.
Prenez la version 7.1 de PHP où il est possible de faire du typage scalaire par la déclaration de la directive strict_types, imaginez-là à une échelle beaucoup plus grande et vous obtenez un « PHP fortement typé ».
Il existe néanmoins des avantages au P++. Comprenons-le bien, l’objectif consiste à pouvoir concilier les deux écoles qui sont en guerre depuis des années. Ainsi la majorité d’un code en PHP serait identique à celui du même code en P++.
Les développeurs auront la possibilité de combiner les deux langages, les exécuter dans la même application et sur un même serveur. Les fichiers binaires du P++ seraient par ailleurs identiques à ceux du PHP. Autrement dit, installez PHP ou P++ et vous installerez l’autre. Les deux langages évolueront cependant différemment.
Les fonctionnalités strictes et liées aux types seront forcément réservées au P++. Ce dernier ne devrait pas empêcher à PHP de poursuivre son bonhomme de chemin. De quoi contenter les deux écoles. Ceux qui préfèrent la nature dynamique de PHP pourront la conserver, tandis que ceux qui préfèrent le typage strict pourront se diriger vers le P++.
Interrogations sur le P++
L’une des premières interrogations est de savoir comment un fichier sera marqué comme fichier P++. S’il semble qu’il s’agisse d’un en-tête spécial déclaré au début du fichier, l’heure reste aux floues là-dessus.
La seconde interrogation provient de la complexité du code, dans le cas d’un chevauchement des deux dialectes. Certains estimeraient que l’association du P++ à PHP dans le but de contenter les deux camps ne viendra qu’alourdir les problèmes déjà présents avec PHP.
Il faut avancer, quitte à déplaire. Ainsi, certains seraient pour la sortie d’une version PHP avec typage fort et complet, mais optionnel afin d’en adoucir la transition et changer les mauvaises manières.
Ce qui prête à rire reste un sondage effectué sur le site officiel de PHP. Cinquante personnes ont voté pour savoir si le P++ est une direction dans laquelle il faudrait s’engager. Tous ont répondu par la négation.L’heure est à l’attente afin de savoir comment évoluera l’idée du P++ dans le futur et sa faisabilité en terme pratique.
Une cohabitation est-elle possible ? Faut-il faire un véritable virage dans l’évolution du PHP ou faut-il rester dans une philosophie historique qui a donné naissance à ce manque de typage fort ?