Todos los Pythonistas deberían cambiarse a Go … o está bien, tal vez solo la mitad


El ingeniero de software promedio todavía está enamorado de Python. Incluso casado.

Pero no los de Google, Uber, Dropbox, Soundcloud, Slack y Medium. Los programadores de las principales corporaciones se han enamorado durante mucho tiempo del lenguaje la linda mascota.

Eso no quiere decir que Python no sea bueno. ¡Es genial!

Pero ya sea para API, servicios web o procesamiento de datos, mientras que la mayoría de los desarrolladores todavía usan Python, los de alto rendimiento están adoptando Golang o Go, cada vez más. Porque es genial.

Go fue inventado por un trío de estrellas en Google: Robert Griesemer fue uno de los líderes detrás de la máquina JavaScript V8 de Google y uno de los principales desarrolladores de Sawzall, otro lenguaje inventado por Google. Rob Pike co-desarrolló el entorno Unix y co-creó el lenguaje de programación Limbo. Con Ken Thompson, el equipo tenía al inventor de Unix y al creador del lenguaje B, el predecesor de C, a bordo.

Google fue originalmente escrito en Python Sí, Python sigue siendo genial, pero alrededor de 2007, los ingenieros buscaban un lenguaje mejor para realizar las tareas típicas de Google. Estaban encontrando problemas como estos, según un charla de Rob Pike en 2012:

  • Construcciones lentas: Producir un nuevo código estaba tardando una eternidad. ¡Me suena familiar!
  • Dependencias incontroladas: ¿Alguna vez ha intentado instalar un paquete de software, solo para descubrir que tiene que instalar al menos otras cinco dependencias e innumerables subdependencias para que funcione? Resulta que incluso los empleados de Google tienen ese problema.
  • Cada programador usa un subconjunto diferente del lenguaje: En Python, un desarrollador puede usar el paquete NumPy, otro prefiere SciPy, etc. Cuando los programadores quieren combinar su código en un solo paquete, las cosas se complican.
  • Comprensión deficiente del programa: Las personas que dicen que entienden el código en el momento en que lo leen, mienten. Al menos si no se trata de un sencillo programa de «Hola mundo». Y la documentación del código a menudo no ayuda; en la mayoría de los casos, ni siquiera existe o está mal escrito.
  • Duplicación de esfuerzo: ¿Alguna vez ha copiado un fragmento de código de una parte del programa, solo para copiarlo en otro lugar? Mala práctica. Pero la mayoría de los lenguajes de programación lo hacen fácil.
  • Costo de las actualizaciones: Con un lío como el descrito anteriormente, ¿realmente le sorprende que la actualización de su software requiera mucho tiempo y capacidad intelectual? No es genial.
  • Sesgo de versión: Con el código duplicado flotando por el lugar, los ingenieros solo pueden actualizar una versión del fragmento de código original y olvidarse de las demás. Así que terminas con una versión que contiene tanto código nuevo como antiguo. ¿Suena caótico? Está.
  • Dificultad para escribir herramientas automáticas: Es posible escribir programas que escriban código por sí mismos; de hecho, la mayoría de los programas lo hacen en algún momento. Pero con los lenguajes de programación modernos, eso sigue siendo difícil de lograr.
  • Compilaciones en varios idiomas: Ya conoce el problema: Python es ideal para scripts pequeños o medianos, C ++ es excelente para programas elaborados, Java es excelente para el desarrollo web, Haskell es excelente para código perezoso pero robusto. El resultado es que un solo programa a menudo contiene fragmentos de muchos idiomas diferentes. Pero para compilar, depurar y en aras de la limpieza, es mucho mejor escribir un programa en un solo idioma.

Así que el trío se propuso diseñar un lenguaje limpio, simple y legible. Un lenguaje que eliminaría, o al menos aliviaría, estos problemas tan comunes en la ingeniería de software.

