INTERVIEWS 
 
Tarek Ziadé
Développeur
Nuxéo
Tarek Ziadé (Nuxéo)
"A programme équivalent, Python permet d'aller 5 fois plus vite"
Membre actif de la communauté Python française et récent auteur d'un livre sur le sujet, Tarek Ziadé défend les langages alternatifs comme solutions préférables à la lourdeur des langages classiques.
08/02/2006
 
JDN Développeurs. Quels sont les langages novateurs que vous utilisez au quotidien ?
  En savoir plus
 Nuxéo
Dossier Logiciels libres/Open Source
  Sur le web
Nuxéo
Livre "Programmation Python"
Tarek Ziadé Exclusivement Python. C'est un choix délibéré, j'adhère à la philosophie de programmation mise en avant par la communauté Python. Il m'arrive de faire appel à d'autres langages pour des questions d'optimisation, mais je reviens toujours à Python.
Comparativement, Python m'apporte une bien meilleure productivité : un programme équivalent en C++ ou Java sera toujours 5 fois plus long à écrire, à maintenir, à déboguer… Python combine puissance et souplesse du langage, et son évolution se fait de manière très intelligente.


Depuis quand les utilisez-vous de manière professionnelle ? Quelle a été l'étincelle qui vous a fait "basculer" ?
Je travaillais auparavant avec Delphi. Je suis venu à Python par l'attrait du logiciel libre. Delphi comportait plusieurs problèmes, notamment la nécessité d'acheter des extensions, ou de les développer soi-même.
Avec Python, les verrous ont sauté : la possibilité de récupérer des codes et les remanier, la disparition de la barrière entre les gens et le code… C'est surtout l'aspect communautaire qui m'a plu, par exemple être capable de recevoir une réponse directe de Guido van Rossum [ndlr : créateur de Python] à propos d'un problème personnel.
Egalement, le fait de ne pas devoir attendre les correctifs de l'éditeur a été un grand plus. Le logiciel propriétaire met souvent le développeur dans une impasse. Le Libre dispose d'une évolution bien plus rapide, on est directement dans le feu de l'action.

Les utilisez-vous en combinaison avec des langages classiques ?
Il n'y a vraiment qu'un seul cas : pour répondre à un besoin d'optimisation. Dans une situation bien précise où Python n'est pas assez rapide, car interprété, je peux être amené à créer un module externe en C, ou mieux, en PyRex. Tous les goulots d'étranglement sont gérés dans ce cas par la couche en C, et PyRex permet d'écrire ces extension sans écrire directement du C.
Cela pose problème, car c'est plus compliqué que de faire du Python tout court. La simplicité de Python témoigne de la différence qui existe avec Java ou C++.

Reviendriez-vous à l'usage unique de ces langages classiques, au détriment de Python ?
J'aurai beaucoup de mal ! Je ferai des pieds et de mains pour ne pas y retourner.

Le projet IronPython est-il une bonne nouvelle pour Python ?
IronPython [ndlr : implémentation de Python sur .Net] est selon moi une très bonne chose, ça va exposer Python à des développeurs pas forcément sensibilisés, ce qui est un signe de pérennité. On arrivera sans doute à un langage plus démocratisé. Je ne pense pas que Python se diluera dans .Net, ce n'est pas ce qui s'est passé pour Jython [ndlr : implémentation de Python en Java] par exemple. Il restera une cohérence communautaire importante. Python sera simplement une nouvelle corde à l'arc de .Net/Mono, et cela devrait amener de nouveaux projets intéressants.

Python apporte la notion d'esthétisme à l'écriture du code"
Quels sont les principaux apports de ces langages ?
L'indentation obligatoire a été une révélation pour moi, tout comme le multiparadigme. Ne pas avoir une classe par fichier, pouvoir faire un simple script ou un gros framework, la grande souplesse… On peut utiliser Python dans tous les contextes : script système, langage glue. Là où Delphi tenait de la chasse au composant, Python dispose d'une bibliothèque standard très riche : web, serveur, RPC, hash. Dans la communauté Python, cela s'appelle batteries included, les piles sont fournies.
Python apporte une grosse différence face aux langages classiques : être en mesure d'exprimer des choses très puissantes avec une syntaxe de base.
L'API est par ailleurs très homogène, on parvient à une écriture dite pythonique : on acquiert au fur et à mesure un certain esthétisme de ce que l'on va écrire en Python, ce qui nous rend d'autant plus productif. La présence des tuples et dictionnaires change aussi la donne, avec des types abstraits de données hétérogènes.

