相关疑难解决方法(0)

408
推荐指数
8
解决办法
18万
查看次数

寻求澄清关于弱类型语言的明显矛盾

我想我理解强类型,但每次我查找弱类型的例子时,我最终会找到编程语言的例子,这些语言只是自动强制/转换类型.

例如,在本文中名为Typing:Strong vs. Weak,Static vs. Dynamic表示Python是强类型的,因为如果你试图:

蟒蛇

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

但是,在Java和C#中这样的事情是可能的,我们并不认为它们只是因为弱类型.

Java的

  int a = 10;
  String b = "b";
  String result = a + b;
  System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

C#

int a = 10;
string b = "b";
string c = a + b;
Console.WriteLine(c);
Run Code Online (Sandbox Code Playgroud)

在另一篇名为Weakly Type Languages的文章中,作者说Perl是弱类型的,因为我可以将字符串连接到数字而反之亦然,而不进行任何显式转换.

Perl的

$a=10;
$b="a";
$c=$a.$b;
print $c; #10a
Run Code Online (Sandbox Code Playgroud)

所以同样的例子使得Perl弱类型,但不是Java和C#? …

c# python java perl weakly-typed

176
推荐指数
4
解决办法
1万
查看次数

"无类型"是否也意味着学术CS世界中的"动态类型"?

我正在阅读一个幻灯片,上面写着"JavaScript是无类型的".这与我认为的真实相矛盾,所以我开始尝试去学习更多.

JavaScript的每个答案都是一种无类型的语言?他说,JavaScript 不是无类型的,并且提供了各种形式的静态,动态,强大和弱类型的例子,这些都是我熟悉和满意的......所以这不是可行的方法.

所以我问了JavaScript的创建者Brendan Eich,他说:

学术类型使用"无类型"来表示"无静态类型".他们足够聪明,可以看到价值观有类型(呃!).背景问题.

以学术为中心的计算机科学人员是否使用"无类型"作为"动态类型"的同义词(并且这是有效的吗?)还是有更深层次的东西让我失踪?我同意布兰登的观点,认为背景很重要,但任何解释的引用都会很棒,因为我目前的"去"书并没有在这个主题上发挥作用.

我想要明确这一点,以便我可以提高我的理解,因为即使维基百科也没有提到这种替代用法(无论如何我都能找到).如果我错了,我不想在将来使用该术语或质疑该术语的使用:-)

(我也看到一个顶级的Smalltalker说Smalltalk也是"无类型的",所以这不是一次性的,这就是让我完成这个任务!:-))

javascript computer-science types typing

164
推荐指数
6
解决办法
2万
查看次数