问题标签 [static-typing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
260709 浏览

type-safety - 强类型语言和静态类型语言有什么区别?

另外,一个是否意味着另一个?

0 投票
3 回答
700 浏览

perl - 在鸭子类型语言中模拟静态类型的各个方面

在我目前的工作中,我正在构建一套严重依赖对象的 Perl 脚本。(在哈希上使用 Perlbless()以尽可能接近 OO)

现在,由于缺乏更好的表达方式,我公司的大多数程序员都不是很聪明。更糟糕的是,他们不喜欢阅读文档,而且似乎很难理解其他人的代码。牛仔编码是这里的游戏。每当他们遇到问题并试图解决它时,他们都会想出一个可怕的解决方案,但实际上什么也没解决,而且通常会使情况变得更糟。

坦率地说,这导致我不相信他们用鸭子类型语言编写的代码。举个例子,我看到太多的问题是他们没有因为滥用对象而没有得到明确的错误。例如,如果 typeA有 member foo,并且他们做了类似的事情instance->goo,他们不会立即看到问题。它将返回一个空值/未定义值,他们可能会浪费一个小时来寻找原因。然后最终更改其他内容,因为他们没有正确识别原始问题。

所以我正在集思广益,寻找一种方法来保留我的脚本语言(它的快速发展是一个优势),但在对象未正确使用时给出明确的错误消息。我意识到,由于没有编译阶段或静态类型,因此错误必须在运行时出现。我对此很好,只要用户得到一个非常明确的通知,说“这个对象没有 X”

作为我的解决方案的一部分,我不希望他们在尝试使用方法/变量之前检查它是否存在。

即使我的工作是在 Perl 中,我认为这可能与语言无关。

0 投票
6 回答
1895 浏览

programming-languages - 你知道一种带有静态类型检查代码是数据的语言吗?

你能命名具有静态类型检查的语言(如 Java)以及代码在哪里(如 LISP 中的数据)吗?我指的是一种语言中的两件事。

0 投票
1 回答
118 浏览

recursion - 如何定义一个可以返回指向自身的指针的函数?

我想写这样的代码:

是否有可能这样做是一种完全类型安全的方式?假设 C、C++、D、C#、Java 或任何其他静态类型语言。

0 投票
3 回答
282 浏览

static-typing - 您知道动态类型语言中优雅解决方案的任何示例吗?

想象一下两种语言(除了类型信息)确实具有完全相同的语法,但一种是静态类型,而另一种使用动态类型。然后,对于每个用静态类型语言编写的程序,可以通过删除所有类型信息来派生一个等效的动态类型程序。由于这不一定是可能的,因此动态类型程序的类严格大于静态类型程序的类。让我们称之为动态类型程序,其中没有变量到类型的映射,使它们成为静态类型真正的动态类型程序”。

由于这两个语言家族都绝对是图灵完备的,我们可以肯定,对于每一个真正的动态类型程序,都有一个静态类型程序在做完全相同的事情,但我经常读到“有经验的程序员能够编写非常优雅的代码动态类型语言”。因此我问自己:有没有真正动态类型程序的好例子,任何等效的静态类型程序显然更复杂/更不“优雅”(无论这意味着什么)?

你知道这样的例子吗?

0 投票
4 回答
29343 浏览

programming-languages - 静态类型的完整 Lisp 变体是否可能?

静态类型的完整 Lisp 变体是否可能?存在这样的东西是否有意义?我相信 Lisp 语言的优点之一是其定义的简单性。静态类型会损害这个核心原则吗?

0 投票
1 回答
478 浏览

c# - 为什么 foreach 会跳过接口类型的编译时类型检查?

当我在 C# 中使用foreach循环时,如果项目类型是接口类型,则似乎不执行编译时类型检查。

例如

这将愉快地编译并在运行时导致异常,在编译时很清楚这是没有意义的。如果我将项目类型更改SomeInterface为另一个类,则恢复编译时类型检查:

为什么当项类型是接口时没有编译时类型检查?

(这发生在 Visual Studio 2008 中的 .NET 3.5 SP1 中)

0 投票
4 回答
378 浏览

java - 为什么Java排名第一?

为什么Java是最常用的编程语言?为什么大多数程序员的工作是 Java ?

不要误会我的意思吗?我喜欢 Java 并且我在 Java 中工作?我没有什么反对的吗?

此外,我正在尝试从 OOP 框架中学习其他一些东西,例如 Clojure 及其函数式编程。

但是,我想知道,为什么 Java 排名第一?我的意思是,动态语言(Ruby、Python、Php、JavaScript)的人说静态类型语言(Java、C/C++、C#)的人羡慕他们的生产力?他们说他们能更快地完成工作......

好吧,如果动态语言的生产力更高,那么 Java 怎么会站在它的立场上呢?

0 投票
1 回答
1026 浏览

scala - 使用 scala 调用 java.util.Hashtable#put

我在调用老式哈希表时遇到了意外的麻烦。这里发生了什么?

PS,问题仍然存在,但我有一个讨厌的解决方法:

0 投票
7 回答
2296 浏览

java - 如何处理 Python ~ 静态类型?

我来自 Java 世界,我想知道除了在编译代码时丢失错误之外,Python 中的动态类型还有什么好处?

你喜欢 Python 的打字吗?你有一个例子,它在一个大项目中有所帮助吗?是不是有点容易出错?