En el desarrollo web Backend cuando se habla de lenguajes de programacion modernos y que permitan crear aplicaciones web rapidas y seguras, estos dias es comun escuchar hablar de lenguajes de programación como Go y Rust.
Y muchos los toman como competencia al tener algunas similitudes, como que:
- Ambos son lenguajes compilados (traducen codigo a codigo maquina)
- ambos son conocidos por crear programas muy rapidos (mas rapidos que Javascript, PHP, Java, Ruby)
- Ambos son lenguajes pragmaticos en lugar de estar basados en solo paradigma (es decir con ambos se pueden usar algo de paradigma funcional u orientacion a objetos, pero no en su totalidad)
- Ambos nacieron en empresas muy grandes como Google y Mozilla
Sin embargo estos dos lenguajes de programacion no fueron desarrollados para resolver el mismo tipo de problema.
Go por ejemplo fue desarrollado en Google para permite crear aplicaciones de Red distribuidas y que permtie a sus equipos de desarrolladores utilizar un lenguaje muy comodo de desarrollo que sea mas facil que C++, pero que sea mucho mas rapido que lenguajes como Python, Java, que esto era lo que usaba en muchso de sus servicios web.
Rust por otro lado inicio como un proyecto personal de un trabajador de Mozilla, que luego se planteo como una alternativa a C++, que fuera mas segura al momento de administra la memoria y que fuera usado dentro de un motor de navegador experimental para el navegador Firefox llamado Servo.
con ambos puedes crear proyectos backend, sin embargo Go es mucho mas usado en este ambito al tener muchos frameworks y modulos que estan siendo usados en produccion por proyectos como Docker, Kubernetes, o Crockroadb.
Mientras que Rust es utilizado mas como un lenguaje de sistemas, por ejemplo esta siendo utilizado en el kernel de sistema operativo Linux, en Android. y tipicamente se desarrollan compiladores, bundlers y sistemas operativos a partir de el.
Asi que en lo personal iria mas por Go si fuera un desarrollador Backend y por Rust si quiero enfocarme en desarrollo de aplicaciones a nivel de sistemas.