/ prog

Oxido

Ultimamente pocas cosas de las que hago al dia logran clasificar como “productivas” o “divertidas”. Sumado (o restado) a esto, por razones externas, me vi forzado a buscar un material interesante con el cual aparentar alguna labor frente al monitor con el extra de que fuera de interes y evitara en lo posible la somnolencia

Toquetear rust fue la ocupacion que logro mantener las apariecias los ultimos 2 dias. Uno de ellos fue satisfactorio e divertido, y el otro… algo decepcionante (spoiler).

Pero, por que Rust?

comentare un poco sobre las traducciones, y el libro oficial.

Primero, la version uno del libro traducida al español esta buena (creo). El libro en si, es un paseo por las caracteristicas del lenguaje. Esto viene a significar, que si consideras que sabes programar y vienes de un lenguaje tipo C++ seria suficiente para conocer el catalogo de posibilidades. Aun con esto, lo considero muy, muy basico y falto de la claridad suficiente para aquellos que requerimos manuales para dummys

Por su parte la version dos traducida al español fue algo dificil de encotrar. Si, esta completa. No es del todo precisa o revisada, aunque es lo suficientemente entendible, pero sus defectos resaltan a simple vista. Por ejemplo, que una funcion este traducida y en el siguiente parrafo se presente en ingles, o que el palabro sea traducible al español, pero se quede en ingles. Esta traduccion esta en un git y por lo que se, no tiene version web

las intrucciones para generar la version web, son estas:

git clone https://github.com/ManRR/rust-book-es/
cd rust-book-es/second-edition/es
cargo install mdbook
mdbook build
mi-navegador-web book/index.html

el unico sitio donde he visto señas de esta traduccion es un issue en el repositorio en english del libro… un issue sin respuestas ni atencion, como el repo mismo. Si no pueden o no quieren generar la version web, la he colocado en, aqui. Esta tal cual se genera (excepto por que cambie el tamaño y ancho del texto). Por lo demas, tiene fuentes de google y js que le permite ocultar cosas y cambiar el tema (me gusta el ayu). Si son rust-fancys pasar por el repo, darle like y colaborar.

Segun su repositorio, la ultima vez que se toco fue hace 4 meses. Parece algo desfasada de la version en ingles, pese a ello, es mas extensa y detallada que lo contenido en la version uno. Esta es la que recomendaria para hispanos.

(el colega tiene otra traduccion https://github.com/ManRR/rust-ffi-omnibus-es que parece ser una github-wiki, no estoy seguro que sea o si este terminada, ni como hacer una exportacion a html)

(el camarada no tiene web o correo. Dejando de lado las licencias, le deje una issue pidiendo permiso para colgarla en este antro. Tres dias despues, ante el silencio asumo un si)

Finalmente, tenemos la version en englis de la version dos la mas completa, extensa y actualizada si te entiendes con el lenguaje.

(En el manual oficial en ingles, por alguna razon colocan el repo https://github.com/thecodix/book como la version traducida al español… zzzz, apenas y esta traducida la introduccion…)

rust VS go

(… Recordar que solo lo he sobrevolado el lenguaje por dos dias)

me preguntaba si rust contaria con mejores herramientas para plasmar mi codigo de manera mas “organica” y (spoiler) he descubierto que cuenta con mas y complejas construcciones, pero me costaria decir que son mejores. Interesantes? si, Armoniosas? n-o-p, Cripticas? segun quien.

Haber, que tenga punto y coma al final de las declaraciones a lo C se puede olvidar facilmente y el compilador te lo recordara, ja, ja, ja. Sorprendentemente, cuando no pones los punto y comas las declaraciones se comportan como lisp, y eso, eso mola!

La declaracion de variables, por otro lado es fastidiosa, go es mucho mas compacto y agradable

mmm, el manejo de memoria con dueños, pertenecias y prestamos, esta interesante, parece fastidioso, pero me gustaria ver un Go sin recolector de basura implementando este concepto

La forma de dividir el codigo en librerias, modulos y determinar el acceso a metodos/cosas, me corto totalmente el buen rollo inicial con rust, (・_・ヾ es muy confuso. Dividir el codigo en modulos, que pueden estar en ficheros o dentro del mismo modulo, cada uno con acceso publico o no, y como acceder a estos modulos desde codigo dentro del mismo proyecto y/o carpeta fue algo que no pude hacer. En verdad es bastante confuso y molesto, parece una chapuza a medio hacer.

la dinamica del mono-repo de go es mas clara y sencilla, que tu “modulo” se aplique a la carpeta actual y puedas invocarla de manera sencilla con su mera ruta y a su vez se comporte como un (pseudo) obejeto, mola un webo. Rust, aun saliendo un añito mas tarde no tiene algo tan bonico.

slices y vectores… mierda, por que rust? por que se parecen tanto a C++/Java (lo de los modulos tambien esta muy java). El acceso a metodos/cosas en modulos tambien muy java… y los limites de lo que incluyen las macros por defecto o la libreria estandar tampoco es claro. Ni hablar del &self en las estructuras o el &mod self

“interfaces” en lugar de herencia, bien. Lo de las <T>, las enumeraciones “raras” y los match no lo termino de tener claro…

documentar las funciones con markdown, jo, jo, jo, que cagada. Dejalos sueltos y te ponen etiquetas html a lo burro…

convertir funciones en funciones de prueba junto al codigo simplemente agregando indicaciones #[test], fabuloso! Tener que incluir estas declaraciones dentro de un modulo con otra indicacion extraña #[cfg(test)] y seguir colocando el #[test] a cada prueba para que el compilador no las incluya en el binario final… una mierda!

mmmm. esta bien que tengas bonitos poderes configuratorios para el compilador, pero tienes un monton de posibilidades cripticas que con nada se pueden ir de madre o ser utilizadas para acallar al compilador, por que? en serio, por que?

cargo, mehhh, regular. go mola mas

documentacion, supongo que configurando bien el editor con autocompletado y ayudas debe ser sencillo. Pero go doc ya solo por mostrarte los prototipos de las funciones, variables y constantes en una libreria sin recurir a versiones web es infinitamente mas comodo, ademas funciona sin “compilaciones” ni naah. Esto junto a lo java/raro de la organizacion de librerias mataron mis ansias por el oxido

como conclusion, rust tiene muchas, muchas muchas herramientas, un lenguaje mas a los que dare el calificativo de katamari, un pegote de caracteristicas de lisp, C++ y “cosas” que se sienten faltas de una coherencia planificada, como si lo es Go, donde puedo visitar codigo ajeno casi con la certesa de comprender lo que sucede

pero no terminare totalmente desilucionado, me gustaron los comportamientos a lo lisp y que sea de “estilo libre” en su escritura. Me jode que no tenga operadores de (pre|pos)(in|de)cremento, tambien que no tenga fors de dos/tres campos y que las cosas distintas a cero no sean siempre verdadero. Oh, los valores de 128 bits aprueban. No termine de enterarme sobre sus cadenas unicode 8, los char y si estos son o no runas…

/ prog