Skip to content

Instantly share code, notes, and snippets.

@blouerat
Created August 2, 2012 13:26
Show Gist options
  • Save blouerat/3237092 to your computer and use it in GitHub Desktop.
Save blouerat/3237092 to your computer and use it in GitHub Desktop.
Rapide réponse à "PHP, le langage pour les geeks et les directeurs techniques"

Ceux qui codent en C/C++, Objective-C, Java, Pascal ou Ada mettent en avant le typage fort.

On va surtout mettre en avant le typage statique. Les termes typage "fort" et "faible" sont loins d'être clairement définis anyway. Un type-checking strict ne doit pas rendre le code illisible. Par exemple, on pourrait aujourd'hui écrire un typesystem qui empêche d'accéder à des cases hors des limites d'un tableau mais toutes les solutions rendent le code illisible pour le moment. Donc typesafety, oui, mais dans les limites du raisonnable.

Même en n’étant pas forcément complètement d’accord, je dois reconnaître que le risque de bugs diminue quand une variable doit être déclarée avant d’être utilisée, et qu’elle ne peut contenir que des données d’un type défini.

Le typesystem t'apporte une preuve "for all" quand un test t'apporte une preuve "for one". Dijkstra a dit : "Program testing can be used to show the presence of bugs, but never to show their absence." Le risque de bug diminue effectivement. D'autant qu'une analyse statique te le prouve à la compilation et non au runtime.

Lorsque le code est explicite, il devient généralement plus verbeux, mais aussi plus stable. Plus fiable.

Le grand classique. Non, le typage n'est pas nécessairement explicite, bien au contraire. Il est existe des mécanisme d'inférence de type comme Hindley-Milner utilisés dans le typed lambda calculus, dans Haskell, dans OCaml, dans Scala… On ne précise quasiment pas les types. Je te mets au défi d'écrire du code moins verbeux qu'en Haskell avec PHP.

[…] on veut écrire du code « rock-solid », on commence par blinder les entrées et les sorties des modules/objets/bibliothèques (appelez-les comme vous voulez) qui composent les programmes. […] Le PHP offre cette possibilité, qui devient très puissante quand on l’associe à la puissance du modèle objet.

« rock-solid » avec un type-hinting bancal. Pas convaincu.

Pour commencer, la vraie force du PHP, ce sont ses tableaux polymorphes. Ils peuvent être utilisés comme de simples listes ou comme des tableaux associatifs, et surtout ils gardent l’ordre dans lequel les données ont été insérées.

Après une partie entière réservée au typing, c'est assez énorme. List, Array, Set, Product, Tree et j'en passe sont des structures de donnée complètement différentes sur tous les plans (logique, mathématique, stockage en mémoire, performance, complexité, …) De plus, faire l'éloge de la POO de PHP et ramener array() sur le tapis, ça paraît franchement contradictoire. Ce n'est pas sérieux.

Autre détail, la gestion des namespaces est plutôt bien pensée. Au début je la trouvais étrange, comme beaucoup de gens.

Comme beaucoup de gens, effectivement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment