¿Quién aquí está aprendiendo Go? ¿Están buscando otras compañías usarlo? ¿Es probable que sea ampliamente utilizado?
¿Quién aquí está aprendiendo Go? ¿Están buscando otras compañías usarlo? ¿Es probable que sea ampliamente utilizado?
Respuestas:
Cuando se trata de lenguajes de programación, el viejo adagio, "no es quién eres, es quién conoces" definitivamente es cierto. C y C ++ fueron patrocinados por AT&T, Java fue traído a nosotros por Sun, la familia .NET salió de Microsoft, y todos se hicieron muy populares muy rápidamente. Luego tenemos Objective-C y Python, que existieron durante bastante tiempo y se mantuvieron realmente oscuros hasta que Apple y Google los descubrieron y promocionaron, respectivamente, y de repente despegaron realmente. Pero los idiomas sin un patrocinador importante tienden a languidecer en la oscuridad, sin importar cuán buenos sean.
Go está patrocinado por Google. No es difícil llegar a la conclusión correcta aquí. Dale cinco años y será enorme.
De hecho, no creo que Go tenga tanto éxito. Una razón por la cual no llegará a las grandes masas es que está destinado a ser un lenguaje para la programación del sistema.
Existe una necesidad real de un lenguaje de sistemas con características más modernas. C y C ++ están demasiado vinculados por el código heredado y la compatibilidad con versiones anteriores aquí para mejorar mucho. Dicho esto, no creo que Go cumpla ese papel en su forma actual. Su diseño es demasiado minimalista. Si bien su modelo de concurrencia es emocionante, aporta algunas otras características de lenguajes de nivel superior al mundo de los sistemas. (La última vez que lo comprobé, lo cual fue admitido hace un tiempo, ni siquiera tenía excepciones). Además, al menos en la medida en que el juego de referencia de lenguaje de computadora es una buena medida (es un indicador muy aproximado), no es casi tan rápido como debe ser un lenguaje de sistemas "real".
Creo que el lenguaje con la mejor oportunidad para llenar el vacío de un lenguaje sistemas más modernos es D . D es técnicamente mucho más fuerte que Go pero políticamente más débil. No está respaldado por una gran corporación. Lo que realmente necesita es algunas bibliotecas (esto se está abordando rápidamente ahora que la especificación del idioma es estable) y una aplicación excelente.
foo, err := SomeFunc()
común. Para problemas importantes o lugares donde err no funciona muy bien, puede usar panic()
y recover()
. Sin embargo, estos se usan intencionalmente muy raramente; no hay forma de pasar excepciones en la pila si la pila es muy corta, y las pilas cortas son comunes donde hay muchos hilos concurrentes.
Estoy aprendiendo Go y sí, se usa de manera productiva además de Google y Heroku.
Go es definitivamente un buen lenguaje para la programación del sistema. Código simple como en C, estructuras potentes como en C ++ y características de seguridad como en Java. Como es un idioma muy joven, se han heredado muchas cosas buenas de otros idiomas:
i := 1
lugar de int i = 1
, en func f(x, y, z int)
lugar de void f(int x, int y, int z)
, en type Foo struct { a, b int }; bar := Foo{1, 2}
lugar declass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
Teniendo en cuenta todas estas cosas bonitas y la seguridad y el rendimiento solo conocidos de los idiomas tipados estáticamente, a muchas personas de la comunidad de idiomas dinámicos les ha comenzado a gustar Go. En la mayoría de los casos, el código Go no es mucho más largo que el código Ruby, pero en todos los casos es más seguro y está mejor estructurado.
Pero al final supongo que el argumento decisivo para Go es la concurrencia. Es un lenguaje tipo C que tiene un poderoso soporte de concurrencia que solo se conoce a partir de lenguajes funcionales.
Diría que esto depende principalmente de las bibliotecas / servicios / software que se crearán en / para / usando Go. Las personas usan algo en tres situaciones (el orden importa): cuando prácticamente no tienen otra opción (Objetivo-C), cuando sus alrededores lo usan (FORTRAN), cuando les facilita la vida (Ruby).
Puede que sea un poco tarde para esto, pero Go se está convirtiendo en un lenguaje popular ahora y probablemente entrará en la corriente principal con Google empujándolo hacia adelante. Se está impulsando como un lenguaje utilizado para sistemas y productos dentro de Google y se está impulsando como un lenguaje para usar con Google App Engine. Hay algunas personas muy afiladas en el backend de Go building y su mejora. Hay algunas personas muy inteligentes e imaginativas que trabajan en bibliotecas de terceros para Go.
Go llena un vacío que otros idiomas no han llenado del todo. Para mí, solía tratar de llenar ese vacío con Perl y un montón de soluciones y trucos. No creo que sea el lenguaje perfecto para todas las situaciones y todas las personas, pero ciertamente es un candidato para una gran cantidad de situaciones. Por ejemplo, funciona muy bien para aplicaciones web, mientras que también funciona muy bien para aplicaciones de escritorio o aplicaciones basadas en servidor. Hace un trabajo fantástico con HTTP y WebSocket (lo que significa que puede omitir Apache o nginx por completo) mientras se ejecuta muy bien en Windows, Linux y OS X tanto para demonios como para aplicaciones de escritorio normales. En este momento, la única situación en la que falla es para las aplicaciones de Android, que espero se solucionen pronto. Lo uso para aplicaciones de escritorio de Windows, aplicaciones de escritorio de Linux y aplicaciones web basadas en Linux.
Creo que pasarán varios años antes de que realmente llegue a la corriente principal, pero llegará allí. Creo que necesita construir más bibliotecas de terceros, como el tipo de número y selección que Perl tiene con CPAN. Llegará allí.
¿Qué significa "corriente principal" de todos modos? Sin saber eso, es muy difícil responder esta pregunta. Veamos un poco eso.
Hay muchas definiciones posibles. Aquí hay algunos:
Vista de gestión:
Opinión de los desarrolladores:
Visión de carrera:
Teniendo en cuenta todo lo anterior, yo diría que la respuesta sólo honesto es probablemente “demasiado pronto para decir” pero creo que el mejor indicador de cualquier longevidad real es el número de pequeñosempresas que usan el idioma. Las grandes organizaciones están muy bien, incluso pueden ser esenciales para el crecimiento de un lenguaje o sistema de herramientas debido a la escala de inversión que pueden aplicar, pero son más propensas a la moda pasajera (con algunas excepciones). Por el contrario, si una pequeña empresa se ha basado en el uso del lenguaje para ofrecer productos y servicios, es muy probable que quieran contribuir para garantizar que aún podrán hacerlo en el futuro. También forman la base de un mercado laboral fuerte en el área, y también demandan herramientas. Curiosamente, esos son varios indicadores de la corriente principal en mi lista (posiblemente más, dependiendo de los caprichos de la administración).
Entonces, ¿cuántas personas fuera de Google están usando Go para su trabajo? No tengo idea. (No lo estoy. Actualmente mis necesidades están bien cubiertas por una mezcla de Java, C y Tcl. YMMV).
Ya es más popular que algunos idiomas.
Posiblemente, Go sea el idioma más importante en más de 20 años. Realmente presenta algunos grandes beneficios en términos de conjuntos de datos masivos, que presentan los sitios de redes sociales, la computación en la nube, la búsqueda y los dispositivos móviles.
Sitios como Facebook, Twitter, Linkedin, YouTube y redes de publicación de anuncios tienen mucho más uso para Google Go que Ruby On Rails, al menos en algunos contextos.
Miré a Go cuando me enteré. Como principiante completo, todavía estoy aprendiendo los idiomas para principiantes (en mi caso Java, C #, Python y Scheme), que es mucho para asimilar, pero si no estuviera absorto en tantos idiomas diferentes, lo habría considerado seriamente
Creo que a mi nivel, no hay nada malo en aprender lo básico antes de subirse al carro. Sin embargo, si recuerdo bien, cuando estaba mirando Go, me sentí muy atraído por Erlang por alguna razón.
Acabo de ver Go debido a esta pregunta, así que realmente no puedo comentar si despegará como un lenguaje convencional, pero una cosa me ha emocionado:
http://golang.org/doc/go_spec.html#Channel_types
Vine por primera vez a través del concepto de los canales en la Occam-pi y debo decir que es uno de los mejores conceptos de programación nunca . Hace que la concurrencia parezca tan fácil donde hacer lo mismo en un lenguaje tipo C a veces puede ser una molestia.
Por lo que he visto (en los 10 minutos que he mirado), Go parece estar tratando de combinar muchos conceptos de programación diferentes, pero eso tiene el riesgo de que sea un Jack de todos los oficios, un maestro de ninguno.
Sospecho que si se convierte en mainstream dependerá de si Google lo adopta como un lenguaje compatible para appengine y / o GWT.
Deseo que Go se vuelva popular.
Es poderoso en sintaxis. (Conozca las ventajas de python, C, Java). Es bueno para CPU de múltiples núcleos. (El canal funciona mucho mejor que la programación de subprocesos). El diseño evita la trampa de muchos programadores. (puntero incorrecto, el mismo estilo de codificación por la herramienta gofmt, previene el error variable no inicializado. Al principio, lo intento por primera vez, ya que es python + C pero con una velocidad cercana a la mitad de la velocidad de C.
Pero, después de aprender profundamente, descubrí que puede ser adecuado desarrollar tolerancia a fallas y arquitectura escalable
after
sirve?