¿Diría que Go (Golang) es, en cuanto a su carrera, una buena inversión a largo plazo?

Absolutamente

Los indicadores de popularidad de idiomas retrasan las tendencias de la industria. Claro, puedes aprender cosas en la parte superior de TIOBE y ser uno de los otros millones de personas que conocen ese idioma (por ejemplo, Java) y probablemente no aprenderás nada nuevo aparte de la sintaxis del idioma. Es una idea mucho mejor dedicar su tiempo a aprender un idioma que implemente ideas nuevas para usted y que tenga alguna posibilidad de ser utilizado en lugares interesantes.

Go se usa en lugares como Docker [1] debido a dos de sus atributos clave: simplicidad y soporte para la concurrencia. Go es un lenguaje simple que se siente como algo que surgió de C. Hay muchas cosas que no admite que probablemente te volverán loco durante las primeras semanas que lo uses (por ejemplo, genéricos). Pero, toma algunas decisiones que le ahorrarán muchos dolores de cabeza más adelante. Por ejemplo, los creadores de Go han sido muy conscientes de limitar el lenguaje para realizar operaciones de tiempo constante a menos que sea obvio que la operación no puede ser de tiempo constante. Se pueden encontrar ejemplos de esto dentro de la conversión de tipos de matrices. El beneficio de esta simplicidad (en sintaxis y en el análisis del rendimiento) es que su código es fácil de leer y comprender, aunque puede ser un poco más extenso. Esto puede ser positivo para proyectos que necesitan ser bastante confiables. En segundo lugar, Go tiene un gran modelo de concurrencia. En lugar de confiar en hilos, cerraduras, semáforos, etc., Go usa gorutinas (que pueden considerarse hilos ligeros) y canales para la comunicación entre ellas. Es un buen modelo que facilita la escritura de servidores que solucionan fácilmente el problema de C10k [2].

La adopción de Go definitivamente ha mejorado si sabes dónde buscar. Empresas como CloudFlare, Dropbox, Docker, etc., están buscando ir a construir sistemas de backend y middleware.

Lo más importante es que aprender Go significa que estará expuesto a un nuevo modelo de simultaneidad y a un código diferente. Esto es inherentemente más útil que elegir qué aprender según la popularidad actual.

Notas al pie

[1] Docker

[2] C10K – Un servidor web sin bloqueo en Go

Sí, seguramente lo es. En este momento, Go es una tendencia en muchos campos del desarrollo web. Aquí solo dejaré una breve descripción de las posibles áreas de la aplicación de Golang.

desarrollo web

Antes de que apareciera Go, Python era una de las soluciones más populares para el desarrollo web debido a su sintaxis lógica y diseño simple. Sin embargo, Golang es definitivamente un ganador en términos de simplicidad. El código, escrito en Go, es más fácil de leer, probar y depurar. Obviamente, uno podría discutir sobre la funcionalidad de Go en comparación con Python o Java, pero el lenguaje se está desarrollando dinámicamente, y también lo es su funcionalidad.

Desarrollo de aplicaciones

Golang es una gran opción para el desarrollo móvil. Puede usarlo tanto para el cliente como para el servidor. Cuando desarrollamos TimeGuard, una aplicación para que los desarrolladores la utilicen durante nuestro proceso de trabajo, decidimos potenciarla con Golang. Resultó ser una gran decisión porque Go es rápido y lógico, exactamente lo que necesitábamos.

Microservicios

En lugar de construir una arquitectura monolítica, puede dividir el proyecto en microservicios. Crea pocos servicios que cumplen una función pero lo hacen perfectamente y luego construyen comunicación entre ellos. Golang es un lenguaje perfecto para tales propósitos porque tiene una sintaxis clara y proporciona una sincronización rápida. Teniendo en cuenta lo populares que son ahora los microservicios, vale la pena aprender Go.

Además, ¿podemos tomar un momento para ver cómo Go está ganando impulso en este momento? Las empresas cambian activamente a Golang, más nuevas empresas lo eligen como sus idiomas principales. Escribí sobre eso en el libro electrónico sobre las perspectivas del desarrollo de Go, realmente sugiero que echen un vistazo.

¡Buena suerte y vete!

