Creo que la principal ventaja de Go sobre C ++ y Java es su compatibilidad con la concurrencia de mensajes como parte del lenguaje: goroutines, canales, select. Estas son buenas abstracciones que creo que son más fáciles de usar que los hilos / bifurcación y sus primitivas de sincronización típicas.
Go es un gran lenguaje para implementar algo que normalmente se vería afectado por su falta de concurrencia. No puede vencer a C ++ en términos de rendimiento bruto, pero podría argumentar que algunos programas de C ++ no aprovechan al máximo la concurrencia porque son más complicados para razonar. O bien, podría lograr el mismo nivel de concurrencia en Go con menos código.
En términos de Go vs. Java, una cosa acerca de Go es que se compila en código nativo. El tiempo de ejecución de Go está vinculado, por lo que los binarios son grandes, ¡pero al menos los tienes! Otro objetivo de Go es ser un poco más sucinto que Java.
- ¿Cómo manejan varias empresas el tema de la propiedad del proyecto de código abierto?
- ¿Puedo escribir Er? oficialmente antes de mi nombre en los documentos?
- ¿Cuáles son los mejores planes de inversión y jubilación que debe seguir un ingeniero de software?
- ¿Cómo se puede revisar el código para garantizar que su registro interno sea suficiente y correcto?
- Con (casi) todas las revistas de programación desaparecidas, ¿cuáles son algunas fuentes de información de calidad para leer para mantenerse al día con las tendencias y herramientas de desarrollo de software?
Los autores de Go discuten muchas otras razones en Go at Google: Diseño de idiomas en el servicio de ingeniería de software.