Bonjour,
J'entends souvent dire que Python est un langage qui divise les temps de développement de 2 à 3 fois (voir même 5 récemment). Pour ma part je pense que Python reste un langage comme un autre, on peut lancer un IDE et coder en Python, créer des frameworks en Python, faire des builds … tout ce qu'il y a déjà dans tous les langages modernes en somme. La seule différence que je vois, c'est le langage lui-même, l'impression qui se dégage en moi est la suivante : je suis plus productif parce que mon code est plus "court". Un algo Python est toujours plus court dans un autre langage… un mythe ou une réalité ?
Objectif : Proposez un algorithme en Python, que vous considérez plus court (et donc plus rapide à produire) que dans tout autre langage (nous éviterons juste les langages Brainf*ck-like).
But : Obtenir un code aussi court (à ~10% près) qu'en Python avec n'importe quel autre langage et prouver si le mythe est bien réel.
Remarque : Tous les langages ne proposent pas les mêmes features (cf: yield/async dans les version récentes de Python par exemple), donc ce qui compte ici c'est d'avoir pour le code Python et l'autre langage la même entrée et la même sortie peu importe l'algorithme utilisé.
Contraintes :
- Le code devra être opérationnel, testé sous un site tel que ideone.com
- Pour Python : Ne pas abuser du fait qu'il soit possible de déclarer ses attributs directement dans le constructeur
- Pour les autres langages : Ne pas mettre plus d'une instruction sur une ligne (cf :
instruction1; instruction2; instructionN; // une ligne
).
Bonus pour les autres langages :
- Les accolades ne seront pas comptabilisés (
{
ou}
=> -1 ligne) - Certains langages comme Java ou C# requièrent la création d'au moins une classe pour que le code fonctionne car les fonctions globales n'existent pas (class GlobalClass{ … } => -2 lignes).
- Certains langages requièrent la présence d'une fonction main(). Les lignes de la fonction main() ne seront pas comptabilisées (
main(){ ... }
=> -2 lignes). - Rendre ses attributs private ou protected n'est pas obligatoire, vous pouvez tout mettre en public comme en Python (we're all consenting adults here ). PS: Vous remarquerez que les bonus pour les autres langages se sont pas si abusés que ça.
Nous pourrions même réaliser des microbenchmarks avec les codes. Vos exemples seront listés ici.
C'est à vous