Recientemente me he sumergido en Golang y me parece muy interesante y útil en términos de tiempo de desarrollo.

El problema no es que muchas personas conozcan a GoLang principalmente porque no es tan publicitado en comparación con Node.js (no decir que node.js es malo y no comparar técnicamente, la comparación no es una pregunta aquí). Como resultado, no se usa ampliamente como Node.js / php / rails / django, etc. Al mismo tiempo, las personas u organizaciones que conocen y usan Go saben lo que vale. Suma de todas las cosas si sabes ir, entonces no eres parte de la multitud. Digo esto desde mi propia experiencia, cuando le digo a las personas que uso Go, entonces tienen un signo de interrogación (¿qué … qué es eso?) O un signo de exclamación (wow … genial).

Obviamente, las vacantes son menos a partir de ahora, pero al mismo tiempo he visto puestos de trabajo de Go publicados en upwork (un sitio de trabajo para freelancers), por lo que es una muy buena señal porque no solo se limita a grandes organizaciones y proyectos, sino que se está desplegando en pequeños proyectos. también.

Cuando hablamos de escalabilidad, concurrencia … también hablamos de Go, aparte de otros muy buenos idiomas. Go tiene su propio conjunto de usos y no es una herramienta adecuada para la creación de prototipos o un reemplazo para algunos CMS. El punto es que necesita comprender qué puede hacer y cómo puede implementarlo en sus proyectos / empresa ahora o en el futuro. La curva de aprendizaje es un poco empinada, hay una gran cantidad de recursos y tutoriales en Internet. Así que sobre todo aprenderás por bricolaje.

A veces visitas un lugar no para quedarte sino para explorar y más exploras ese lugar cuanto más quieres quedarte. Algunos se quedan, algunos regresan y otros avanzan.

Explora !!

Soy un programador de ruby ​​on rails. Además, tengo experiencia en C / C ++ y soy un principiante de scala / elixir / haskell.

Pasé las últimas 4 semanas programando en marcha. Y yo diría que es un buen idioma. Go es más simple que C. Tiene recolector de basura. Tiene modelo de concurrencia CSP a nivel de lenguaje. Interesante sistema de tipos. Es facil de aprender. Estoy seguro de que definitivamente lo usaré en el futuro.

¿Lo recomendaría? No. Y hay mis razones:

  1. Hay un bombo poco saludable a la vuelta. Algunos chicos incluso crean beego: marco de aplicación Go simple y potente. Go es una C. más moderna ¿Creará un marco web en C / C ++? Supongo que no. ¿Creará http-microservice en C / C ++? Supongo que es razonable. Lo mismo para ir.
  2. Hablemos de microservicios. Supongo que quieres tolerancia a fallas. ¿Qué mecanismo te llevará a lograr la tolerancia a fallas? Errores de tiempo de ejecución. Escribes en un canal cerrado: obtendrás un error de tiempo de ejecución. Olvidas inicializar el canal, no hay error, pero el canal enviará mensajes a ninguna parte. Se olvida de inicializar la variable: excepción de puntero nulo. Forzó a usar el paquete de reflexión por alguna razón: trae más lugares para excepciones de tiempo de ejecución. Por supuesto, hay menos posibilidades de cometer estos errores que en C ++ / C. Pero, en serio, la tolerancia a fallas que dices?
  3. Go no tiene inmutabilidad en el sistema de tipos. En 2016. Incluso en ruby ​​podemos “congelar” algunos datos. Lenguaje orientado a la concurrencia sin acentuar la inmutabilidad. Es extraño. Pero! No es extraño para C donde necesitamos alta velocidad y control de bajo nivel. Y déjame preguntarte: ¿Con qué frecuencia necesita ese nivel de control? Parece razonable para Docker o cónsul / nómada, pero ¿es razonable para su producto?
  4. Go no tiene genéricos ni ninguna sustitución adecuada. No es una mala parte, es consecuencia del diseño del lenguaje. Pero significa que ir no es lo suficientemente bueno para aplicaciones con arquitectura compleja. Hay exclusiones, por supuesto.

