La piedra de Rosetta es un fragmento de una antigua estela egipcia de granodiorita inscrita con un decreto publicado en Menfis en el año 196 antes de nuestra era en nombre del faraón Ptolomeo V. El decreto aparece en tres escrituras distintas: el texto superior en jeroglíficos egipcios, la parte intermedia en escritura demótica y la inferior en griego antiguo. Gracias a que presenta esencialmente el mismo contenido en las tres inscripciones, con diferencias menores entre ellas, esta piedra facilitó la clave para el entendimiento moderno de los jeroglíficos egipcios.
Quienes estudian programación de computadoras tienen que resolver muchas veces problemas que antes ya se han resueltos. Son, en alguna medida, ejercicios que hay que hacer, pues dan experiencia, enseñan algunos trucos de programación, etcétera. Sin embargo, hay una dificultad: existen muchos lenguajes y cada uno tiene sus particularidades. Por ello, el sitio RossetaCode es una buena idea, pues trata de resolver los algoritmos más comunes en todos los posibles lenguajes de programación. Este sitio es el equivalente moderno de la piedra de Rosetta para programadores.
Esta página web está clasificada por problemas que caen en la categoría de «simples», como bien puede ser el típico programa «Hello World!», el cual es ya un clásico desde que Dennis Ritchie lo pusiera como su primer ejemplo en su libro sobre el lenguaje de programación C. En esta categoría se encuentran muchos programas que son meras demostraciones de las instrucciones que los lenguajes tienen.
Hay también una categoría dedicada a las tareas de programación en borrador, es decir, una lista de programas que aún esperan más implementaciones antes de que puedan ser promovidas la categoría de tareas. Pero tal vez lo más interesante es que cualquiera puede proponer una nueva tarea a programar siguiendo ciertos lineamientos.
Estas tareas en borrador no significa que nadie haya intentado programarlas antes, sino que no tienen el suficiente número de lenguajes en donde se haya implementado de forma que temporalmente se mantienen en esta sección.
Podemos hallar el problema de Babbage, la medición del uso del CPU en Linux hasta incluso un programa completo de ajedrez. Hay algunos métodos para ordenar datos que merecen verse con atención y también pueden encontrarse problemas para generar un «parser».
En este sitio, que no tiene gráficas prácticamente, que parece muy «aburrido», por decirlo de alguna manera, hay una cantidad de información muy valiosa para todo aquel que le guste la programación.
La categoría «Tareas de programación» tiene una buena colección de un mismo algoritmo (para una tarea en específico), resuelto en una buena cantidad de lenguajes de programación. Por ejemplo, una tarea interesante es generar números al azar. La tarea en específico es generar una colección de mil números distribuidos al azar, de manera que tengan una media de 1.0 y una desviación estándar de 0.5. Es interesante saber que muchas bibliotecas de matemáticas generan números al azar que se distribuyen uniformemente. He aquí los ejemplos en C y en Go (un lenguaje de Google):
La colección de tareas está en orden alfabético, en inglés, y contiene un muy extenso número de tareas resueltas. Hay algunas sencillas como la que pusimos de ejemplo, aunque hay otras que son parte de por ejemplo, procesamiento de imágenes (pasar una imagen en color a tonos de gris). Y hay también juegos, manejo de números, manejo de archivos, grabación de sonidos, expresiones regulares, entre muchos otros.
La realidad es que este sitio da muy buenas ideas para que los alumnos de los cursos de programación aprendan muchas de las técnicas básicas cuando se requiere usar un lenguaje de programación en particular. Pero no me crean, véanlo por ustedes mismos.