¿Te gustaría aprender algún lenguaje de programación?
Tenemos los cursos que necesitas. ¡Haz clic aquí!
Creado por Robert Griesemer, Rob Pike y Ken Thompson para Google, los desarrolladores construyeron GoLang cuando esperaban que se completara la compilación de código en un proyecto. Las tres capacidades principales que ciertamente buscaban eran la facilidad de codificación, la compilación eficiente de códigos y la ejecución eficiente. Traer todas estas capacidades en un idioma es lo que hizo que Go fuera tan especial.
Go es un lenguaje de programación de código abierto, procesado, de tipo estático, compilado y de propósito general. El compilador se escribió originalmente en C, pero ahora también está escrito en Go, lo que mantiene el lenguaje autohospedado. El lenguaje ha tenido mucho éxito en los últimos años. Una gran parte del software moderno de nube, redes y DevOps está escrito en Go, por ejemplo. Docker , Kubernetes , Terraform . Go también está siendo utilizado por muchas compañías para el desarrollo general.
A medida que el requisito de rendimiento sigue creciendo, el hardware continúa siendo sofisticado con el tiempo, los fabricantes continúan agregando núcleos al sistema para mantenerse al día con la demanda cada vez mayor. Para manejar un número cada vez mayor de núcleos, el sistema necesita mantener las conexiones de la base de datos a través de microservicios, administrar las colas y mantener los cachés. Esta es la razón por la cual el hardware actual requiere un lenguaje de programación que pueda admitir mejor la concurrencia y que pueda aumentar el rendimiento con el aumento de los núcleos adicionales con el tiempo.
Golang versus otros idiomas
Los idiomas se comparan predominantemente en dos factores.
- Facilidad de programación
- Eficiencia
Estos factores suelen ser inversamente proporcionales, lo que significa que cualquier lenguaje que tenga una «facilidad de programación» alta generalmente tiene una «eficiencia» baja y viceversa. Go mantiene el punto óptimo con gran eficiencia y adecuada «facilidad de programación».
¿Por qué «Golang» y no «C ++»
Go y C ++ son lenguajes compilados y ambos tienen una velocidad similar (de hecho, C ++ es un poco más rápido que Go). Pero el recolector de basura en Go es lo que lo distingue de C y C ++.
Cualquier programa complejo utiliza memoria asignada dinámicamente, y esta memoria asignada debe liberarse cuando no es necesaria. Si eso no se hace, el programa eventualmente usará toda la memoria disponible y se bloqueará. En el caso de los servidores, es absolutamente necesario hacerlo, ya que se espera que se ejecute indefinidamente. En C y C ++, el usuario se ve obligado a desasignar toda la memoria que se ha asignado o utilizar un recolector de basura de terceros. En el caso de Go, toda la memoria asignada dinámicamente sin referencia se recolecta automáticamente, lo que hace que sea mucho más fácil trabajar con ella.
Concurrencia y «Golang»
Muchos lenguajes de programación no fueron diseñados de forma nativa para la programación concurrente. Carecen de un diseño adecuado para la ejecución concurrente y, por lo tanto, a menudo ralentizan el ritmo de programación, compilación y ejecución. Aquí es donde Go viene como la opción más viable para admitir un entorno de subprocesos múltiples y concurrencia de ambos.
Por ejemplo: un lenguaje como python solo permite que un hilo acceda al intérprete a la vez y, esencialmente, nunca ejecuta dos hilos en paralelo. Entonces, ejecutar dos tareas pesadas de procesador a la vez en Python en subprocesos separados tendría el mismo resultado, si no peor, que ejecutarlos en el mismo subproceso.
El planificador Go, a diferencia de los planificadores en otros idiomas, gestiona la concurrencia completamente por sí mismo. No asigna Goroutines a subprocesos a nivel de sistema operativo directamente. En cambio, reutiliza algunos subprocesos a nivel del sistema operativo. Esto reduce el retraso de cambio de contexto significativamente ya que la mayoría del cambio de contexto se realiza a nivel de aplicación y no a nivel de Kernel.
¿Qué es la pila de llamadas y por qué es importante en los hilos?
En el caso de subprocesos, stack se usa para almacenar punteros de retorno de función (dónde devolver el resultado de una llamada a función) y variables estáticas. Goroutine tiene una pila de llamadas dinámica que puede crecer, que comienza desde solo 4KB y puede llegar hasta la capacidad de memoria total. En cambio, otros idiomas tienen tamaños de pila estáticos, generalmente de 1 MB (determinado por el sistema operativo).
Esta pila cultivable en Go es una de las cosas clave que hace que Goroutines sea liviano. Donde otros idiomas solo pueden tener unos pocos bloques concurrentes, Go puede tener muchos más debido a su tamaño dinámico de pila.
Para concluir
Teniendo en cuenta todas las ofertas de Golang, notamos que se distingue considerablemente en términos de
- Compilación y ejecución más rápidas
- Mejor legibilidad de código y documentación
- Ofreciendo un lenguaje completamente consistente
- Versiones fáciles
- Permitir el desarrollo con múltiples idiomas.
- Permitir un mantenimiento más fácil de las dependencias.
Estas características seguramente hacen de Golang un contendiente para el lenguaje de programación de próxima generación.
Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.
¿Te gustaría aprender algún lenguaje de programación?
Tenemos los cursos que necesitas. ¡Haz clic aquí!
Exelente.
Me gusto mucho tus detalles y tambien tu web esta chula?