tipado sinonimo qué que lenguaje fuerte estatico dinamico definicion concepto strong-typing

strong typing - sinonimo - ¿Cuáles son los aspectos clave de un lenguaje fuertemente tipado?



tipado sinonimo (8)

¿Qué hace que un lenguaje sea fuertemente tipado? Estoy buscando los aspectos más importantes de un lenguaje fuertemente tipado.

Ayer pregunté si PowerShell estaba fuertemente tipado, pero nadie podía estar de acuerdo con la definición de "fuertemente tipado", así que estoy buscando aclarar la definición.

Siéntase libre de vincular a wikipedia u otras fuentes, pero no corte y pegue solo para su respuesta.


El término "fuertemente tipificado" no tiene una definición acordada.

Hace una "gran" discusión en una guerra de llama, porque cada vez que alguien se prueba que está equivocado, puede simplemente redefinirlo para que signifique lo que quieran que signifique. Aparte de eso, el término no sirve para nada.

Lo mejor es simplemente no usar el término o, si lo usa, definirlo rigurosamente primero. Si ve que otra persona lo usa, pídale que defina el término.

Todos tienen su propia definición. Algunos de los que he visto son:

  • fuertemente tipificado = estáticamente tipado
  • fuertemente tipificado = explícitamente escrito
  • fuertemente tipificado = nominalmente escrito
  • fuertemente escrito = escrito
  • fuertemente tipado = no tiene tipos de letra implícitos, solo explícito
  • fuertemente tipado = no tiene typecasts en absoluto
  • fuertemente tipificado = lo que entiendo / mecanografiado débilmente = lo que no entiendo
  • fuertemente tipado = C ++ / tipeado débilmente = todo lo demás
  • fuertemente tipado = Java / débilmente tipado = todo lo demás
  • fuertemente tipeado = .NET / escrito débilmente = todo lo demás
  • fuertemente tipado = mi lenguaje de programación / débilmente tipado = tu lenguaje de programación

En Type Theory, existe la noción de que un sistema de tipo es más fuerte que otro. En particular, si existe una expresión e1 tal que sea aceptada por un sistema de tipo T1 , pero rechazada por un sistema de tipo T2 , entonces se dice que T2 es más fuerte que T1 . Hay dos cosas importantes a tener en cuenta aquí:

  1. esto es una comparación, no un absoluto: no hay fuertes o débiles , solo más fuertes y más débiles
  2. no hay ningún valor implicado por el término; más fuerte no significa mejor

Escuché a alguien decir en una entrevista (creo que fue Anders Hejlsberg de C # y la fama del turbo pascal) que la tipificación fuerte no es algo que esté activado o desactivado, algunos idiomas tienen un sistema de tipos más fuerte que otros.

También existe una gran confusión entre la tipificación fuerte, débil, estática y dinámica, donde los lenguajes tipados de forma estática asignan tipos a las variables y los lenguajes dinámicos dan tipos a los objetos almacenados en las variables.

Pruebe wikipedia para obtener más información, pero no espere una respuesta definitiva: http://en.wikipedia.org/wiki/Strongly_typed_language


Fuertemente tipeado significa que declaras tus variables de un cierto tipo, y tu compilador lanzará un ataque de histeria si intentas convertir esa variable a otro tipo sin emitirla.

Ejemplo (en java te importa):

int i = 4; char s = i; // Type mismatch: cannot convert from int to char


La clave es recordar que existe una distinción entre tipo estático y fuertemente tipado. Un lenguaje fuertemente tipado simplemente significa que una vez asignada, una variable determinada siempre se comportará como un tipo determinado hasta que se reasigne. Por definición, los lenguajes tipados estáticos como Java y C # están fuertemente tipados, pero también lo son muchos lenguajes dinámicos populares como Ruby y Python.

Entonces en un lenguaje fuertemente tipado

x = "5"

x siempre será una cadena y nunca será un número entero.

En ciertos lenguajes débilmente tipados, podrías hacer algo como

x = "5" y = x + 3 // y is now 8


Las personas están confundiendo estáticamente tipado con fuertemente tipado. Estáticamente tipeado significa "Una cadena es una cadena es una cadena". Muy tipado significa "Una vez que hagas de esto una cadena, se tratará como una cadena hasta que se reasigne como algo diferente".

editar: veo que alguien más lo señaló después de todo :)


El término "fuertemente tipado" es completamente absurdo. No tiene significado, y nunca lo hizo. Incluso si algunas de las definiciones reclamadas son precisas, no veo ningún propósito en cuanto a la razón para la distinción; ¿Por qué es importante saber, debatir o debatir si un idioma está fuertemente tipado (lo que sea que eso signifique) o no?

Esto es muy similar a los términos ''Web 2.0'' u ''OEM'', que tampoco tienen un significado real.

Lo que es interesante considerar es cómo comienzan estas frases y se enraizan en la comunicación cotidiana.


El lenguaje de torsión estática es aquel en el que las variables deben declararse antes de que puedan ser utilizadas. Mientras que un lenguaje de tipo dinámico es uno en el que las variables se pueden usar en cualquier momento, incluso si no se declaran. La única condición es que deben inicializarse antes de que puedan ser utilizados.

Ahora, vayamos a lenguaje fuertemente tipado . En dicho lenguaje, las variables tienen un tipo, y siempre serán ese tipo. No se pueden asignar a un valor de otro tipo. Mientras que un lenguaje débilmente tipado es uno donde las variables no tienen un tipo. Uno puede asignar valor de cualquier tipo a ellos.

Ejemplo: Java es un lenguaje tipado estáticamente y fuertemente tipado . Está tipado estáticamente, porque uno tiene que declarar las variables antes de que puedan ser utilizadas. Está fuertemente tipado, porque una variable de un tipo particular int siempre contendrá valores enteros. No puede asignarles un valor boolean .

Powershell es un lenguaje tipado dinámicamente y débilmente tipado . Se tipea dinámicamente ya que las variables no necesitan ser declaradas antes de usarlas. está débilmente tipado ya que una variable puede contener el valor de un tipo en cierto punto mientras que un valor de otro tipo en un punto diferente de tiempo.


Según BC Pierce, el chico que escribió "Tipos y lenguajes de programación y tipos avanzados y lenguajes de programación":

Pasé algunas semanas tratando de ordenar la terminología "fuertemente tipado", "estáticamente estátizado", "seguro", etc., y me pareció increíblemente difícil ... El uso de estos términos es tan vario que los hace casi inútil.

Así que no me pregunto por qué sus colegas no están de acuerdo.

Me gustaría ir con la respuesta más simple: si puede concatenar una cadena y un int sin conversión, entonces no está fuertemente tipado.

EDITAR: como se indica en los comentarios, Java simplemente hace eso :-(