Quels sont les manques par rapport aux langages classiques, ou les défauts ?
Le premier défaut vient de sa conception : il s'agit d'un langage dynamique et interprété donc il est logiquement plus lent. Il ne dispose également pas de typage statique, mais la philosophie de programmation pythonique fait que l'on s'adapte rapidement par rapport au typage, donc aucun regret.
Des outils manquent, également. Delphi dispose d'un éditeur très performant, et excellent pour la productivité. Python ne dispose pas d'un EDI majeur. Il y a bien sûr PyDev sous Eclipse, ou Boa Constructor, mais ils restent en-dessous d'un outil propriétaire. Le glisser/déposer de composants permet des développements très rapides et ergonomiques.

Vous sentez-vous limité par les capacités de votre langage de choix ? Quels sont les projets que vous n'aborderiez pas avec ?
Sans être un spécialiste, je pense que Python n'est pas préconisé pour l'informatique temps réel. Dans ces cas, le noyau de l'application est en général conçu en C, C++ ou Ada par exemple. Les couche supérieures peuvent ensuite êtres écrites en Python, pour bénéficier de sa souplesse. Il n'y a vraiment qu'une problématique de performances.

Devez-vous convaincre vos clients de vous laisser utiliser ce langage ?
Notre société développe des solutions basées sur CPS, lui même basé sur Zope [ndlr : serveur d'application en Python]. Les clients sont avant tout séduits par la qualité du code de CPS et de notre capacité à intégrer la solution dans toutes les situations. Le seul a priori des clients est la possible lenteur de Python, mais nous sommes en mesure de les rassurer, par des bonnes pratiques de programmation. La solution CPS/Zope autorise également un clustering natif qui permet de démultiplier sa puissance. Nous sommes spécialisés dans les intranets, ce qui nous permet de connaître à l'avance les problèmes de charge.

Zope a amené Python dans le monde professionnel"
Peut-on gagner sa vie avec Python ?
S'il s'agit d'une philosophie de l'entreprise, oui. Pour faire du Python à 100%, il faut cependant être dans une entreprise spécifique, et elles ne courent pas les rues, ça se compte pour l'instant sur les doigts de la main. On peut en vivre en faisant des applications Web. Une blague récurrente du monde Python est : quand on est étudiant, on fait du Python, mais si on veut manger, on fait du Zope. Zope a amené Python dans le monde professionnel. Chacun ensuite dans son entreprise prend Python parce qu'il correspond à ses besoins.

  En savoir plus
 Nuxéo
Dossier Logiciels libres/Open Source
  Sur le web
Nuxéo
Livre "Programmation Python"
Que pensez-vous de la montée en puissance de Ruby, et son framework Rails ?
Ruby on Rails, c'est super, ça nous active. C'est en train de provoquer une vague chez les gens qui font des outils Web, on voit arriver plein de clones qui veulent imiter les points forts de Rails, c'est extrêmement bénéfique. Ruby en tant que langage a d'ailleurs beaucoup de points communs avec Python.
Historiquement, Rails a sur Ruby le même effet que Plone [ndlr : gestionnaire de contenu basé sur Zope] a eu sur Zope. Python offre un plus grand choix de frameworks que Ruby, et je ne crois pas que l'on risque de les voir s'étouffer entre eux.
Zope est architecturé par composants, on peut donc prendre un bout de code d'untel pour l'ajouter à notre code, et donc profiter de ces frameworks. Globalement, l'arrivée de Ruby on Rails crée une bonne dynamique, et à mon goût n'est pas du tout nocive pour Python.
 
Propos recueillis par Xavier Borderie, JDN Développeurs

PARCOURS
 
 
Tarek Ziadé, 29 ans, est développeur Web spécialisé en gestion de contenu

2004 Core developer pour Nuxeo de CPS, solution de gestion de contenu libre
2003 Créateur du portail Zopeur.org
2001 Architecte logiciel backoffice pour la grande distribution

Et aussi initiateur et président de l'Association Francophone Python, auteur du livre "Programmation Python" chez Eyrolles.