it-swarm-es.com

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

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

58
interstar

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 nos fue traído 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 muy oscuros hasta que fueron descubiertos y promocionados por Apple y Google, respectivamente, y luego de repente despegaron realmente. Pero los idiomas sin un importante Los patrocinadores tienden a languidecer en la oscuridad, no importa 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.

46
Mason Wheeler

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.

17
Jonas

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 Computer Language Benchmark Game es una buena medida (es cierto indicador muy aproximado), no es tan rápido como debe ser un lenguaje de sistemas "real".

Creo que el idioma con la mejor oportunidad para llenar el vacío de un lenguaje de sistemas más moderno 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.

15
dsimcha

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 agradables 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 las clases, sino "Tipos" más flexibles: las interfaces se heredan automáticamente cuando los métodos definidos coinciden
  • menos repetitivo: i := 1 en lugar de int i = 1, func f(x, y, z int) en lugar de void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2} en lugar de class 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 agradables 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.

10
Philip

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

5
mbq

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.

Ir 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 y 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 que falla para mí es para aplicaciones 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. Se siente bien hacer un trabajo real y no tener que jugar con soluciones alternativas.

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, al igual que el tipo de número y selección que Perl tiene con CPAN. Llegará allí.

5
Emmaly Wilson

¿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

Vista de los desarrolladores:

  • Herramientas de lenguaje comúnmente disponibles (por ejemplo, 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.

Vista de carrera:

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

Dado todo lo anterior, diría que la única respuesta honesta es probablemente "demasiado pronto para decirlo", pero creo que el mejor indicador de una longevidad real es el número de pequeñas empresas que usan el idioma . Las grandes organizaciones están muy bien, incluso podrían 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).

3
Donal Fellows

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, computación en la nube, búsqueda y 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 en Rails, al menos en algunos contextos.

2
mrhassell

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 entusiasmado mucho:

http://golang.org/doc/go_spec.html#Channel_types

Primero encontré el concepto de Canales en Occam-pi y debo decir que es uno de los mejores conceptos de programación jamás . 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 visto), 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.

1
Richard

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 eso muchos 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.

1
SnowMonkey

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

0
Chris Buckett

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 no inicializado variable, en la primera vez, lo intento por primera vez, ya que es python + C pero con una velocidad cercana a 1/2 velocidad) De c.

Pero, después de aprender profundamente, descubrí que puede ser adecuado desarrollar tolerancia a fallas y arquitectura escalable

0
Daniel YC Lin