¿Cuáles son las posibilidades de que Google's Go se convierta en un lenguaje convencional? [cerrado]

58

¿Quién aquí está aprendiendo Go? ¿Están buscando otras compañías usarlo? ¿Es probable que sea ampliamente utilizado?

interestar
fuente
21
Ruby se vuelve popular después de los rieles, Objective-C después de iPhone, ¿para qué aftersirve?
ohho
1
Terrible, no resuelve nada para la mayoría de las personas.
Daniel Little
66
Las posibilidades son entre 0 y 1. Cualquier cosa más específica requeriría un doctorado en pronóstico, que no poseo.
Rein Henrichs
1
@Rein Henrichs: obtendrá uno, aunque el comité requerirá algunos cambios en la tesis final
Martin Beckett
3
Google realmente debería considerar desarrollar un SDK de Android para el lenguaje Go. Al menos como un comienzo.
setzamora

Respuestas:

46

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.

Mason Wheeler
fuente
13
@ixtmixilix: ¿Hablas en serio? App Engine y GWT dicen lo contrario.
imgx64
44
@ixtmixilix: Guice (un marco de IoC basado en Java) está escrito por Google y se utiliza en la interfaz de AdWords y Wave. Google seam para usar varios idiomas.
mlk
3
+1 Estoy de acuerdo con su argumento principal (FORTRAN, COBOL y C están en vivo y bien), pero no estoy de acuerdo con Go, porque es solo un experimento lejos de tener patrocinio corporativo.
Apalala
2
AT&T realmente no presionó C o C ++. C se hizo popular porque era el lenguaje de Unix, y más tarde porque era mejor que Pascal para programas más grandes. C ++ simplemente se extendió, según el libro de Stroustrup "Diseño y evolución de C ++". Por lo general, los idiomas necesitan una aplicación excelente o un gran patrocinio corporativo para alcanzar el éxito, pero los idiomas pueden alcanzarlo sin eso o fallar con él.
David Thornley
3
Han pasado cinco años, ¿qué te parece ahora?
hippietrail
17

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.

Jonas
fuente
17
Estoy en desacuerdo. Eche un vistazo al código fuente de Linux para 'echo', luego eche un vistazo a la implementación Go de echo. Si el lenguaje puede eliminar miles de líneas de un comando simple como ese, probablemente puede eliminar líneas de cosas como bibliotecas de procesamiento de gráficos. Y si puede eliminar las líneas de las bibliotecas de procesamiento de gráficos, tal vez la gente del software de identificación (por ejemplo) algún día lo encuentre más útil que C / C ++. Y dado que id tiene la costumbre de lanzar el código fuente de sus juegos, los gráficos en 3D en Go podrían ser enormes en 5 años.
ixtmixilix
14
@ixtmixilix Linux no tiene nada que ver con echo, eso es parte de GNU.
alternativa
3
¿Alguna vez has visto algo escrito en erlang? Eso no es horrible.
El conserje de Unix
2
Creo que Go solo superará C / C ++ como un lenguaje de sistema si el SO de Google despega. Si el sistema operativo de Google no despega, creo que será mucho más difícil llegar a la corriente principal.
Jordan Parmer
2
Neiter creo que Go crecerá muy rápido. Mis razones: 1. La sintaxis es bastante extraña 2. Demasiado limbo 3. La biblioteca no es exhaustiva 4. El modelo de simultaneidad es mejor en Erlang
Daniel Voina
15

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.

dsimcha
fuente
77
re "ni siquiera tenía excepciones" Es una decisión importante que se tomó - golang.org/doc/go_faq.html
user151019
1
@ Mark: Interesante. El pánico y la recuperación parecen excepciones truncadas. D tiene declaraciones de alcance, que son más o menos equivalentes a diferir (), pero con excepciones normales.
dsimcha
3
No tiene excepciones, pero no las necesita. En cambio, permite múltiples valores de retorno, lo que hace que sea 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.
crazy2be
3
"D es técnicamente mucho más fuerte que Go", "Su diseño es demasiado minimalista". Es interesante cómo dices esto como si fuera un hecho. Es solo tu opinión, acéptalo.
Moshe Revah
10

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:

  • iteración sobre rangos
  • Canales (olvide mutexes, etc.)
  • sin jerarquía de tipos, solo herencia de interfaz
  • de hecho, Go ni siquiera conoce clases, sino "tipos" más flexibles: las interfaces se heredan automáticamente cuando los métodos definidos coinciden
  • menos repetitivo: en i := 1lugar 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);
  • excepciones ("pánico") solo para casos realmente excepcionales: en los demás casos, la función propensa a errores puede devolver un parámetro de error adicional que puede ignorar fácilmente

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.

Philip
fuente
2
Recientemente me enamoré de Go mientras lo aprendía para la programación de AppEngine, y no podría haberlo dicho mejor que tú. Bien hecho.
Adam Crossland
5

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).

mbq
fuente
5

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í.

Emmaly Wilson
fuente
3

¿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:

  • Haga que los clientes le exijan que lo use
  • Haga que la gerencia le exija que lo use
  • La gerencia no lo criticará por usarlo

Opinión de los desarrolladores:

  • Herramientas de lenguaje comúnmente disponibles (p. Ej., En distribuciones de Linux)
  • Las herramientas de idiomas estarán disponibles durante 10 años.
  • Crea artefactos de software que persistirán y se utilizarán durante al menos 10 años.

Visión de carrera:

  • Las habilidades específicas del idioma son transferibles a otros trabajos
    • Los reclutadores lo piden

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).

Compañeros de Donal
fuente
Gran resumen de lo que significa "corriente principal". Creo que Go tiene todo esto, excepto "los clientes exigen que lo uses"
Comodín
2

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.

mrhassell
fuente
1

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.

SnowMonkey
fuente
1

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.

Ricardo
fuente
0

Sospecho que si se convierte en mainstream dependerá de si Google lo adopta como un lenguaje compatible para appengine y / o GWT.

Chris Buckett
fuente
2
¿Cómo sería útil un lenguaje de sistemas para Google App Engine?
ixtmixilix
Diría que solo porque es un lenguaje de sistemas compilado en código de máquina en la actualidad no evitaría que Google apunte a otras plataformas en el futuro. Solo mire lo que han hecho con Java compilando a JavaScript en el caso de GWT y configurando el dalvik vm para Android. Del mismo modo, Facebook compila PHP. Podría imaginar una salida de Go que podría instalarse en appengine en algún momento en el futuro.
Chris Buckett
+1: lo importante es que sea útil para algo. Solo mira lo que hizo el iPhone para Objective-C.
3
Bueno, eso acaba de suceder . Ahora veamos si despega ...
Elad
3
Para el registro, actualmente estoy desarrollando una aplicación web grande y ambiciosa en el tiempo de ejecución de AppEngine Go. Go es enormemente productivo y rápido. El código es muy legible. Es un lenguaje maravilloso.
Adam Crossland
0

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

Daniel YC Lin
fuente