En este articulo vamos a empezar a ver el panorama actual de los lenguajes y los principales porqués a la hora de elegir uno en específico.
¿Por qué un nuevo lenguaje?
Cuando leí acerca de Go por primera vez, me tope con la noticia que era un lenguaje compilado y de tipos estáticos - es decir cuyo tipo de datos no cambian en tiempo de ejecución -. Me surgieron muchas preguntas. ¿Por que si los lenguajes interpretados son la moda? (JavaScript, Python, Ruby, ..) leyendo más llegué a a punto en la historia en el que los lenguajes compilados habían dejado de ser viables para un desarrollo grande en el que no ibas que manejar a bajo nivel el procesador. Debido a varias razones :
- Complejidad: Los lenguajes compilados como C y C++ son lenguajes complicados de aprender, son muy potentes, y sobre ellos descansan gran parte de la infraestructura computacional del mundo, pero si quieres hacer una app móvil o una pagina web administrable, no las puedes hacer con estos lenguajes, es matar moscas a cañonazos.
- Despliegue: Los lenguajes compilados son lentos para compilar, un despliegue con Python o Java es incomparable a compilar un programa en C de similar envergadura.
- Portabilidad: Es mucho mejor trabajar un lenguaje interpretado -como Python o Java- que se ejecuta tal cual donde su intérprete o máquina virtual este disponible, sin pensar programar para un determinada arquitectura al momento de programar.
¿Que es Go?
Vamos a ver que nos dice la definición oficial:
El lenguaje de programación Go es un proyecto de código abierto para que los programadores sean más productivo. Go es expresivo, conciso, limpio y eficiente. Sus mecanismos de concurrencia hacen que sea fácil de escribir programas que obtienen el máximo rendimiento de múltiples núcleos y máquinas en red, mientras que su novedoso sistema de tipos permite hacer un programa flexible y modular. Go compila rápidamente a código de máquina sin embargo, posee un recolector de basura y el poder de reflexión en tiempo de ejecución. Es un lenguaje rápido, con tipos estáticos, un lenguaje compilado que se siente como un lenguaje de tipos dinámicos e interpretado. (Tomado de la documentación oficial https://golang.org/doc/)
Como vemos Go esta directamente enfocado a satisfacer las necesidades arriba expuestas. Los lenguajes interpretados tomaron mucho vuelo debido a que los lenguajes compilados tenian muchos complejidades que un programadores a alto nivel no usa. Características del lenguaje
Dentro de los lenguajes declarativos modernos si hay uno muy peculiar es Go, a medida que se lee de el nos enteramos que tiene "su forma" de hacer las cosas. Por eso es que se recomienda a los principiantes es empezar de cero sin suponer que sabemos algo. Aca algunas caracteristicas del lenguaje:Goroutines
![]() |
| Concurrencia |
Compilación cruzada
Go tiene una velocidad de compilación muy superior a cualquier otro lenguaje compilado a la fecha, pero no contentos con ello le incorporaron la capacidad de crear ejecutables desde cualquier plataforma soportada, por ejemplo en windows puedo crear ejecutable para linux tanto 64 como 32 bits, una cosa impensable hasta ahora.
Existen más características que reservaré para la próxima entrada. Nos vemos.
Notas:
(*) El video se titula Go para Pythonistas.

