En 2007, algunos de los programadores de Google analizaron sus opciones para escribir software y no les gustó lo que vieron. Necesitaban gestionar millones de líneas de código que almacenarían y enviarían datos constantemente para la red mundial. El código haría malabarismos con miles o quizás millones de conexiones en redes de todo el mundo. Las rutas de datos estaban llenas de desafíos por casos de carrera y concurrencia. Los lenguajes de programación existentes no eran de mucha ayuda. Fueron creados para juegos o para gestionar escritorios, o para muchas de las otras tareas comunes de un mundo anterior al navegador web. Sus asperezas y modos de fallo volvieron locos a los programadores de Google lo suficiente como para empezar a preguntarse si podría haber una forma mejor. ¿Había algo que pudiera gestionar las tareas de E/S en tan sólo unas pocas líneas con toda la seguridad que Google necesitaba? La respuesta a esa pregunta fue no. Y así crearon Golang, un lenguaje simple que es superficialmente similar a C o Java. Las versiones públicas comenzaron a aparecer en 2009 y la primera versión 1.0 se envió en 2012. Hoy, Google continúa invirtiendo en el lenguaje, y la última versión estable al momento de escribir esto es 1.22.5. Dentro de Google, el lenguaje Go impulsa grandes bloques de la infraestructura, y también ha sido adoptado por muchos programadores fuera de Google. El lenguaje recientemente subió al top 10 del índice Tiobe. Se encuentra en la octava posición al momento de escribir esto. Toda esa escandalosa fortuna ha traído muchos aplausos, pero también algunas críticas y dardos. En muchos casos, las mismas características traen tanto desprecio como elogios. Lo que algunos desarrolladores aman de Go, otros lo odian con la misma intensidad. 8 razones por las que los desarrolladores aman u odian el lenguaje Go Es fácil de aprender No tiene favoritos La sintaxis basada en C (Demasiadas) reglas Manejo de errores adicional La biblioteca estándar El tamaño del ejecutable El gran padre Google Go es fácil de aprender Los diseñadores de Go crearon deliberadamente un lenguaje que fuera rápido de aprender, porque no tenía demasiadas características complejas o idiosincrasias. En lugar de agregarle adornos a Go, eligieron simplificar el lenguaje, cerca del mínimo necesario para realizar su trabajo en Google. Eso significó decir «no» a las buenas ideas y enfocarse en una visión idealizada de lo que los programadores deberían necesitar. Por qué a algunos les encanta: Un lenguaje más simple es más fácil de aprender para los nuevos programadores y miembros del equipo. Hay menos características o construcciones que dominar y eso significa que los programadores expertos pueden aprender el lenguaje en un día. Dotar de personal a los proyectos es más fácil porque a los perros viejos se les pueden enseñar los nuevos trucos de Go rápidamente. No sólo eso, sino que el código suele ser más fácil de leer, aunque sólo sea porque no hay estructuras extrañas o arcanas que aparezcan en lugares extraños. Por qué algunos lo odian: lo simple no es necesariamente malo, es sólo lo que se dejó fuera. ¿Una bruja elegiría un libro de hechizos abreviado? ¿Un mariscal de campo elegiría un libro de jugadas con sólo unas pocas jugadas? Algunos programadores sienten que programar con Go es como codificar con una mano atada a la espalda. El lenguaje carece de toda la inteligencia que otros diseñadores de lenguajes han entregado al mundo, y ese es un alto precio a pagar. Go no tiene favoritos Los desarrolladores originales querían crear un lenguaje pequeño, y lo hicieron a expensas de muchas características favoritas que se encuentran en otros lenguajes. Go es un lenguaje simplificado. Hace lo que necesitas pero evita las campanas y los silbatos. Por qué a algunos les encanta: muchos desarrolladores alaban la simplicidad de Go. Go no requiere que adquieran o mantengan experiencia en docenas de características para ser competentes. Si leen un poco de código, no descubrirán construcciones que nunca hayan visto antes. Por qué algunos lo odian: Todos tenemos algunas características y trucos favoritos, pero lo más probable es que Go no los ofrezca. Los desarrolladores a veces se quejan de que podrían lograr lo mismo que podrían hacer en Go con solo una línea de COBOL o Java, o algún otro lenguaje favorito. Sintaxis basada en C Los creadores de Go tienen raíces profundas en el mundo de Unix, y se nota. La sintaxis es bastante familiar para cualquiera que haya usado C o cualquiera de los lenguajes como Java o C# que tomaron prestado de C. Las llaves y la escritura de Go serán cómodas para este equipo. El equipo de diseño eliminó algunas de las asperezas del C tradicional y simplificó algunos de los detalles para que se vea y se sienta más moderno, pero en su mayor parte, Golang se ajusta de lleno a la tradición que comenzó con C. Por qué a algunos les encanta: Los programadores que crecieron con el estilo C comprenderán intuitivamente gran parte de Go. Podrán aprender la sintaxis muy rápidamente y pueden dedicar su tiempo a aprender las pocas formas en que Go limpió algunos de los molestos rincones de C o Java. ¿Qué más se puede pedir? Por qué algunos lo odian: En muchos sentidos, Python fue diseñado para ser la antítesis de C. No hay signos de puntuación rizados para delinear bloques de código y la tipificación es deliberadamente dinámica. Cualquiera que ame el enfoque de Python encontrará muchas cosas que no le gustarán de Go. Desde esta perspectiva, programar con Go se siente como un paso o tres hacia atrás. Go tiene (demasiadas) reglas Desde el principio, los creadores de Go querían definir no solo la sintaxis sino también gran parte del estilo y los patrones de uso del lenguaje. Produjeron, por ejemplo, una biblioteca de formato estándar para desalentar las batallas sobre la forma correcta de sangrar el código de Go. Han curado listas de modismos y han alentado a los programadores a usar los mejores. También han prohibido explícitamente algunos hábitos que simplemente son mal vistos por otros lenguajes, como las variables no utilizadas o las dependencias cíclicas. El proceso de compilación de Go está programado para detenerse cuando descubre estos elementos en el código base. Por qué a algunos les encanta: las reglas fuertemente idiomáticas de Go garantizan que el código sea más fácil de entender. Los equipos tendrán menos peleas por el estilo porque hay menos opciones o razones para desarrollar su propio estilo personal. Por qué algunos lo odian: todas estas reglas y convenciones adicionales se sienten como una camisa de fuerza. ¿Por qué una variable no utilizada es un problema? Si el compilador puede detectarla, el compilador puede eliminarla sin molestarme. ¿Es tan malo para los programadores tener un poco de libertad en su vida? Go tiene un manejo de errores adicional Gran parte de la programación moderna incluye la creación de rutas adicionales para que el código tome cuando aparecen errores. El código se ejecuta normalmente hasta que algo sale mal. Cuando ocurre un error, debe recuperarse. Puede que solo se detenga un poco o puede darse por vencido por completo. La creación de sistemas automatizados requiere la introspección para saber cuándo las cosas funcionan o fallan. Go adopta un enfoque novedoso al alentar a los programadores a escribir dos rutas en la misma función. El buen código de Go explica tanto el enfoque normal como lo que debería suceder cuando surge un error. A los programadores de Go les gusta decir que «los errores son valores regulares» porque son parte del mismo código. Incluso hay un sistema de tipos independiente para los errores que permite a los programadores crear formas más específicas de errores y luego explicar cómo deben manejarse. Por qué a algunos les encanta: el enfoque de Go reconoce que existen errores y alienta al programador a hacer un plan para manejarlos. Esto alienta a los programadores a planificar con anticipación y desarrollar el tipo de resiliencia que genera un mejor software. Por qué algunos lo odian: el manejo innecesario de errores hace que las funciones de Go sean más gordas y difíciles de entender. A menudo, cada función en una cadena profunda debe incluir código similar que esté haciendo más o menos lo mismo con el mismo error. Otros lenguajes como Java o Python alientan a los programadores a «lanzar» los errores a la cadena a un bloque específico que los «atrapará», lo que puede dar como resultado un código más limpio. La biblioteca estándar No es solo la sintaxis de Go la que está diseñada para ser un estándar simple pero poderoso que une a los equipos. La biblioteca estándar incluye soporte para muchas de las tareas principales que son comunes para la programación de microservicios basada en la web. Las rutinas de entrada y salida comienzan con un manejo de paquetes de red de bajo nivel y se encargan de todas las tareas de creciente complejidad, como manejar el protocolo HTTPS o decodificar datos JSON. Configurar un servidor web completo solo requiere unas pocas líneas de código porque todo está incluido en la parte «net/http» de la biblioteca. Por qué a algunos les encanta: cuando muchas de las características estándar son manejadas por la biblioteca predeterminada, la mayor parte del código es más fácil de leer porque nadie está escribiendo su propia versión o discutiendo sobre qué paquete o biblioteca de terceros es mejor. Por qué algunos lo odian: es difícil quejarse de una pila de código tan bonita, pero a los cascarrabias les gusta señalar que la competencia es un buen indicador de demanda e innovación. El hecho de que algunos lenguajes admitan múltiples paquetes que aborden la misma tarea indica un profundo interés y una cultura rica. El tamaño del ejecutable Uno de los objetivos del equipo de Go era facilitar la implementación de programas Go y lo lograron agrupando todo en un solo ejecutable. Todo está listo para ejecutarse porque todas las rutinas de la biblioteca de Go están incluidas en la compilación estándar. Con el paso de los años, los desarrolladores a los que no les gustan los ejecutables que tienen un tamaño de decenas o incluso cientos de megabytes han encontrado formas de eliminar las partes innecesarias. Es un poco más de trabajo establecer los indicadores correctos e incluir pasos adicionales en el proceso de compilación, pero se puede hacer. Por qué a algunos les encanta: el espacio en disco es barato. Implementar código en ubicaciones extrañas puede ser una pesadilla cuando se instalan diferentes versiones de bibliotecas. Los desarrolladores de Go nos ahorran enormes cantidades de tiempo al compilar un solo archivo ejecutable. Por qué algunos lo odian: ¿Cuántas copias de las bibliotecas de Go hay en mi disco? Si tengo 100 programas, eso significa 100 copias. En algún momento, la eficiencia es una consideración. Sí, el espacio en disco es más barato que nunca, pero el ancho de banda de memoria y el almacenamiento en caché siguen siendo problemas principales para la velocidad de ejecución. El gran padre Google Golang se desarrolló en Google y la gran empresa sigue siendo uno de sus principales partidarios, enviando el compilador y gran parte de la cadena de herramientas. Hay algo de apoyo desde fuera de Google, como GopherJS, un transpilador que convierte Go en JavaScript. Pero, en su mayor parte, gran parte del esfuerzo de desarrollo de Go proviene directamente de dentro de Google. Por qué a algunos les encanta: gran parte del trabajo actual implica escribir código para las constelaciones de servidores y clientes, el mismo tipo que es una parte tan importante de la carga de trabajo de Google. Si Go es bueno para Google, también es bueno para aquellos de nosotros que trabajamos de la misma manera. Si los ingenieros de Google crearon algo que les encantaría, a cualquiera con proyectos similares le va a encantar igualmente. Por qué algunos lo odian: no es que a la gente no le guste Google en sí, es solo que los programadores desconfían de las autoridades centralizadas. Problemas como el bloqueo de proveedores y la falta de control son problemas graves para cualquiera que intente seleccionar una pila tecnológica. Toda la generosidad de Google sigue dejando a los programadores recelosos, especialmente cuando otras opciones de lenguaje tienen grandes comunidades de código abierto creadas a su alrededor. Copyright © 2024 IDG Communications, Inc.