哪些语言是动态类型和编译的(哪些是静态类型和解释的)?

Ski*_*ick 37 type-systems programming-languages static-typing dynamic-typing

在我对动态和静态类型的阅读中,我不断反对编译静态类型语言的假设,同时解释动态类型语言.我知道一般来说这是真的,但我对异常感兴趣.

我真的希望有人不仅可以提供这些例外的一些例子,而是试图解释为什么决定这些语言应该以这种方式工作.

Nor*_*sey 36

这是一些有趣系统的列表.它并非详尽无遗!

动态输入和编译

  1. Gambit Scheme编译器,Chez Scheme,Will Clinger的Larceny Scheme编译器,Bigloo Scheme编译器,以及许多其他编译器.

    为什么?

    很多人都非常喜欢Scheme.作为数据的程序,良好的宏观系统,35年的发展,大社区.但他们想要表现.因此,许多优秀的本机代码编译器 - Chez Scheme甚至是一个成功的商业产品(解释的字节码是免费的;您支付的本机代码).

  2. 用于Lua的LuaJIT即时编译器.

    为什么?

    表明它可以做到.然后,人们开始喜欢在他们的Lua程序上获得3倍的加速.Lua参与很多游戏,性能很重要,而且它也在逐渐渗透到其他产品中.Adobe Lightroom中70%的代码是Lua.

  3. iconc 图标 -to-C编译器.

    为什么?

    使用它的五十个人都喜欢 Icon.完全不同寻常的评估模型,最具创新性(在我看来,最好的)字符串处理系统.但是这种评估模型非常昂贵,特别是在20世纪80年代后期的计算机上.通过将Icon编译为C,Icon Project使大型Icon程序可以在更短的时间内运行.

结论:人们首先开发一种动态类型语言的附件,可能是一个重要的代码库.最终,社区吐出一个本机代码编译器,以便您可以获得更好的性能并解决更大的问题.

静态类型和解释

这个类别不常见,但......

  1. 目标Caml.ML的方言,是语言设计中许多创新实验的载体.

    为什么?

    非常便携的系统和非常快的编译时间.人们喜欢这两种属性,因此新的语言设计思想被广泛传播.

  2. 莫斯科ML.标准ML具有模块系统的一些额外功能.

    为什么?

    便携,快速的编译时间,易于进行交互式读/评估/打印循环.成为一个流行的教学编译器.

  3. C-TERP.我认为可能来自Gimpel Software的旧产品.Sabre C-a产品我认为你不能再买了.

    为什么?

    调试.特别是,在MS-DOS下调试20世纪80年代的硬件.对于非常少的资源,你可以在非常有限的硬件上调试C代码得到很好的帮助(想想:4.77MHz处理器带有8位总线,640K的RAM满载).几乎不可能为本机编译的代码获得良好的可视化调试器,但使用解释器,相当容易.

  4. UCSD Pascal-使"P代码"成为家喻户晓的系统.

    为什么?

    教师喜欢Niklaus Wirth的语言设计,编译器可以运行在非常小的机器上.Wirth的清洁设计和UCSD P系统是无与伦比的组合,Pascal是20世纪70年代标准教学语言.年轻人可能会发现很难理解在20世纪70年代,在第一门课程中没有关于教什么语言的辩论.今天我知道使用C,C++,Haskell,Java,ML和Scheme的程序.在20世纪70年代,它总是帕斯卡尔,而加州大学圣地亚哥分校的P系统是一个很重要的原因.

    如果你想知道,P代表便携式.

简介:解释静态类型语言是快速实现每个人的一种很好的方法.(它也有利于青铜时代硬件的调试.)

  • 哇,很棒的回答:D非常感谢. (3认同)