Поиск разъяснений по очевидным противоречиям относительно слабо типизированных языков



Я понимаю строгой типизации, но каждый раз, когда я ищу примеры того, что является слабым типом, я в конечном итоге нахожу примеры языков программирования, которые просто принудительно/автоматически преобразуют типы.



например, в этой статье под названием ввод: сильный против слабого, статический против динамического говорит, что Python строго типизирован, потому что вы получаете исключение, если вы пытаетесь:



Python



1 + "1"
Traceback (most recent call last):
File "", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'


, например это возможно в Java и в C#, и мы не считаем их слабой типизацией только для этого.

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);


в другой статье под названием Слабо Языках Типа автор говорит, что Perl слабо типизирован просто потому, что я могу объединить строку с числом и наоборот без какого-либо явного преобразования.



Perl



$a=10;
$b="a";
$c=$a.$b;
print $c; #10a


так же пример делает Perl слабо типизированным, но не Java и C#?.



блин, это сбивает с толку enter image description here





поэтому в какой-то момент я почувствовал побуждение полагать, что если язык обеспечивает много автоматических преобразований или принуждения между типами (как perl) может в конечном итоге рассматриваться слабо типизированные, в то время как другие языки, которые обеспечивают только несколько преобразований, могут в конечном итоге считаться строго типизированными.





Итак, мои вопросы:




  • что на самом деле означает для языка быть действительно слабо типизированным?

  • не могли бы вы упомянуть какие-либо хорошие примеры слабого ввода, которые не связаны с автоматическое преобразование / автоматическое принуждение, выполненное языком?

  • может ли язык быть слабо типизирован и сильно типизирован одновременно?

535   0  

Comments

    Ничего не найдено.