Yo diría que ir es lo suficientemente bueno como para aprenderlo y usarlo cuando sea perfecto para una tarea determinada. Go es un excelente lenguaje de “soporte”: cuando necesita crear algo ultra rápido, pequeño, “portátil” y con concurrencia / paralelismo, brilla. Pero no recomendaría hacer del golang tu idioma principal.

No lo creo …

Si tengo que predecir el futuro, hay mejores idiomas, para todas las supuestas ventajas de Go. Go es anticuado, y es cierto (los diseñadores dijeron algo así como “no es un lenguaje académico”).

En el Índice TIOBE | Tiobe – The Software Quality Company es el número 48. Ese no es mi argumento. Puede estar aumentando (y podría aumentar durante un tiempo, hasta caer (relativamente) en popularidad, cuando las personas se den cuenta de las mejores alternativas). Los mejores idiomas ya son más altos o se están poniendo al día.

Julia, mi favorita, es más baja, más joven, en un ascenso meteórico. D, un idioma más antiguo (o lo es, porque), con la variante posterior D2, es nr. 20, en esa lista. Ese lenguaje intenta ser un mejor C ++, parece ser realmente eso, y tiene casi todo lo que Go debería.

Go tiene gorutinas (“hilos verdes” o corutinas para mí). No debo aclarar la diferencia de las gorutinas; y corutinas. Julia tiene cosas similares, si la concurrencia es importante para ti.

Mientras Go, aprendió corutinas, de CAR Hoare, no aprendieron de su “error de mil millones de dólares” admitido – puntero nulo [excepciones]. Podrían haber aprendido de O’Caml (o ML), pero no lo hicieron. Nuevo lenguaje Swift, también podría haberlo hecho. El nuevo operador en Ruby, que toma de Swift, parece simplemente parchear, no resolver el problema como Julia, etc.

Go tiene un buen GC (“el mejor en su clase”). Todos / Julia pueden replicar su GC (¿quizás la mayoría ya está allí?).

Erlang (y luego Elexir) tiene buena concurrencia tolerante a fallas].

El modelo de error de Go parece roto. Algunos cambios en los códigos de error (que son malos). Tal vez no entiendo bien y es bueno, no peligroso. Quizás quieran con códigos de error en la opinión popular de que es más rápido. Joe Duffy de Microsoft Research: el modelo de error dice que el uso de códigos de error es malo “en lenguajes basados ​​en C, e incluso Go con su sintaxis moderna, este es un problema real” (incluyendo la velocidad, vea el problema “mantequilla de maní” en ese sentido). artículo que enlacé sobre la investigación de Microsoft Midori OS). La guía de estilo de Google para C ++ no permite el manejo de excepciones . No estoy seguro de si sus razones no son válidas (al menos para otros u otros idiomas). Si recuerdo, declararon al menos un problema de portabilidad (¿ahora resuelto?).

Rust parece un mejor lenguaje, para bajo nivel.

Ve exprimido entre muchos idiomas superiores.

On Go vs idioma “X” ..

Por supuesto, Go es realmente una buena inversión para la carrera y el crecimiento futuro en la industria de TI. Si observa las últimas encuestas sobre lenguajes de programación exigentes, encontrará go lang en el top 10. Y go lang se está volviendo popular día a día. Las organizaciones están adaptando el Go para construir sus productos. Una vez que pases por Go Lang, encontrarás lo poderoso que es. Así que felizmente inviertes tu tiempo en aprender Golang.

Para aprender ahora? Verifique sus listados locales y ver cuántos trabajos hay para Go. ¿No hay ninguno? Entonces la respuesta es no. Si la respuesta es sí y consideraría más de 100 trabajos suficientes, entonces seguro. Learn Go.

Go es un lenguaje suficientemente simple que diría que es bueno aprender, pero para una carrera en programación de sistemas, es mejor que aprendas C, C ++ o Java, o todo. Yo diría que Go todavía es muy joven para que la mayoría de los empleadores salten al idioma.

Si estaba buscando ganar experiencia ahora para trabajar en una década en que los empleadores quieren a alguien con más de 10 años de experiencia, entonces, si puede encontrar un empleador con ese requisito, establezca su salario y obtenga los beneficios.

Como con cualquier lenguaje nuevo, el objetivo no debe ser: “Oh, podré conseguir un trabajo con esto”.