La raíz de muchos de estos problemas comunes es la complejidad de los lenguajes modernos. Piense en Python o C: ¿alguna vez ha intentado leer toda la documentación? Buena suerte con eso.

Por el contrario, la característica más importante de Go es su simplicidad. Eso no significa que no pueda crear un código complicado con él. Pero Go es muy deliberado acerca de no tener características que aporten más complejidad sin resolver el problema.

Por ejemplo, Go no tiene clases como otros lenguajes orientados a objetos. Una característica muy utilizada de otros lenguajes, las clases son excelentes para hacer que un objeto herede las propiedades de otro objeto. El problema es que si intentas cambiar la estructura de un objeto sin cambiar la de los demás, romperás el código. Go tiene una alternativa, llamada estructura, que favorece la composición sobre la herencia.

Otras características clave de Go son:

  • Tipo de seguridad: En C, puede usar punteros para hacer casi cualquier cosa, incluido bloquear el programa. Go no te deja perder el tiempo así.
  • Legibilidad: Al igual que Python, Go prioriza la legibilidad. Esto lo hace más amigable para los principiantes que la mayoría de los lenguajes y hace que el código sea más fácil de mantener.
  • Documentación: Especialmente a los desarrolladores junior les resulta tedioso escribir alguna propaganda sobre su código para que otros puedan usarlo. Con Godoc, este proceso está mucho más automatizado que en la mayoría de los idiomas, y los desarrolladores no tienen que perder un tiempo valioso escribiendo lo que han estado haciendo.
  • Ortogonalidad: Esto significa que si cambia un objeto en su código, ningún otro objeto cambiará debido a eso. En este sentido, una la radio es ortogonal porque el volumen no cambia si cambia la estación. A diferencia de C, por ejemplo, si cambia una cosa, otras pueden depender de eso y también cambiar. Go es ortogonal porque simplifica las cosas.
  • Minimidad: En Go, solo hay una forma de escribir un fragmento de código. Compare eso con Python, donde tiene miles de formas de escribir una cosa.
  • Sentido práctico: Las cosas importantes deben ser fáciles de codificar, incluso si eso significa que otras cosas son imposibles de hacer en Go. La lógica aquí es que desea aumentar la productividad de un desarrollador haciendo que las tareas recurrentes sean rápidas y fáciles. Y si hay un problema más complejo, que es raro de todos modos, siempre pueden escribirlo en otro idioma.

Todo esto puede parecer aburrido y poco creativo. Y en cierto sentido eso es cierto: este no es un lenguaje con características originales que puedas usar para impresionar a los demás, una plétora de formas de resolver un problema, no hay libertad sin límites. Go no es un lenguaje que esté ahí para explorar, para investigar.

Pero es increíble cuando intentas crear algo que funcione. Cuando estás en un equipo con muchas personas diferentes de diferentes orígenes trabajando en el mismo código. Cuando estás cansado de todo el lío que encuentras con otros idiomas.

… Con una comunidad próspera

Por su sencillez, Go es uno de los lenguajes más colaborativos que existen en estos días. Se acabaron los tiempos en que los programadores solían sentarse en sus pequeños cubículos y nunca conocer a otros.

Ahora, tenemos StackExchange para resolver todos nuestros problemas de codificación. Y tenemos Slack, Zoom, Google Meet y más para estar en contacto con nuestro equipo. Pero los lenguajes modernos todavía se adaptan al pequeño nerd en el cubículo.

Ir cambia eso. A pesar de ser veinte años más joven que Python, tiene una comunidad vibrante.

Por lo tanto, no es de extrañar que pongan el respeto, la franqueza y la amabilidad por encima de su Código de conducta. Mientras que otros lenguajes, como Python o C, también tienen declaraciones de comunidad comparables, hay menos énfasis en estos valores básicos.

Por lo tanto, no es de extrañar que la comunidad desempeñe un papel explícito en las encuestas anuales de Go, a diferencia de muchos otros idiomas.

GOLANG

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para fines de afiliación y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver Política de cookies
Privacidad