¿Es Google's Go un lenguaje seguro para los tipos?

14

esta página enlace escribe:

  

aunque Go tiene tipos estáticos,   El lenguaje intenta hacer sentir a los tipos.   peso más ligero que en OO típico   idiomas

Por lo tanto, mi pregunta es exactamente si se escribe con seguridad con genéricos (como C #) o se escribe sin apretar (como javascript) u opcional (como la opción estricta en Vb.Net)

    
pregunta Pacerier 19.05.2011 - 09:49
fuente

3 respuestas

26

La seguridad de tipos no es una caja fuerte de tipo blanco o negro o no. Es más de un espectro y algunos idiomas pueden ser de tipo más seguros que otros (y viceversa). Sin embargo, creo que lo que estás pensando con C # frente a Javascript es probablemente la tipificación estática (donde la comprobación de tipos se produce en tiempo de compilación) frente a la tipificación dinámica (donde la comprobación de tipos se produce en tiempo de ejecución). De qué están hablando las preguntas frecuentes de Go.

Google Go se escribe de forma estática, pero una serie de características hacen que "parezca" que se escriba (al menos en cierta forma) de forma dinámica. Por ejemplo, no es necesario que marque explícitamente su clase como implementando ninguna interfaz. Si las firmas del método de su clase coinciden con las de la interfaz, entonces su clase implementa automáticamente esa interfaz (una especie de tipificación de pato). Esto es útil para extender las clases incorporadas y las clases en bibliotecas de terceros, ya que simplemente puede inventar su interfaz para que coincida con los métodos de la clase de terceros y se implementará automáticamente.

La seguridad de tipos es en realidad un "eje" diferente del sistema de tipos. Por ejemplo, C es un lenguaje de tipo estático que no es de tipo seguro: los punteros le permiten hacer casi todo lo que quiera, incluso las cosas que bloquearán su programa. Javascript se escribe de forma dinámica, pero también es seguro para el tipo: no puede realizar operaciones que bloqueen su programa. C # es mayormente de tipo seguro, pero puede marcar explícitamente las áreas de código que son unsafe y hacer cosas que ya no son de tipo seguro.

Google Go también es seguro para los tipos, en el sentido de que no puedes alterar los tipos y bloquear el programa (sin acceso directo a los punteros).

    
respondido por el Dean Harding 21.05.2011 - 01:17
fuente
4

Se escribe de manera segura que un tipo nunca se malinterpretará, pero un tipo incorrecto puede provocar un pánico en el programa.

    
respondido por el dan_waterworth 19.05.2011 - 11:17
fuente
0
El tipo de mapa de

Go no es seguro para subprocesos, se escribe de forma estática. No tiene herencia de tipo, programación genérica, aserciones, sobrecarga de métodos o aritmética de punteros, y por buenas razones.

La seguridad del tipo y la seguridad de la memoria son objetivos a largo plazo, aquí en lie's es un problema.

El tipo de seguridad presenta una sobrecarga, en kilobytes y megabytes, que es aceptable. Go está diseñado con MapReduce y "Big data", exobytes un petabytes de datos, lo que presenta problemas de rendimiento con el tipo de seguridad, la verificación de tipos (boxeo / desempaquetado) genera sobrecargas y quita ciclos al procesamiento.

La seguridad de tipos puede ser restrictiva en la tipificación y el polimorfismo y en la tipificación de pato (lanzar objeto a objeto), esto crea peligros y también un espacio donde los lenguajes como Go son de gran beneficio. C ++ y Java no están siendo reemplazados por Go, es un nuevo lenguaje para ayudar a la programación distribuida y al sistema masivamente paralelo.

La gran declaración de Bruce Eckel: "Ir tiene mucho más sentido para la clase de problemas que originalmente C ++ pretendía resolver", es discutible. C ++ es un lenguaje muy eficiente y la implementación Boost de MapReduce es muy eficiente.

Las primitivas de concurrencia son el futuro. Type safety siempre ha sido un tema muy polémico y Go es el primer idioma para abordar este problema en 20 años, o desde Algol.

    
respondido por el mrhassell 10.05.2012 - 07:31
fuente

Lea otras preguntas en las etiquetas