Nuevos validadores de Cédula de Identidad Uruguaya: Prolog y Rust
Publicado el 15 de septiembre de 2020Se siguen agregando versiones en más lenguajes del validador de cédulas de identidad. Gracias a Bruno Cattáneo, tenemos una versión nueva en Prolog. Pueden ver el código fuente y ejemplos de cómo usarlo en el enlace.
Inspirado por la versión de Bruno, finalmente me puse a escribir una versión que hacía tiempo quería escribir: Rust. El código para validar la cédula es lo suficientemente simple como para probar un lenguaje de programación nuevo. Hace tiempo que quería entrarle a Rust, así que fue una buena excusa. Me costó un poco, aprendí algo de Rust en el camino, pero tendría que leer mucho más para poder escribir código Rust como la gente. Logré que funcione y llegué a poder ejecutarlo con cargo run
y un número de cédula como parámetro y agregué algunos tests unitarios. Pero hay partes que uso variables mutables que seguro se podrían reescribir y en general seguro hay muchas cosas a mejorar. Pero por lo menos logré escribir mi primer código Rust más allá del “Hola Mundo!”. Ya seguiré aprendiendo más Rust, por ejemplo cómo diseñar el código para que pueda ser usado como librería. El código fuente en GitHub.
Hace unos años creé mi primera gema en Ruby: Un validador de cédulas de identidad uruguaya. Poco más de un año después, escribí una versión en JavaScript. Desde entonces han surgido un montón de versiones más del validador de cédulas de identidad en distintos lenguajes y ya tenemos: Ruby, Python, JavaScript (plugin jQuery y versión en Node), PHP, Go, Crystal, Prolog y Rust.
Gustavo Woltmann 6 octubre. 2020 - 10:52
Este código será de mucha ayuda para todos -Gustavo Woltmann
Libert Argenta 11 octubre. 2020 - 23:08
Deduzco de lo leído que para ti hacer un validador de cédula es como para mi simp’le mortal aficionado hacer un hola mundo en un nuevo lenguaje
Fernando 12 octubre. 2020 - 17:33
Jeje, no, no tan así. El algoritmo de validación es relativamente sencillo y después de implementarlo varias veces no lo tengo que pensar demasiado. Pero la complejidad en implementarlo depende del lenguaje. En Rust como dice el post me costó, porque las estructuras de datos son distintas a lo que estoy acostumbrado y se manipulan de manera distinta. Pero ahí está lo poco que fui aprendiendo. Digamos que es un paso más después del “Hola Mundo”, pero no es demasiado más complejo que un “Hola mundo”.