javascript - tipados - tipos dinamicos
¿El rubí está fuertemente o débilmente tipado? (6)
¿El rubí está fuertemente o débilmente tipado?
Es de suponer que lo mismo es cierto para Javascript.
Consideraría estos lenguajes pato mecanografiados .
La respuesta simplificada en exceso es que tanto ruby como javascript están débilmente tipados.
Sin embargo, esta pregunta no es tan clara como podría parecer, consulte este artículo de la wikipedia para una discusión más profunda sobre la diferencia entre los idiomas fuerte y débilmente tipados.
Si bien puedes entrar en discusiones sobre la definición de esos términos, diría:
Ruby teclea dinámicamente y con fuerza, mientras que JavaScript se escribe de manera dinámica y débil.
Wikpedia lo etiqueta como "dinámico (''pato'') escrito".
En cuanto al comentario de Pop acerca de que es "de tipo fuerte", no estoy seguro de que su explicación encaje realmente con lo que sucede bajo las sábanas. La MRI realmente no "verifica" para ver si se puede realizar una operación en un objeto; simplemente envía el objeto al mensaje, y si ese objeto no acepta ese mensaje (ya sea por una declaración de método o manipulándolo en #method_missing) lo hace barfs. Si el tiempo de ejecución realmente se verificó para asegurarse de que las operaciones fueran posibles, #method_missing no funcionaría.
Además, debe tenerse en cuenta que, dado que todo en Ruby es un objeto (y lo digo en todo ), no estoy seguro de que lo que dijo sobre "no en un sentido lógico" sea exacto. En Ruby, eres un objeto o un mensaje.
En mi humilde opinión, Ruby tiene un tipado fuerte pero dinámico.
Ruby es " fuerte mecanografiado ".
El tipado fuerte significa que el tipo de un objeto (no en el sentido de OOP, pero en un sentido general) se verifica antes de que se ejecute en él una operación que requiera un cierto tipo.
Débil mecanografiado significa que no se realiza ninguna verificación para garantizar que la operación tenga éxito en el objeto. (Por ejemplo, cuando una función accede a una cadena como y una matriz de flotantes, si no se realiza ninguna verificación de tipo, entonces la operación está permitida)
Editar: Han pasado 6 años desde que se publicó esta respuesta y creo que merece algunas aclaraciones adicionales:
A lo largo de los años, la noción de que "la seguridad del tipo es un dial, no un absoluto" comenzó a utilizarse a favor del significado binario (sí / no)
Ruby es "más fuerte" tipeado (con una "er") que la mayoría de los lenguajes dinámicos típicos. El hecho de que Ruby requiere declaraciones explícitas para la conversión IE: Array ("foo"), "42" .to_i, Float (23), acerca el marcador de tipo Ruby al final del espectro "Strong Typed" que el "weak typed" .
Entonces, yo diría que "Ruby es un lenguaje dinámico más fuerte que la mayoría de los lenguajes dinámicos comunes".