当前位置: 首页 > 编程笔记 >

动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍

贺劲
2023-03-14
本文向大家介绍动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍,包括了动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍的使用技巧和注意事项,需要的朋友参考一下

关于如题这几个概念,大部分人应该比较熟悉,但是我昏了好久,所以写下来加深印象。

1. 动态语言

又叫动态编程语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。

而其实我们平时说的“动态语言”应该指的是“动态类型语言”。至少我之前一直是这么认为的。

2. 动态类型语言

在运行时,确定类型的语言。
编译时与类型无关。一般在变量使用之前不需要声明变量类型,而变量的类型通常是由被赋的值的类型决定。 如php、Python和Ruby。

3. 静态烈性语言

与动态类型语言正好相反,在编译时,便需要确定类型的语言。即写程序时需要明确声明变量类型。如C/C++、Java、C#等。

对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed。

4. 强类型语言

强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。
强类型定义语言是类型安全的语言。

5. 弱类型定义语言

数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。
另外,由上边看出“这门语言是不是动态类型语言”与“这门语言是否类型安全”之间是完全没有联系的!

 类似资料:
  • 类型断言(Type Assertion)是一个使用在接口值上的操作,用于检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型。 在Go语言中类型断言的语法格式如下: value, ok := x.(T) 其中,x 表示一个接口的类型,T 表示一个具体的类型(也可为接口类型)。 该断言表达式会返回 x 的值(也就是 value)和一个布尔值(也就是 ok),可根据该布尔值判断 x 是否为 T

  • 技巧 gcc是通过文件名后缀来判断源代码语言类型的。 如果你从标准输入把源码传给gcc,那么就需要通过-x选项显式的指定语言类型: $ echo "int x;" | gcc -S -x c - $ cat ./-.s .file "" .comm x,4,4 .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.

  • 本文向大家介绍Go语言struct类型介绍,包括了Go语言struct类型介绍的使用技巧和注意事项,需要的朋友参考一下 struct 我们可以声明新的类型,作为其它类型的属性或字段容器。 如,创建一个自定义类型person代表一个人的实体。这个实体拥有属性:姓名&年龄。这样的类型我们称之为struct。 除了上面这种P的声明使用之外,还有其他两种声明使用方式 1、按照顺序提供初始化值 2、通过fi

  • 问题内容: 我只是想知道Swift是像php一样的动态还是静态的,我的意思是我可以在应用程序运行时生成类吗? 问题答案: 它是静态的-非常静态。编译器必须有关于所有类和功能的全部信息 在编译时 。您可以(使用)“扩展”现有的类,但是即使那样,您也必须在编译时完全定义该扩展所包含的内容。 Objective-C是动态的,并且在现实生活中,由于您可能会在Cocoa的存在下使用Swift,因此可以使用O

  • 本文向大家介绍Python动态语言与鸭子类型详解,包括了Python动态语言与鸭子类型详解的使用技巧和注意事项,需要的朋友参考一下 今天来说说编程语言中的动态类型语言与鸭子类型。 动态语言 维基百科对动态语言的定义: 动态编程语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力如PHP、Ruby、Pyth

  • 在动态类型语言去掉类型二字,就成了动态语言,比方说不少地方都说python是动态语言,其实只是它的动态性比较多一些而已,很多所谓的静态语言也有动态性,只是没有那么明显,因此动态语言是一个很含糊的词,一般而言就是随主流的认识,比如python,ruby是动态语言,C,java是静态语言等 动态性不适合修饰语言,适合修饰一些语法特性,简单的说,静态就是编译期可以决定的一些事情,而动态就是运行期才能决定