0

不管它的优点是什么,Adobe 的 Actionscript 3 提供了一个独特的机会来探索类型化语言与非类型化语言的后果,因为它几乎是 javascript 的严格超集,具有严格类型声明的所有语法优势/开销、声明性强制转换、等等

这使得可能的是比较两种方式编写的相同代码,同时分解出基本的语言语法。

这让我想知道是否有任何量化证据表明强类型的真正好处,特别是在编译期间的错误检查方面,在错误率、编程效率和代码量方面;还是我们的观点完全基于推测和猜想?是否有任何其他可以同时使用的语言(不包括老式的 VB——无论哪种方式都不是一种备受推崇的语言。)

我已经在这两种语言上花费了大量时间,但还没有最终决定我更喜欢哪种方式,我宁愿不添加轶事证据 - 我正在寻找客观信息。

4

6 回答 6

1

在我看来,像 C# 这样的强类型语言可以在编译期间识别许多被忽略的错误,这些错误不会在松散类型的语言中被捕获,因此会在以后导致运行时错误。我不认为这只是一种猜测,因为严格编译可以预见到以后会在运行时导致错误的问题。这可能会消除您在实现过程中忽略的大多数编码错误,但编译器可以轻松找到并修复这些错误。

于 2009-01-07T03:42:32.893 回答
1

这是编程中最伟大的宗教战争之一,也许只有一个真正的编辑器 EMACS 和撒旦 vi 的邪恶产物之间的冲突才能超越。

基本上,如果用动态语言编写的程序是正确的,那么它可以转换为静态类型语言并且仍然是正确的,反之亦然。真正静态类型语言的优势在于,在动态语言中运行时出现的错误可以在静态类型语言中在编译时识别出来。

然而,在这些情况下经常被忽视的是,静态类型语言通常具有逃逸舱口(如类型转换),并且显然动态语言可以使用类型推断来推断显然是动态表达式的类型并将其视为静态类型。

在幕后,真正重要的是程序员。如果程序员认为程序是正确的,那么它在静态或动态语言中都是正确的。我不知道有任何好的实验证据表明其中任何一个在实践中更有成效或更容易出错。

于 2009-01-07T04:27:13.677 回答
1

静态类型的价值对我来说似乎非常有限,如果你像我一样相信,除非你有一个测试证明它是真实的,否则你不能说一个软件是真的。如果您接受并实践这一点,那么在编译时还是在测试时识别错误在很大程度上是无关紧要的。

在这一点上,我宁愿使用这两种语言中更简洁的一种,根据我的经验,这两种语言都是动态语言。

另一方面,静态类型只有在您不编写测试时才能真正帮助您。如果是这种情况,静态类型可能不足以确保您的软件正常运行。

于 2009-01-07T04:35:27.717 回答
0

OP 和 felipecsl 在谈论打字学科时对使用的术语感到困惑。

静态类型意味着在编译时检查类型(无论编译时在语言中意味着什么)。动态类型意味着在执行表达式/语句时检查类型。例如,强类型意味着您不能将指针颠覆(强制转换)为整数。弱打字与强打字相反。

据我所知,没有“严格打字”。

现在让其他人回答实际问题;-)

于 2009-01-07T04:42:35.720 回答
0

Weak typed requires more maintenance time. As programs get more complex, more problems arise due to there not being a compiler to pick up obvious problems. Not recommended for big complex projects. I speak from experience.

于 2013-02-07T14:29:32.847 回答
-1

统计类型的语言。将它们的变量和表达式作为固定类型,由程序员明确声明或推断。编译器。使用这个。信息,此处的类型检查将在编译时进行。虽然动态类型的 lang 的值是固定的,但变量和 xxpressions 不是固定的。由于事实是,当计算操作数时,它可能返回不同的值,然后在计算操作数后执行类型检查。即在计算之后但在运行时执行操作之前

于 2011-09-17T12:51:31.377 回答