En busca de aclaraciones sobre las contradicciones aparentes con respecto a los idiomas débilmente mecanografiados
Creo que entiendo la tipificación fuerte, pero cada vez que busco ejemplos de lo que es la tipificación débil termino encontrando ejemplos de lenguajes de programación que simplemente coaccionan/convierten tipos automáticamente.
Por ejemplo, en este artículo llamado Typing: Strong vs. Weak, Static vs. Dynamic dice que Python está fuertemente escrito porque obtienes una excepción si intentas:
Python
1 + "1"
Traceback (most recent call last):
File "", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Sin embargo, tal cosa es posible en Java y en C#, y no los consideres débilmente mecanografiados solo por eso.
Java
int a = 10;
String b = "b";
String result = a + b;
System.out.println(result);
C#
int a = 10;
string b = "b";
string c = a + b;
Console.WriteLine(c);
En este otro artículo llamado Weakly Type Languages el autor dice que Perl se escribe débilmente simplemente porque puedo concatenar una cadena a un número y viceversa sin ninguna conversión explícita.
Perl
$a=10;
$b="a";
$c=$a.$b;
print $c; #10a
Así que el mismo ejemplo hace que Perl se escriba débilmente, pero no Java y C#?.
Vaya, esto es confuso
Los autores parecen dar a entender que un lenguaje que impide la aplicación de ciertas operaciones sobre valores de diferentes tipos está fuertemente tipeado y lo contrario significa débilmente tipeado.
Por lo tanto, en algún momento me he sentido incitado a creer que si un idioma proporciona muchas conversiones automáticas o coerción entre tipos (como perl) puede terminar siendo considerado débilmente escrito, mientras que otros idiomas que proporcionan solo unas pocas conversiones pueden terminar siendo considerados fuertemente escribir.
Me inclino a creer, sin embargo, que debo estar equivocado en esta interpretación, simplemente no sé por qué o cómo explicarlo.
Entonces, mis preguntas son:
- ¿Qué significa realmente que un lenguaje sea verdaderamente débilmente escrito?
- ¿Podría mencionar algún buen ejemplo de tipeo débil que no esté relacionado con la conversión automática/coerción automática realizada por el lenguaje?
- ¿Puede un lenguaje ser tipeado débilmente y fuertemente al mismo tiempo tiempo?
Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32
Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52