10-07-2012, 06:39 PM
Scala a été fait par un ancien de l'équipe qui a travaillé sur Java, donc il connait bien la chose. Il connait la création de langages, il connait la JVM. Ça a donné un produit de qualité. PHP, c'était à la base un projet amateur, avec des fonctions avec de drôles de noms, une syntaxe très basique, pas d'originalité. On, voit les version 5.3 et 5.4 que c'est en train de changer, mais je trouve que ce langage souffre encore trop de son passé amateur.
En PHP, on peut utiliser des double guillemets pour gérer les chaînes. Mais c'est trop lent puisqu'on peut y insérer des variables, alors on a peut utiliser des simples guillemets, mais il faut concaténer. C'est pas bien grave, mais ça montre un peu le mélange dû au fait qu'il a fallu rendre le langage plus professionnel en le gardant compatible avec les vieux projets.
Juste pour mesurer la longueur d'une chaîne. On a le fameux strlen(). Malheureusement, pas de support de l'UTF-8. On ne peut pas changer la fonction, alors on a mb_strlen, iconv_strlen (ceux deux là doivent être configurés avec mb_internal_encoding('UTF-8') et iconv_set_encoding('internal_encoding', 'UTF-8') pour faire du UTF-8) ou même grapheme_strlen. On me dira que ça fait le travail, mais c'est vraiment le bordel. En Scala, il n'y a qu'une seule façon de compter le nombre de charactères et tout fonctionne en UTF-8. Simple et efficace. D'ailleurs, PHP est le seul langage à être aussi compliqué pour faire des choses simples comme ça. J'en connais pas d'autres. Tout ça parce que le passé "amateur" pèse encore lourd.
Comme je disais avec DateTime et DateTimeZone, si PHP pourrait avoir une classe native String qui fonctionne en UTF-8 et qui contient tous les méthodes nécessaires pour manipuler les chaînes, ça serait merveilleux.
En Scala j'ai adoré passer des fonctions en paramètres. On peut écrire des programmes sans utiliser de boucles. En PHP, après une petite recherche, ça semble pour se faire, mais c'est loin d'être aussi agréable qu'avec Scala.
En Scala, avec une liste "maListe", on peut faire : maListe foreach println
C'est vrai que ça ne veut rien dire. On peut écrire des programmes sans ce genre de fonctionnalité, mais PHP n'a aucune originalité de ce genre. C'est un langage simple, fade.
Pour revenir au framework Play!, j'aime qu'il soit lui-même un serveur Web, on peut comme beaucoup de frameworks qui ne sont pas en PHP. Avec PHP, il faut un Apache ou autre derrière. Ça demande souvent de configurer plusieurs couches. Par exemple, avec Play! j'ai mon fichier de routage, qui redirige les URL vers les méthodes correspondantes et elles retournent le HTML. Pas plus compliqué. En PHP (avec un serveur Web derrière), chaque URL représente une ressource (une fichier), sur le serveur. Donc /contacts/contact.php?id=3 va aller chercher le fichier contact.php dans le dossier contacts/. Souvent, ce n'est pas comme ça que sont organisés nos dossiers, alors on doit configurer Apache avec des .htaccess pour faire de la réécriture d'URL. On perd un temps fou. Pour palier ce problème, il faudrait un framework PHP indépendant.
Si au besoin, on veut Apache ou autre, rien n'empêche de l'utiliser derrière Play! également.
Je crois que le PHP est populaire parce qu'il a été fait au début du Web quand plein de gens ont commencé à s'y intéresser et que les autres langages/frameworks étaient trop chères et compliquées. Maintenant il existe des langages meilleurs et plus modernes, mais la popularité de PHP fait qu'on l'utilise encore parce qu'on trouve facilement de la main d'oeuvre et de la doc. Ça semble changer peu à peu. PHP est en perte de vitesse si je ne m'abuse.
Je dis ça, mais je suis pas un programmeur avec des années et des années d'expérience. Qu'en pensez-vous?
En PHP, on peut utiliser des double guillemets pour gérer les chaînes. Mais c'est trop lent puisqu'on peut y insérer des variables, alors on a peut utiliser des simples guillemets, mais il faut concaténer. C'est pas bien grave, mais ça montre un peu le mélange dû au fait qu'il a fallu rendre le langage plus professionnel en le gardant compatible avec les vieux projets.
Juste pour mesurer la longueur d'une chaîne. On a le fameux strlen(). Malheureusement, pas de support de l'UTF-8. On ne peut pas changer la fonction, alors on a mb_strlen, iconv_strlen (ceux deux là doivent être configurés avec mb_internal_encoding('UTF-8') et iconv_set_encoding('internal_encoding', 'UTF-8') pour faire du UTF-8) ou même grapheme_strlen. On me dira que ça fait le travail, mais c'est vraiment le bordel. En Scala, il n'y a qu'une seule façon de compter le nombre de charactères et tout fonctionne en UTF-8. Simple et efficace. D'ailleurs, PHP est le seul langage à être aussi compliqué pour faire des choses simples comme ça. J'en connais pas d'autres. Tout ça parce que le passé "amateur" pèse encore lourd.
Comme je disais avec DateTime et DateTimeZone, si PHP pourrait avoir une classe native String qui fonctionne en UTF-8 et qui contient tous les méthodes nécessaires pour manipuler les chaînes, ça serait merveilleux.
En Scala j'ai adoré passer des fonctions en paramètres. On peut écrire des programmes sans utiliser de boucles. En PHP, après une petite recherche, ça semble pour se faire, mais c'est loin d'être aussi agréable qu'avec Scala.
En Scala, avec une liste "maListe", on peut faire : maListe foreach println
C'est vrai que ça ne veut rien dire. On peut écrire des programmes sans ce genre de fonctionnalité, mais PHP n'a aucune originalité de ce genre. C'est un langage simple, fade.
Pour revenir au framework Play!, j'aime qu'il soit lui-même un serveur Web, on peut comme beaucoup de frameworks qui ne sont pas en PHP. Avec PHP, il faut un Apache ou autre derrière. Ça demande souvent de configurer plusieurs couches. Par exemple, avec Play! j'ai mon fichier de routage, qui redirige les URL vers les méthodes correspondantes et elles retournent le HTML. Pas plus compliqué. En PHP (avec un serveur Web derrière), chaque URL représente une ressource (une fichier), sur le serveur. Donc /contacts/contact.php?id=3 va aller chercher le fichier contact.php dans le dossier contacts/. Souvent, ce n'est pas comme ça que sont organisés nos dossiers, alors on doit configurer Apache avec des .htaccess pour faire de la réécriture d'URL. On perd un temps fou. Pour palier ce problème, il faudrait un framework PHP indépendant.
Si au besoin, on veut Apache ou autre, rien n'empêche de l'utiliser derrière Play! également.
Je crois que le PHP est populaire parce qu'il a été fait au début du Web quand plein de gens ont commencé à s'y intéresser et que les autres langages/frameworks étaient trop chères et compliquées. Maintenant il existe des langages meilleurs et plus modernes, mais la popularité de PHP fait qu'on l'utilise encore parce qu'on trouve facilement de la main d'oeuvre et de la doc. Ça semble changer peu à peu. PHP est en perte de vitesse si je ne m'abuse.
Je dis ça, mais je suis pas un programmeur avec des années et des années d'expérience. Qu'en pensez-vous?