ventajas usan tutorial quienes que puedo programacion mejor lenguaje desventajas desarrollar con programming-languages go

programming languages - usan - ¿Cuáles son las ventajas y desventajas del lenguaje de programación Go?



tutorial go (7)

Creo que la respuesta a esto se ha vuelto obsoleta. Golang ha cambiado en los últimos dos años. Muchas correcciones de errores y muchas construcciones nuevas han llegado. Algunas respuestas ya no son válidas:

  1. Go sigue siendo un lenguaje experimental sujeto a cambios. (Supongo que esto podría ser una ventaja dependiendo de cómo lo mires. Para la mayoría, es probablemente una desventaja) . Creo que esto ha cambiado.
  2. Ir a Windows - Ya no es válido. Se ejecuta en Windows y Linux. (No sé sobre MAC)

Más ventajas -

  1. Se trata de un servidor web incorporado que significa que no necesita Apache ni ningún otro servidor web. Esta es una ventaja directa de Go.
  2. Golang tiene goroutines . Los goroutines tienen la capacidad de usar un hilo de manera efectiva. Divide el hilo de nuevo en subprocesos y para proyectos que requieren mayor concurrencia esta será la mejor opción.
  3. Configurar y construir una aplicación en marcha es muy fácil.
  4. Ir a la comunidad: tienen una comunidad muy activa. Si tiene algún problema, primero busque en Golang nut google group y aún si no encuentra la búsqueda o publíquela en https://code.google.com/p/go/issues . Ellos responderán en un máximo de 1 día.

No hace mucho Google salió con este nuevo lenguaje de programación, que se dice que es tan rápido como C e intuitivo y simple como Python. No juzgaré estas afirmaciones, sino que te preguntaré:

¿Cuáles crees que son las ventajas y desventajas de Go?
¿Puede decirnos sobre el uso real que le ha dado a este lenguaje de programación?


Go es una evolución pragmática de C para obtener algunas de las ventajas de los nuevos lenguajes sin perder velocidad y flaqueza.

Parte de su herencia proviene de Pascal y trae una de las características que los usuarios de Delphi siempre han amado en su entorno de compilación: increíbles velocidades de compilación.

Go no innova C en la forma en que lo hizo C ++, sino de manera Pythonish. La influencia más notable es la tipificación de pato (ver el diccionario de Python). Esto reconoce que algunos lenguajes fuertemente tipados crean tantos problemas como resuelven, lo que hace que necesite patrones complejos para lograr lo que podría resolver una interfaz simple utilizada como contrato de llamada. De lejos, esta es la característica que considero el movimiento más audaz y prometedor. Veo, no solo una simplificación en ingeniería, sino también una simplificación en la reingeniería y la evolución de una base de código.

Finalmente, el paralelismo incorporado en el lenguaje es muy prometedor para el tipo de aplicaciones que se orientarán primero. Al carecer de enlaces de interfaz de usuario para cualquier sistema operativo, el primer uso que veo para Go es en la creación de servidores y marcos de aplicaciones. En este sentido, veo una gran similitud en el propósito con Java y seguro que los programadores de Java desearían algo más rápido en la compilación y la ejecución.


Go está construido a partir de tareas asíncronas, goroutines, con transmisión de mensajes entre ellos. Esto es extremadamente escalable: esto se puede asignar a SMT / SMP y clusters (uno puede imaginar un montón de subprocesos de robo de trabajo), y es una buena opción para la dirección lateral de escalado que el silicio ha estado entrando.

Entonces, lo que me molesta es el seguimiento del estado fuera de los goroutines .

Si no hubiera variables globales excepto contenedores simultáneos básicos definidos por el lenguaje, y estos fueron decorados explícitamente en el código, por ejemplo, ''global'' es un prefijo para tales variables, más bien como ''volátil'' está en C, entonces sería el procedimiento Erlang , creo el mundo lo necesita

Sería divertido imaginar cómo se verían estos contenedores concurrentes, y cómo redis / GFS2 / rdbms podría respaldarlo como una opción de tiempo de ejecución, no como una opción de tiempo de código.

Stob lo dice mejor: http://www.theregister.co.uk/2009/12/10/verity_stob/page3.html (lea todo el artículo, es muy bueno)


He puesto mis experiencias actuales en mi blog en http://blog.tideland.biz/category/golang . Hasta donde puedo ver ahora Go es una combinación muy productiva de características bien conocidas de otros idiomas. Compila extremadamente rápido, solo prueba hacer un tiempo para los paquetes, estarás asombrado. Está tipado estáticamente, pero puede codificar casi como en un lenguaje de tipo dinámico. Entonces el código es pequeño y poderoso. Y como ya dijo Will, proporciona un tipo de compatibilidad de concurrencia casi como Erlang / OTP. Trabajar con goroutines y canales es simple, y junto con el nuevo paquete de canales netchan también se puede usar en la red.

Además del lenguaje Go the libs también son importantes. Aquí Go ya viene (el idioma se anunció en noviembre y sigue siendo beta) con un gran conjunto enfocado principalmente en la red, por ejemplo, http o daemons de websocket, motor de plantillas, cifrado, codificación, etc.



Pequeña desventaja: muy mal nombre GO para un lenguaje de programación, imagina buscar en Google por "Go Object" o "Go Maps" y tener gazillion páginas no relacionadas.

EDITAR: aunque puedes usar "golang" y encontrar fácilmente lo que necesitas.


Ventajas:

  • Ve compilaciones muy rápido.
  • Go admite simultaneidad en el nivel de idioma.
  • Las funciones son objetos de primera clase en Go.
  • Ir tiene recolección de basura.
  • Las cadenas y los mapas están integrados en el lenguaje.

Desventajas:

  • Los paquetes distribuidos con Go son bastante útiles, pero todavía hay algunas bibliotecas que extrañará. Más notablemente un conjunto de herramientas de interfaz de usuario.
  • No hay soporte para genéricos en Go, aunque hay muchas discusiones al respecto.

Otros puntos importantes que podrían ser ventajas o desventajas:

  • Ir compila a código de máquina.
  • Go está muy fuertemente tipado.
  • Go no está orientado a objetos en el sentido tradicional.