Quelles plateformes utiliser ?
Dimanche 8 juin 2008Ici volontairement je vais pas parler de langage mais plutôt de plate-forme, quand on commence à parler d’une application. Les langages vont se caractériser par plusieurs point que sont leur complexité, le spectre fonctionnel couvert (éventuellement par des frameworks disponibles), et leur facilitée de mise en oeuvre. Comme beaucoup de monde j’utilise depuis la nuit des temps des outils basés sur du php pour mes plate-formes (wordpress, dotclear, frontaux d’accès à des bases de données… ), j’ai utilisé de manière ponctuelle Ruby-on-rails, et maintenant je m’aperçois que python est de plus en plus utilisé. L’une des différences ente ces approches est principalement due au fait que d’un coté on a des langages simples plus ou moins généralistes et que de l’autre on se retrouve avec des frameworks complet beaucoup plus rigides.
Le PHP à plusieurs avantages, c’est un langage qui est dédié à la création de pages web. Ceci permet une grande souplesse dans la création sur un mode itératif, mais a comme corollaire de permettre de rendre le produit rapidement non maintenable. En effet cette approche ne favorise pas la séparation des éléments d’interface des éléments de code, a moins là aussi de mettre en oeuvre un framework. Les expériences que j’ai pu avoir de reprise de code après de longue périodes de production ont été assez dramatiques.Un autre avantage de PHP c’est son universalité, qui permet de facilement déployer les pages sur des hébergements simples. Bref PHP c’est idéal pour les petits projets, même si de grosses infrastructures l’utilisent.
RUBY ON RAILS est un framework complet construit autour du langage ruby. ce framework a comme gros avantages de facilement séparer la logique, du contenu, et de la présentation. En effet tout est formalisé au travers d’une architecture Model/Vue/Controller. Cette structuration apporte un indéniable confort dans le développement, permet de facilement structurer le développement en équipe, et apporte une capacité de maintenance du code incomparable. On retrouve un peut la démarche qu’on a par ailleurs avec une architecture J2EE, tout en étant plus abordable quand même. ROR permet une rapidité de création incomparable tant qu’on reste dans les limites du framework. Si on s’intéresse à des architecture de type interfaces riches (Flex, Air, Sylverlight), alors le découplage logique / présentation présente un intérêt non négligeable. Le gros défaut de ROR est qu’aujourd’hui les compétences sur le sujet sont assez limitées, et que lorsque la phase de maquette est terminée il faut déployer obligatoirement sur une infrastructure de type dédiée donc nécessairement avec une charge d’administration plus élevée.
Récemment je me suis intéressé à Python, ayant vu que c’était le langage utilisé par Google pour son app engine, j’ai un peu plus creusé sur ce sujet. Aujourd’hui chez Google trois langages sont utilisés : C++, Java, Python. Python sert aussi bien en interne, qu’en externe pour réaliser toutes les chaînes de traitement, réaliser tout le packaging d’application, etc… Bref on est en présence d’un langage relativement structuré, donc suffisamment directif pour permettre de produire avec une certaine qualité, et d’être suffisamment versatile en termes d’usages. Il y a une communauté, et des sources d’informations importantes autour de ce langage, et le dernier point, et pas des moindres, c’est la disponibilité en offres d’hébergement, qui peut donc en faire une plate-forme non négligeable pour déployer des applications de taille moyenne.
Même si aucun choix sur ce sujet ne peut être définitif, je pense qu’il y a des pistes intéressantes à surveiller.