Respuesta también disponible en Quora: ¿Qué lenguaje de programación de back-end vale la pena aprender hoy?
En mi opinión, estas son dos opciones idóneas para hacer el trabajo en el servidor y que realmente valen la pena aprender. Por supuesto hay otras opciones.
Go - https://golang.org
- Lenguaje de programación de tipado estático y compilado.
- Combina la versatilidad y fácil uso de un lenguaje de tipado dinámico con la potencia y confiabilidad de un lenguaje de tipado estático compilado.
- Compila directamente a código de maquina.
- Tiene un eficiente recolector de basura (GC).
- Compila increíblemente rápido.
- Es multiplataforma (GNU/Linux, Windows, Mac).
- Go es simple. Tiene una sintaxis limpia con un flujo de trabajo basado en texto, diseño minimalista y especificación de lenguaje claro.
- Soporte explícito para programación concurrente y funcional.
- De prototipado y desarrollo rápido.
- Amplio set de herramientas de desarrollo como testing, linting, debugging, code coverage, race detector, profiling y modules. Todo esto incorporado.
- Amplia gama de paquetes y librerías.
- Excelente documentación y recursos disponibles.
- Comunidad amplia y en crecimiento continuo.
- Curva de aprendizaje baja si vienes de lenguajes de tipado dinámico como Javascript, Python, Ruby, PHP o similares. Algunos proyectos escritos en Go:
- Docker
- Vitess
- Kubernetes
- Traefik Proxy
- InfluxDB
- Entre muchos otros
Compañías usando actualmente Go alrededor del mundo (en inglés)
Rust - https://www.rust-lang.org/
- Rust es un lenguaje de propósito general que puede usarse para cualquier finalidad.
- Es un lenguaje de programación de sistemas de tipado estático y compilado.
- Combina la potencia y control a bajo nivel de C/C++ con la seguridad de la memoria (memory safety) y la seguridad de hilos (threads safety).
- Puede considerarse una alternativa a C/C++.
- Compila directamente a código de maquina.
- No posee un recolector de basura (GC).
- Rust se asegura de que tu programa es libre de los típicos bugs de gestión de memoria como null pointers dereferences, double frees, dangling pointers y similares. Todo esto en tiempo de compilación.
- Es multiparadigma.
- Soporte de concurrencia y paralelismo incorporados.
- Es multiplataforma (GNU/Linux, Windows, Mac).
- Comunidad en crecimiento continuo.
- Documentación regularmente buena pero en constante actualización.
- Gama media de paquetes y librerías.
- Amplio set de herramientas de desarrollo como testing, linting, code coverage, debugging, profiling, gestor de paquetes.
- Curva de aprendizaje medio/alto incluso si vienes de lenguajes de tipado dinámico como Javascript, Python, Ruby, PHP, etc.
Algunos proyectos escritos en Rust:
- Mozilla Servo - The parallel browser engine
- Piston - A modular open source game engine
- Amazon Firecracker - Secure and fast microVMs for serverless computing
- Iron - A 72,000+ requests per second web server
- Compañías usando actualmente Rust alrededor del mundo (en inglés)
Conclusión
Yo desarrollo en ambos lenguajes y debo decir que realmente me place ver los resultados.
Respuestas relacionadas
- Respuesta de Jose Quintana a ¿Cuál es tu lenguaje de programación favorito?
- Respuesta de Jose Quintana a ¿Qué lenguaje tiene las mejores perspectivas de futuro: Python, Java o JavaScript?
- Respuesta de Jose Quintana a ¿Cuáles son los cinco lenguajes que todo programador debe saber?
- Respuesta de Jose Quintana a Como programador, ¿Qué lenguaje de programación te niegas a usar?
- Respuesta de Jose Quintana a ¿Qué lenguaje de programación es pionero en la actualidad? ¿Por qué?