Internet está lleno de grandes códigos. Forman la base sobre la que se construyen varias infraestructuras. Incluso la propia plataforma en la que estás leyendo esto está construida con una dedicación a la creación de grandes códigos. Mientras que el usuario medio no va a tomar nota de esto, los buenos desarrolladores, por otro lado, siempre están buscando hacer sus aplicaciones (y por lo tanto, su codificación) mejor.
La base sobre la que se escribe un gran código se basa en la habilidad del desarrollador y su lenguaje de elección. Esto conduce inevitablemente a algún choque épico entre los desarrolladores no sólo en el nivel de habilidad, pero sobre todo en su lenguaje preferido. Este es el resultado más probable que se obtiene cuando se colocan dos grandes lenguajes de programación como Golang(Go) y Python uno al lado del otro.
Sin embargo, demos un paso atrás y evaluemos ambos lenguajes desde el punto de vista del mérito y la funcionalidad. Quitemos los prejuicios y preferencias personales. Luego nivelemos el campo de juego, en cuanto a habilidades. Ahora, todo lo que nos queda son dos grandes opciones: Go vs Python. La pregunta ahora es, ¿cuál es la correcta para ti?
- Una historia de Python
- Hablando de Golang(Go)
- Rendimiento de Golang vs Python
- Búsqueda binaria
- Ordenación por burbujas
- Lectura de archivo
- HTTP Request handling
- Python vs Golang web frameworks
- Gin
- Echo
- Go kit
- Empresas que utilizan Golang
- PayPal elige Golang para modernizar y escalar
- American Express utiliza Golang para pagos &Recompensas
- Salesforce abandona Python por Golang en Einstein Analytics
- Stream – Por qué cambiamos de Python a Go
- Pydio reescribió el intercambio de archivos listo para la empresa en Golang
- Repustate migró la API de Python (primero Django y luego Falcon) a Go
- ¿Qué elegir?
- Golang es rápido de aprender, de desarrollar y de ejecutar
Una historia de Python
Pregunta a algunos desarrolladores y escucharás que no había nada antes de Python y no habrá nada después. A lo largo de los años, ha conseguido ganar un seguimiento de culto porque es un muy buen lenguaje de programación. Internet está lleno de maravillas creadas con Python.
Python es antiguo, en términos de años de programación. Fue conceptualizado por primera vez en 1991. Y con la edad vienen ciertas ventajas. Tiene un amplio seguimiento que se traduce en que es estable y está bien documentado. En la mayoría de los casos, encontrarás librerías para casi todo y ejemplos de código para casi todo lo que se te ocurra. Lo que esto significa para los desarrolladores y las empresas es que la elección de usar Python viene con una gran cantidad de experiencia y codificación a la espera de que se acceda a ella.
Hay un montón de proyectos de código abierto que utilizan Python como base, por lo que en la mayoría de los casos, usted no está empezando desde cero. Está bien integrado en las aplicaciones empresariales y se puede utilizar en aplicaciones de lenguaje de máquina y de IA. Pero tiene sus inconvenientes. Por un lado, no es ideal para tareas intensivas en memoria, un poco en el lado lento para las ejecuciones y no es adecuado para el desarrollo de aplicaciones móviles.
Hablando de Golang(Go)
Desarrollado en Google en 2009. Go fue una solución a un problema. Su objetivo era crear un lenguaje que eliminara todo el bagaje y los excesos que se encuentran en lenguajes como C++. Esto le confiere un plus de rendimiento y velocidad que hace que trabajar con él sea una delicia. Además, la mayoría de los desarrolladores que se acerquen a Go por primera vez no se quedarán a la deriva, ya que los elementos familiares y la facilidad de uso serán una agradable sorpresa.
Esto no quiere decir que el lenguaje sea perfecto en todos los casos. Si bien es cierto que lleva la velocidad y la elegancia al siguiente nivel, sin embargo, deja algunas cosas que desear. Por un lado, no tiene una amplia biblioteca, ni soporte para la herencia. Además, no tiene una biblioteca de interfaz gráfica de usuario ni soporte de programación orientada a objetos. Lo que sí tiene a su favor es un hilo ligero (Goroutines), una biblioteca estándar inteligente, una fuerte seguridad incorporada y es fácil de codificar con una sintaxis mínima.
Rendimiento de Golang vs Python
Podemos hablar infinitamente de los pros y los contras de Golang o Python, pero cuando se trata de la cuestión, lo que todos buscamos es su rendimiento. Así que hemos hecho algunas pruebas en nuestro equipo de pruebas con una CPU Intel® Core™ i7-9700K a 3,60GHz × 8 núcleos. Y el código utilizado está disponible aquí.
Búsqueda binaria
Creamos listas de ints (de 1 a 100000) y luego utilizamos la búsqueda binaria para encontrar siempre el mismo número 729. Los resultados son:
Lenguaje | Velocidad |
---|---|
Go | 20,8 ns/op |
Python | 2442.13377 ns/op |
Ordenación por burbujas
De nuevo generamos una lista de enteros (esta vez aleatorios, de 10000 elementos) y los ordenamos utilizando algoritmos de ordenación por burbujas.
Lenguaje | Velocidad |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Lectura de archivo
Una simple prueba de lectura de archivo de texto «lorem ipsum».
Lenguaje | Velocidad |
---|---|
Ir | 5305 ns/op |
Python | 58359 ns/op |
HTTP Request handling
Hacer un servidor HTTP es realmente fácil, pero hemos hecho un esfuerzo y hemos hecho el análogo en Python. Comprobamos cuánto tardaría en responder con un simple mensaje de «¡hola mundo!».
Lenguaje | Velocidad |
---|---|
Go | 0,070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang web frameworks
Una de las mayores ventajas de usar Python es la amplia colección de librerías y frameworks que están disponibles. Django y Flask son dos de los frameworks web de Python más populares que permiten construir una aplicación web o API en el menor tiempo posible.
Golang no tiene un único framework dominante como Django para Python o Laravel para PHP y la comunidad Go es en cierto modo reacia a los frameworks. Los resultados de la encuesta Go 2018 muestran que el desarrollo web de Golang es el más prevalente con un 65%, y aumentó su dominio como el área principal en la que trabajan los encuestados (frente al 61% del año pasado): el desarrollo web ha sido el dominio más común para el desarrollo de Go desde 2016.
Aquí los frameworks web de Golang más populares:
Gin
Gin es un framework web de Golang que es conocido por desarrollar APIs de alto rendimiento. También es uno de los frameworks más sencillos de aprender. Se tarda unos 10 minutos en acostumbrarse a él. Si necesitas rendimiento y buena productividad, te encantará Gin.
Características
- Rendimiento más rápido: Enrutamiento basado en el árbol Radix, pequeña huella de memoria
- Soporte de middleware: Una petición HTTP entrante puede ser manejada por una cadena de middlewares y la acción final
- Agrupación de rutas: Organice mejor sus rutas
- Gestión de errores: Gin proporciona una manera conveniente de recoger todos los errores ocurridos durante una solicitud HTTP
- Renderización incorporada: Gin proporciona una API fácil de usar para la renderización de JSON, XML y HTML
- Extensible: La creación de un nuevo middleware es tan fácil, sólo hay que echar un vistazo a los códigos de ejemplo
Echo
Echo es un framework web Go de alto rendimiento, extensible y minimalista que proporciona un enrutador HTTP optimizado, APIs de grupo, enlace de datos para JSON y XML, soporte para HTTP/2 y mucho más.
Aunque Gin es un poco más popular (36k estrellas de GitHub), muchos desarrolladores eligen el Echo (16k estrellas de GitHub) porque tiene mejor documentación y es un framework un poco más rápido.
Características
- Rutador HTTP optimizado que prioriza inteligentemente las rutas
- Aliación RESTful robusta y escalable, fácilmente organizada en grupos
- Marco de trabajo de middleware extensible, muchos middlewares incorporados, el middleware puede establecerse a nivel de raíz, grupo o ruta
- Enlace de datos para JSON, XML y payload de formularios
- Funciones útiles para enviar una variedad de respuestas HTTP, incluyendo JSON, XML, HTML, Archivo, Adjunto, Inline, Stream o Blob
- Manejo de errores HTTP centralizado y fácilmente extensible API
Go kit
Go kit es un kit de herramientas de programación para construir microservicios (o monolitos elegantes). Go Kit es un framework de opinión. Resuelve problemas comunes en los sistemas distribuidos y en la arquitectura de aplicaciones para que puedas centrarte en aportar valor al negocio.
Características
- Opera en una SOA heterogénea – espera interactuar con la mayoría de los servicios que no son de Go-kit
- RPC como patrón principal de mensajería
- Serialización y transporte conectable – no sólo JSON sobre HTTP
- Operar dentro de las infraestructuras existentes – no hay mandatos para herramientas o tecnologías específicas
Empresas que utilizan Golang
Golang es ampliamente adoptado por las principales empresas. Hay más de un millón de desarrolladores que utilizan Go en todo el mundo – abarcando la banca y el comercio, los juegos y los medios de comunicación, la tecnología y otras industrias, en empresas tan diversas como PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox y, por supuesto, Google.
Aquí hay algunos ejemplos de casos de estudio:
PayPal elige Golang para modernizar y escalar
El valor de Golang en la producción de código limpio y eficiente que se escala fácilmente a medida que el despliegue de software se escala, hizo que el lenguaje fuera un fuerte apoyo para los objetivos de PayPal.
Ver caso práctico →
American Express utiliza Golang para pagos &Recompensas
Go proporciona a American Express la velocidad y la escalabilidad que necesita para sus redes de pagos y recompensas.
Ver caso práctico →
Salesforce abandona Python por Golang en Einstein Analytics
Salesforce explica por qué el lenguaje de programación Go de Google se adapta mejor que Python y C a Einstein Analytics.
Ver caso de estudio →
Stream – Por qué cambiamos de Python a Go
Tenemos un pequeño equipo de desarrollo en Stream impulsando feeds y chat para más de 500 millones de usuarios finales. La combinación de Go de un gran ecosistema, fácil onboarding para los nuevos desarrolladores, un rendimiento rápido, un sólido soporte para la concurrencia y un entorno de programación productivo lo convierten en una gran elección.
Ver caso de estudio →
Pydio reescribió el intercambio de archivos listo para la empresa en Golang
Pydio, solución de almacenamiento en la nube de antes de Dropbox, se convirtió en una plataforma de Sync-and-Share de pleno derecho y la aplicación se ciñó a su pila técnica inicial: LAMP, como en Linux/Apache/MySQL/PHP. Lee un artículo sobre las motivaciones para reescribir completamente en Golang, la nueva arquitectura y las decisiones que hay detrás.
Ver caso de estudio →
Repustate migró la API de Python (primero Django y luego Falcon) a Go
La migración redujo el número de instancias EC2 necesarias en un 85% y el tiempo medio de respuesta de una llamada a la API de 100ms a 10ms. Debido a la similitud entre Python y Go, fueron capaces de reconvertir rápidamente nuestras pruebas unitarias escritas en nose para adaptarlas a la estructura que requiere Go con unos simples scripts sed.
Ver caso de estudio →
¿Qué elegir?
Aunque Python se ha mantenido como favorito de la comunidad conservando el puesto #2 en el primer trimestre de 2019 para el lenguaje de programación más rápido en GitHub en términos de pull requests (+17%), Golang no está tan lejos y le pisa los talones en el #4 (+8%). La elección entre Golang y Python se vuelve aún más borrosa. En cualquier caso, hay algunas cosas a tener en cuenta a la hora de seleccionar cuál puede ser el adecuado para usted.
-
Escalabilidad: Golang fue creado con la escalabilidad en mente. Viene con concurrencia incorporada para manejar múltiples tareas al mismo tiempo. Python utiliza la concurrencia pero no está incorporada; implementa el paralelismo a través de hilos. Esto significa que si usted va a trabajar con grandes conjuntos de datos, entonces Golang parece ser una opción más adecuada.
-
Rendimiento: Python no es conocido por ser amigable con la memoria o la CPU, pero con su enorme número de bibliotecas, Python se desempeña eficientemente para las tareas básicas de desarrollo. Golang viene con características incorporadas y es más adecuado para arquitecturas de software de microservicios.
-
Aplicaciones: Python brilla cuando se utiliza para escribir códigos de inteligencia artificial, análisis de datos, aprendizaje profundo y desarrollo web. Mientras que Golang se ha utilizado para la programación de sistemas, es amado por los desarrolladores que lo utilizan para la computación en la nube y las aplicaciones de computación en clúster.
-
Comunidad &Biblioteca: Como se mencionó anteriormente, la edad de Python le da ciertas ventajas. Una de ellas es el número de librerías que tiene y la gran comunidad que lo soporta. Golang, en cambio, es un lenguaje aún en crecimiento y no tiene el número de librerías y el apoyo de la comunidad que comanda Python. Sin embargo, no debemos descartar a Go todavía. Su ritmo de crecimiento y adopción es increíble y se expande cada día.
-
Ejecución: Si la velocidad es el nombre del juego, entonces Golang gana por una milla.
Después de tomar todo esto en cuenta, su caso de uso será el factor determinante en qué lenguaje adoptar. En un escenario en el que estás creando un equipo de desarrollo para crear microservicios, Golang sería la opción más razonable aquí, ya que es rápido, fácil de codificar y puede escalar excelentemente bien. Python, por otro lado, está más orientado a la IA, el ML y el análisis de datos.
Por lo tanto, si nos ponemos frente a frente, Go saldría ganando en la mayoría de los casos y se considera una alternativa válida al uso de Python. Los desarrolladores deben elegir un lenguaje de programación teniendo en cuenta su naturaleza y el tamaño del proyecto de desarrollo, así como el conjunto de habilidades de los involucrados.
La buena noticia, sin embargo, es que independientemente de la elección, ambos lenguajes están en constante evolución. Si bien Golang puede parecer una opción obvia en la mayoría de los casos, la comunidad de Python no se queda de brazos cruzados. Ambos lenguajes se están expandiendo y creciendo. Esto significa que veremos más funcionalidades y mejoras en el futuro.