Que si la concurrencia esto, la concurrencia lo otro… Blah bla bla. Go ¡No es solamente concurrencia! Este lenguaje tiene un compilador súper rápido, su código se ajusta automáticamente, te importa librerías con solo guardar, no compilará a menos que uses todas las constantes y funciones que declares, es decir te obliga, sí obliga, a tener buenas prácticas de programador.
Go o bien Golang es un lenguaje creado por Google principalmente por los desarrolladores Robert Griesemer, Rob Pike y Ken Thompson en 2009. Pero no fue hasta mediados del 2017 que supe de su existencia (aquí en Platzi claro). Me ha gustado tanto que no he parado de estudiar y aquí te comparto el camino que he seguido hasta ahora.
Platzi
Lo primero es que hayas tomado el curso de programación en Go con el profesor @yograterol. Luego sigas con el curso de Go Avanzado. Te recomiendo que empieces a usar Hugo, un generador de sitios web estáticos escrito en Go:
Hay ciertos temas básicos que es bueno saber cómo los plantea la página oficial goolang.org de esta forma obtener otra perspectiva y ellos prepararon A tour of Go. Traducido por la comunidad a múltiples idiomas, entre ellos el español. Aunque igual te recomiendo pasarte por el de inglés ya que hay unas notas adicionales interesantes. Por cierto, te puedes bajar el tour y usarlo en localhost 😎.
Libros
Libros en Go hay muchos y muy interesantes, pero solo puedo hablar por aquellos que he hojeado y son:
Machine Learning with Go: Así como lo dice el título. Se está usando Machine Learning con Go. Aunque se puede hacer con muchos otros lenguajes (Python es el que domina en este ámbito) pero Go ofrece algo único: Escalabilidad y consistencia de datos. Por mucho mi libro favorito, pero he decido primero aprender BackEnd con Go antes de pasarme a este tema.
Youtube
En youtube hay mucho contenido especialmente bueno, los cursos que he tomado y puedo recomendar en gran medida son:
Curso GO (GOLang) - De 0 a 100: Tremendo curso, esto lo estaba tomando a la par con el curso de Go básico de Platzi. Es muy recomendado y gratis.
Building Golang Server With Echo: Es un curso ya avanzado de BackEnd con Go. Específicamente aquí se utiliza Echo un framework de Go minimalista pero fácilmente escalable. En mi oponión ideal para aplicaciones de microservicios con Go. Es bastante completo y fue el curso que me motivo a crear esta recopilación de contenido porque justamente lo acabo de terminar 😎😁.
Hay varias comunidades de Go agrupadas según su nicho:
@golangve: Comunidad de Go en Venezuela. Es algo pequeña, si ayudas a difundir podrímos crecer un poco más.
@dwhitena: Si te interesa Go en Machine Learning, éste es el referente. Autor del Libro Machine Learning with Go.
GO en español - Oficial: No es que es oficial, oficial. Sino que así decidieron llamarse a la comunidad que he visto más activa en español. Su mayor actividad están en el grupo de facebook.
Gophers: La mayor comunidad activa de Go se encuentra en Slack. Y otras comunidades se concentran en sus canales. A parte de obtener importantes noticias del lenguaje también hay un canal de trabajos. Ten en cuenta que en el slack están los más pro de los pro de Go. Pero todos con muchas ganas de responder tus dudas.
Data-science: Hay cada comunidad reunida por cada librería utilizada en Data Science y machine learning pero en este canal del Slack es donde todos se reúnen. Pues y obviamente aquí verás a @dwhitena muy activamente.
@GygaCode: El creador del curso de 0 a 100. Siempre publica cosas muy interesantes en su twitter respecto a Go y está al tanto de los cambios del lenguaje como frameworks.
golangweekly: Si te suscribes, semanalmente recibirás noticias más destacadas del lenguajes. He estado al tanto de cosas muy interesantes gracias a golangweekly. Como por ejemplo que usando GopherJS se pueden crear aplicaciones isomorfas con Go (mismo lenguaje en el BackEnd y en el FrontEnd).
Editores
En Go hay varias opciones interesantes para codear. Te muestro los que he usado:
Atom: Es el editor de código del momento, hay plugins de todo tipo que ayudan a mejorar la experiencia del desarrollador. Con un par de Plugins puedes muy bien codear con Go.
GoLand: Así como Android Studio es el IDE stándar para codear para Android. JetBrains pretende hacer lo mismo con GoLand para Go. Es un IDE súper fuerte, muy bien desarrollado. Con un Demo completamente gratis puedes tener una idea de lo que es el editor. Ten en cuenta que es de pago pero vale la pena.
Vim-Go: Desde que empecé a usar VIM en uno de los cursos de Platzi le vi un gran potencial. Aunque en un principio era (yo) bastante lento con este editor, he tomado el curso Aprende a usar Vim desde 0 y gracias a ese curso he podido aumentar mucho el desarrollo en este poderoso editor. VIM, si no lo sabes, es un editor de código por terminal. Su mayor ventaja es, a su vez, su mayor desventaja (dependiendo de cómo lo veas, claro) y es Todo es por teclado. Jamas usas el mouse.. Si no vez la ventaja en esto, pues el tiempo que tomas en alejar tu mano del teclado para tomar el mouse es muy significativo si lo sumas. Tento un tutorial muy básico para configurar Vim con Go Personalizar VIM e instalar el plugin de Go.
Vim-Go-Ide: Es, en esencia, un conjunto de plugins ya instalados y configurados para usarlo con Go. Personalmente no lo he utilizado, pero tengo configurado mi vim de manera muy similar. Me pareció muy valioso indicarlo aquí.
Frameworks
He escrito un tutorial al respecto un poco más específico Librerías, frameworks y otras cositas con Go . Estos son los frameworks de Go que he probado hasta por fin decidirme en cuál enfocarme:
Go me ha gustado mucho por múltiples razones. La concurrencia es solo una de ellas pero no lo es todo. Es un lenguaje hecho para construir microservicios con alto performance y eso me encanta así como el ambiente que hay alrededor de la comunidad. 😁
Espero te haya gustado, cuéntame ¿qué te ha parecido Go?
Saludos,
💚 Nota para el Team de Platzi: El curso de Go avanzado creo que merece una actualización. Me encantaría una actualización 💚 Vale la pena, es un excelente lenguaje y muy demandado. Y si fuera enfocado a la construcción de microservicios ¡Mucho mejor!.
He decidido aprender go, que sea mi lenguaje principal y este post es super increible a ahorrado mucho tiempo de busqueda por google y por youtube
package main import "fmt" funcmain(){ fmt.Println("Gracias por el post") }