Rosetta Code
Rosetta Code est un site Internet de chrestomathie des langages informatiques qui implémente des algorithmes, des tâches à réaliser et divers problèmes de programmation dans de nombreux langages de programmation[1]. À l'instar de la Pierre de Rosette qui présente sur une face unique un même texte écrit dans trois langues différentes, une page du site Rosetta Code présente un même algorithme, par exemple le crible d'Eratosthène, est écrit dans une centaine de langages informatique différents[2]. Le site est codé en wiki. Il a été créé en 2007 par Michael Mol.
À la date du , les pages de Rosetta Code référencent[3]:
- 1083 tâches à programmer (ou algorithmes)
- 226 tâches à programmer (ou algorithmes) en mode "attente d'acceptation",
- 813 langages informatique,
- 75 521 exemples de code d'une tâche dans un langage de programmation.
Le contenu du site est sous licence de documentation libre GNU 1.2, mĂŞme si certains composants peuvent faire l'objet d'une double licence sous des conditions plus permissives[4].
Le site Rosetta Code illustre comment des fonctionnalités énoncées sont implémentées de manière différente dans les divers langages de programmation[5] - [6], et comment "la même" tâche est accomplie dans différents langages de programmation[7].
Données et structure
Le site Rosetta Code est organisé en une section transversale de tâches à réaliser (algorithmes ou problèmes informatique) versus une autre section celle des langages de programmation. La page d'un algorithme affiche toutes les solutions proposées par les contributeurs dans divers langages informatiques. Cela permet au visiteur, au programmeur, de comparer l’approche de chaque langage au problème énoncé.
Langages
Ce qui suit représente un petit échantillon des 743 langages de programmation référencés sur Rosetta Code[8]. Ne sont cités que les langages présents sur Wikipédia:
- Ada
- ALGOL 60
- ALGOL 68
- ALGOL W
- APL
- awk
- AutoHotkey
- BASIC (40 formes différentes)
- bc
- Bourne shell
- C
- C++
- C#
- Clojure
- COBOL
- Common Lisp
- D
- Delphi
- Erlang
- F#
- Factor
- Forth
- Fortran
- Elixir
- Go
- Groovy
- Haskell
- Icon
- J
- Java
- JavaScript
- Julia
- Kotlin
- Lisp
- m4
- Maple
- Mathematica
- MATLAB
- MASM
- Maxima
- Modula-2
- NASM
- Nim
- Objective-C
- OCaml
- Octave
- PARI/GP
- Pascal
- Perl
- PHP
- PL/I
- PowerShell
- Prolog
- PureBasic
- Python
- R
- Racket
- Raku
- REXX
- Ring
- Ruby
- Rust
- Scala
- Scheme
- Scilab
- Scratch
- Simula
- Smalltalk
- Snobol
- Swift
- Tcl
- TI-Basic
- Unix Shell
- Bourne shell (sh)
- Bourne-Again shell (bash)
- C shell (csh)
- Korn shell (ksh)
- VBA
- VBScript
- Visual Basic (VB6)
- Visual Basic .NET
- Xojo
(Pour voir une liste complète des langages informatiques contenant des exemples, voir : Rosetta Code computer langage popularity list.
Tâches
Voici un petit extrait des 961 tâches présentes dans Rosetta Code[9]. Ne sont cités que des algorithmes présents sur Wikipédia.
- Algorithme d'Euclide
- Algorithme de Dijkstra
- Algorithme de Kosaraju
- Algorithme de Markov
- Algorithme de Tarjan
- Algorithme de tracé de segment de Xiaolin Wu
- Algorithmes de tri
- Tri Ă bulles (bubble sort)
- Tri de Shell (Shell sort)
- Tri fusion (merge sort)
- Tri par insertion (insertion sort)
- Tri par sélection (selection sort)
- Tri par tas (heap sort)
- Tri rapide (quick sort)
- Algorithme X de Knuth
- Approximation de π
- Automate cellulaire
- Calcul de la date de Pâques
- Carré magique
- Chasse au Wumpus
- Chiffrement par décalage
- Chiffres romains
- Codage de Huffman
- Code Morse
- Coefficient binomial
- Combinaisons
- Compression de Lempel-Ziv-Welch
- Conjecture d'Euler
- Conjecture de Syracuse
- ContrĂ´le de redondance cyclique
- Courbes de BĂ©zier
- Courbe du dragon
- Crible d'Ératosthène
- Dîner des philosophes
- Distance de Hamming
- Distance de Jaro-Winkler
- Distance de Levenshtein
- Élimination de Gauss-Jordan
- Ensemble de Julia
- Ensemble de Mandelbrot
- Étoile de la mort
- Factorielles
- Factorisation de Cholesky
- Fonction d'Ackermann
- Fonction gamma
- Fonctions trigonométriques
- Formule de haversine
- Formule de Machin
- Fourmi de Langton
- Fractions Ă©gyptiennes
- Fractions continues
- Identité d'Euler
- Intégration numérique
- Jeu de la vie de Conway
- Loi de Benford
- MĂ©lange de Fisher-Yates
- MĂ©thode d'Euler
- MĂ©thode de Monte-Carlo
- MĂ©thode de Ruffini-Horner
- MĂ©thodes de quadrature de Gauss
- MĂ©thodes de Runge-Kutta
- Multiplication matricielle enchaînée
- Multiplication russe
- Nombre de Catalan
- Nombre de Harshad
- Nombre de Kaprekar
- Nombre de Lychrel
- Nombre de Lucas
- Nombre de Mersenne premier
- Nombre de MĂĽnchhausen
- Nombre parfait
- Nombre vampire
- Nombre de Bernoulli
- Nombres premiers
- Opération bit à bit
- Permutations
- Pi
- PGCD
- PPCM
- Problème de Josèphe
- Problème de Monty Hall
- Problème des huit dames
- Problème du cavalier
- Problème du sac à dos
- Produit de Kronecker
- Produit scalaire
- Quaternion
- Quine
- Racine de l'unité
- Règle de Cramer
- Reimerp
- ROT13
- Spirale d'Archimède
- Spirale d'Ulam
- Statistiques
- Sudoku
- Suite aléatoire
- Suite de Farey
- Suite de Fibonacci
- Suite de Kolakoski
- Surface de subdivision de Catmull–Clark
- Test de primalité de Lucas-Lehmer
- Test de primalité de Miller-Rabin
- Théorème des restes chinois
- Tic-tac-toe
- Tours de HanoĂŻ
- Transformation de Fourier rapide
- Transformée de Burrows-Wheeler
- Transformée de Hough
- Triangle de HĂ©ron
- Triangle de Pascal
- Triangle de Sierpiński
- ZĂ©ros d'une fonction
Voir aussi
Références
- Ralf Lämmel, "Software chrestomathies", janvier 2015. Publié dans "Science of Computer Programming", volume 97, pages 98-104
- « Copyrights de Rosetta Code »
- (en) « Welcome to Rosetta Code »
- (en) « Rosetta Code - Copyrights »
- Neil Walkinshaw. Chapter One: "Reverse-Engineering Software Behavior". "Advances in Computers". 2013. p. 14.
- Geoff Cox. "Speaking Code: Coding as Aesthetic and Political Expression". MIT Press, 2013. p. 6.
- Nick Montfort "No Code: Null Programs". 2013. p. 10.
- (en) « Rosetta Code - Liste des langages de programmation »
- (en) « Rosetta Code - Liste des tâches à réaliser »