动态语言,动态类型语言与静态类型语言
转自:http://darrenzhu.iteye.com/blog/2026002?utm_source=tuicool
1.有三个名词容易混淆:
Dynamic Programming Language (动态语言或动态编程语言)
Dynamically Typed Language (动态类型语言)
Statically Typed Language (静态类型语言)
动态语言与动态类型语言
初看起来, 很容易让我们认为它们是同一个概念,毕竟它们之间就差两字:"类型", 是的就因为这两字,它们的确不是同一个概念.
动态语言
动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被 引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。众所周知的ECMAScript(JavaScript)便是一个动态语 言,除此之外如PHP、Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。
大部分动态语言都使用动态类型,但也有些不是。
动态类型语言
所谓的动态类型语言,意思就是类型的检查是在运行时做的.
静态类型语言
类型的检查是在编译时做的. 如果一个编程语言的类型检查,可在不测试运行时期表达式的等价性的情况下进行,该语言即为静态类型的.
强类型与弱类型
类型检查所进行的检验处理以及实行类型的约束,可发生在编译时期(静态检查)或运行时期(动态检查)。静态类型检查是在编译器所进行语义分析中进行的。如 果一个语言强制实行类型规则(即通常只允许以不丢失信息为前提的自动类型转换)就称此处理为强类型,反之称为弱类型。
2.动态类型语言与弱类型语言之间的主要区别
动态类型语言的关键特征是它的类型检查的主体过程是在运行期而不是编译期.
满足这特特征的语言有很多,常用的包括:APL, Clojure, Erlang, Groovy, JavaScript, Jython, Lisp, PHP, Python, Ruby, Smalltalk和Tcl等.相对的,在编译期就进行类型检查过程的语言(如C++和Java)就是最常用的静态类型语言.
另一主要区别是动态类型语言变量无类型而变量值才有类型
想想JavaScript, 定义一个变量a, 你可以将任意类型的变量值赋值给a.
参考文章:
http://en.wikipedia.org/wiki/Dynamic_programming_language
http://en.wikipedia.org/wiki/Type_system
相关推荐
### Python学习中关于动态类型、静态类型、强类型与弱类型的问题 #### 动态类型与静态类型 在计算机编程领域,动态类型和静态类型是两种重要的类型系统分类方式。 **动态类型**(Dynamic Typing)指的是在程序...
动态类型语言与静态类型语言各有优劣,动态语言更灵活,适合快速迭代的开发;静态类型语言则提供了更好的编译时检查,有利于大型项目的维护。强类型和弱类型主要影响的是数据类型处理的严格程度,强类型语言更注重...
汉英语言对比之静态与动态.pdf
弱类型、强类型、动态类型、静态类型语言的区别是什么
然后,在后台代码中,我们需要引用`System.Windows.Markup`命名空间,并定义一个静态资源字典,用于管理不同语言的资源: ```csharp public static ResourceDictionary CultureResources = new ResourceDictionary...
- **Python**:虽然 Python 在表面上看起来是弱类型语言,因为它支持动态类型,但实际上在操作不同类型的数据时仍然需要遵循严格的规则,因此被视为强类型语言。 ### Java 中 WeakHashMap 的使用及特性 #### 五、...
此资源最好搭配讲解,地址http://blog.csdn.net/m_nanle_xiaobudiu/article/details/79267703
今天来说说编程语言中的动态类型语言与鸭子类型。 动态语言 维基百科对动态语言的定义: 动态编程语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他...
**Oczor:多目标编译的静态类型语言** Oczor是一种静态类型的编程语言,它的设计目的是为了提供一种简洁且易于理解的语法,同时具备跨平台编译能力。通过Oczor,开发者可以编写代码,然后将其编译成其他流行的编程...
PureScript 是个小巧而强大的静态类型语言,可以编译成 JavaScript。PureScript 主要是由 Haskell 编写的。PureScript 示例代码:module Main where import Debug.Trace main = trace "Hello, World!"编译...
HTML 静态页面设计语言.
汇编语言和静态分析工具源代码合集.zip汇编语言和静态分析工具源代码合集.zip汇编语言和静态分析工具源代码合集.zip汇编语言和静态分析工具源代码合集.zip汇编语言和静态分析工具源代码合集.zip汇编语言和静态分析...
对于动态类型语言如Python,虽然其灵活性高,但可能会导致运行时的类型错误难以预测。Pyright通过提供静态类型检查,能够在早期阶段捕获这些错误,减少调试时间和提高代码可靠性。 **二、Pyright的主要功能** 1. *...
值得一提的是,随着编程语言的发展,现代的编程语言往往融合了静态类型与动态类型、强类型与弱类型的特点。例如,Python虽然属于动态类型语言,但其3.x版本引入了类型注解,增强了类型的可选静态特性。JavaScript在...
静态网页和动态网页的区别 动态网页和静态网页的区别,首先要分别了解两个概念,就是什么是静态网页,什么是动态网页,并且学会区分哪些是静态哪些是动态。 静态网页: (1)静态网页不能简单地理解成静止不动的...
尽管`pB`的静态类型是`B*`,但由于`vfun`是虚函数,所以调用`pB->vfun()`时,会根据`pB`实际指向的`D`对象的动态类型来调用`D::vfun()`。 然而,需要注意的是,当虚函数与缺省参数结合时,会出现一些特殊情况。缺省...
2. **编译型与静态类型**:与解释型语言(如JavaScript)不同,编译型语言的源代码在运行前被转换为机器码,这通常导致更快的运行速度。静态类型语言要求在编译时声明变量类型,这有助于防止运行时类型错误,提高...
在Java编程语言中,动态绑定和静态绑定是两个重要的概念,它们涉及到方法调用和多态性。了解这两个概念对于深入理解面向对象编程至关重要。本文将详细探讨它们的区别,并通过实例来阐述它们的工作原理。 首先,让...
综上所述,C# 4.0中的dynamic关键字极大地提高了C#语言的灵活性和表达力,尤其是在需要与动态类型交互和编写灵活多变的代码时。它让C#变得更加接近动态编程语言的体验,同时保留了C#作为静态类型语言的强大功能和...