Un petit mot pour présenter une vidéo de l’université américaine de Stanford sur les langages dynamiques tels que Python et Ruby pour ne citer qu’eux. L’intervenant est un employé de chez Google, et désolé mais c’est de l’anglais … mais accrochez vous le discours est très interessant !
http://www.youtube.com/watch?v=tz-Bb-D6teE
Pour avoir un petit oeil critique sur son discours, il explique qu’au XIème siècle, avec nos ordinateurs de course à plusieurs coeurs et tout le savoir dont on dispose, la plupart des défauts des langages dynamiques sont gommés.
Le plus important de ces défaut est l’absence d’IDE permettant d’écrire plus aisément le code, et accessoirement éviter quelques sources de bugs. Les IDEs pour les langages dynamiques sont souvent réputés difficiles à écrire et peu fiables du fait de la dynamicité du code. D’après notre ami Steve Yegge, un IDE pour Python n’est pas plus difficile à écrire qu’un autre pour Java, simplement différent de par l’analyse du code.
Je n’ai rien à redire, ce gentil monsieur travaille chez Google et j’oserais pas le contredire à moins d’avoir un paquet d’arguments bétons… Cependant ce qui me chagrine un peu, c’est que pour moi l’avantage premier d’un langage dynamique est son côté “vite fait”. Peut-être suis-je un peu coincé mais j’ai tendance à penser que les langages Python et Ruby sont parfaits pour faire un petit script, qui fera une ou deux choses qui ne justifiaient pas de sortir l’artillerie lourde C++/Java/C#. Certes si l’on souhaite réaliser un projet complet avec un langage comme Python, Ruby, Groove, Boo, Scheme et j’en passe, evidemment un IDE complet sera le bienvenu.
Toutefois on peut avoir besoin d’un IDE simple, possedant les mêmes avantages de simplifité et de légèreté que les langages pour lesquels ils s’adressent. Si l’on doit sortir la même artillerie pour écrire 10 lignes de python que pour recoder le compilateur Java, alors l’interet même du langage est un peu perdu… D’où l’importance d’IDEs légers.
Les caractéristiques minimales d’un bon IDE pour langage dynamique seraient selon moi:
- Coloration syntaxique (en dessous de ça … c’est un bloc note …)
- Indentation du code automatique (pour python … il vaut mieux…)
- Auto-complétion (c’est quand même merveilleux cet outil !)
- Lancement rapide (on va dire qu’il est opérationnel en moins de 5 secondes pour faire large … ça fait toujours 10 fois moins qu’eclipse !)
- Fonctionner simplement sur un fichier, sans création d’un projet / workspace / trucbidulelong
Evidemment si en cadeau on a d’autres fonctionnalités, on ne pas pas cracher dessus ! Au cas où vous seriez actuellement en train de coder un tel IDE je vous jette quelques idées en pagaille:
- Système de template/snippet (le truc qui permet de générer une déclaration de classe, de méthode, d’attribut, un main, …)
- Génération de code standard à partir des informations d’une classe (constructeur, getter, setter, …)
- Système de renommage évolué (si je renomme self.x, je peux pas renommer la variable x passée en paramètre …)
- Pliage de code (c’est toujours pratique de replier une fonction qu’on ne retouchera plus)
Personnellement je ne connais pas d’IDE satisfaisant ces conditions, surtout celle de l’auto-complétion. Pour le reste les couteaux suisses comme emacs ou notepad++ font généralement l’affaire. Si vous connaissez un tel editeur pour Python, pour Ruby ou autre, n’hésitez pas à laisser un commentaire pour en faire profiter les autres, à commencer par moi (n’oubliez pas de spécifier sur quel OS ça tourne aussi
)