Como ingeniero de sistemas ópticos, el modelado de sistemas complejos es una parte rutinaria del trabajo. Dado que a menudo dependemos de simulaciones que requieren mucho tiempo, la eficiencia del lenguaje de programación que utilizamos se convierte en una consideración importante. Por eso solemos inclinarnos por C o C++, junto con bibliotecas heredadas basadas en Fortran.
Rust no suele ser el primer lenguaje que viene a la mente cuando se aborda un nuevo problema. A menudo se considera un lenguaje para programadores profesionales, conocido por su pronunciada curva de aprendizaje. Y sí, creo que esa reputación es en gran parte merecida. Pero también creo que Rust tiene algo que ofrecer, algo que merece la pena ver más de cerca.
Cuando planificamos un proyecto, rara vez sabemos exactamente adónde irá a parar, sobre todo si resulta ser realmente útil, que es de lo que se trata, ¿no? A medida que el software madura, a menudo nos encontramos con que queremos integrarlo en diferentes contextos, cada uno de los cuales añade nuevas capas de complejidad, a menudo mucho más allá de lo que esperábamos inicialmente.
Con C o C++, somos nosotros mismos los responsables de gestionar todos los pequeños detalles. ¿Seguirán siendo válidos estos datos cuando intente utilizarlos? ¿Hemos liberado el mutex en esta ruta de código? La lista de estas preguntas se hace larga, rápido.
Rust invierte esa dinámica. Descarga muchas de esas preocupaciones al compilador. En cierto sentido, el compilador se convierte en tu segundo par de ojos, diciendo: “No puedes hacer eso, aquí está el porqué”. Un software que compila en un contexto puede negarse a hacerlo cuando se adapta a otro, y eso suele ser bueno.
Con C o C++, el código puede compilarse sin problemas y, si tienes suerte, se bloqueará inmediatamente cuando algo vaya mal. Pero a veces los errores permanecen latentes durante años y sólo salen a la luz cuando se realiza un cambio. Y lo que es peor, puede que no bloqueen nada, sino que sólo alteren sutilmente los resultados una vez cada cientos de ejecuciones.
Sin duda, con buenas prácticas de prueba y herramientas como los desinfectantes, se pueden detectar esos problemas. Pero seamos sinceros: cuando tu principal especialidad es la física o la óptica, no las pruebas de software, tener un compilador que evite proactivamente clases enteras de errores resulta realmente atractivo.
El óxido no garantiza la corrección, pero sí te vigila las espaldas. Te ayuda a evitar no sólo los errores obvios, sino a veces también los ocultos, antes de que se conviertan en verdaderos problemas. Y todo ello sin sacrificar el rendimiento. Para aquellos de nosotros que trabajamos en ámbitos en los que la precisión y la corrección son tan importantes como la velocidad, Rust ofrece una combinación poco frecuente: la seguridad de un lenguaje moderno con el rendimiento de C. Es un compromiso que merece la pena tener en cuenta.
¿Tiene sentido aprender a programar? Hoy en día, absolutamente. Mejor aún, tienes un tutor 24/7 con ChatGPT o Grok. If you ask me, both suck at coding. Really, not kidding. They simply suck, but they are great at answering specific questions. Question about strategy, or about tools (crates in Rust-language). If you start with Rust, don’t ask it to give you code, read the book and ask for explanations.
The Glass Finder application is a slice of another project aiming to extend the set of services already offered by...
Trabajando en ello Es posible que haya notado que el blog ha estado un poco tranquilo últimamente, eso es concentración, no dejadez. En Senslogic...
Introducción - Redefinición de CAD Cuando la mayoría de la gente oye “CAD”, piensa en software de diseño mecánico en 3D, como SolidWorks, AutoCAD o...
La tecnología sigue avanzando, al igual que los sensores de frente de onda. Una mejora notable ha sido la densidad de muestreo del frente de onda. Ejemplos de...
Litografía óptica de alta gama, de qué va La litografía EUV parece ciencia ficción hecha realidad: espejos con suavidad a nivel atómico, luz...
Intro Durante la mayor parte de mi carrera en óptica, he simulado imágenes de moduladores espaciales de luz y, sobre todo, de SLM...