有编译的*编程语言是否具有动态,甚至是弱类型?

sub*_*sub 36 programming-languages static-typing typing dynamic-typing

我想知道是否有一种编程语言可编译为机器代码/二进制文件(不是字节码然后由VM执行,在考虑打字时完全不同),它具有动态和/或弱类型,例如:

想一下编译语言,其中:

  • 变量不需要声明
  • 可以在运行时创建变量
  • 函数可以返回不同类型的值

问题:

  • 有这样的编程语言吗?
  • (为什么不?

我认为一种动态但强大的类型化编译语言真的能感觉到,但它有可能吗?

Ste*_*hen 32

我相信Lisp符合这种描述.

http://en.wikipedia.org/wiki/Common_Lisp


Jak*_*org 6

Objective-C可能具有您寻求的一些属性.可以在运行时打开和更改类,并且可以向对象发送任何类型的消息,无论它是否通常响应它.通过这种方式,您可以实现鸭子类型,就像在Ruby中一样.id大致相当于a 的类型void*可以赋予接口,该接口指定(否则未知)类型将遵守的合同.


Rob*_*vey 6

C#4.0具有许多(如果不是全部)这些特征.如果您真的需要本机机器代码,可以使用实用程序将字节码编译为机器代码.

特别是,dynamic关键字的使用允许对象及其成员在运行时动态绑定.

查看Anders Hejlsberg的视频,C#的未来,获得一本入门书:

http://channel9.msdn.com/pdc2008/TL16/


Rob*_*lex 5

对的,这是可能的。见朱莉娅。它是一种动态语言(您可以编写没有类型的程序),但它永远不会在 VM 上运行。它在运行时将程序编译为本机代码(JIT 编译)。