Joel Spolsky a lancé un gros troll sur les performances de Ruby et s'est attiré plusieurs réponses cinglantes:
- Sur la différence entre efficacité et montée en charge.
- Sur la possibilité d'optimiser la VML de Ruby.
- Sur le fait que Ryby n'est pas fait pour les performances CPU.
Le dernier point développé est à mon avis le plus important et je l'avais déjà vu, il me semble, dans les essais de Paul Graham.
- Dans l'écriture d'un logiciel, ce qui coûte le plus cher, ce n'est pas les cycles processeurs mais les cycles développeurs. Donc il est extrêmement utile d'avoir des outils qui favorisent grandement les performances des développeurs comme Ruby.
- 90% du code n'a rien à voir avec les performances, c'est juste de l'enrobage pour faire fonctionner tout le bastringue.
- Sur les 10% restant 90% peut être optimisé par des méthodes algorithmiques (pour un classique voir l'optimisation du calcul de la suite de fibonnaci).
- Sur le 1% restant, les langages de haut niveau offre généralement (sinon ils sont inutiles) de pouvoir utiliser des systèmes de plus bas niveau (C ou ligne de commande). Pour améliorer les fonctions qui sont gourmandes en calcul, il suffit donc de les implémenter en C voir en assembleur si on tient vraiement à faire de l'optimisation de bourrin. C'est ce que font Yahoo, Amazon, Google et les autres avec des frameworks de présentation web Java, PHP, PERL et des bibilothèques optimisées en C++.
Donc moralité de l'histoire:
- Ne pas chercher à optimiser tout de suite, mais à développer les fonctionnalités.
- Utiliser le langage le plus productif pour les développements et non le plus performant pour le processeur.
- Une fois identifié les goulots d'étranglement, les optimiser en les codants dans un langage performant ce qui se résume à du C ou du C++, voir de l'assembleur pour les brutes.

