简单理解弱类型、动态类型、解释型语言

弱类型和强类型

简单的说,二者的区别就是是否偏向于容忍隐式类型转换。

$str = ‘abc‘;   //str是一个字符串

$str = 1;    //这时候又变成整形

if($str){};  //这时候又是一个布尔型

所以php是弱类型语言,变量类型会自动转换。

动态类型和静态类型

简单的说,二者的区别就是声明变量的时候是否需要指定变量类型。

php是动态类型语言,声明变量时无需指定类型。

注意: 一个语言是不是强类型语言和是不是动态类型语言没有必然联系。

动态语言和静态语言

简单的说,二者的区别就是代码运行时是否可以改变其结构。例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。

php是动态语言,代码运行时可以动态改变结构。

解释型和编译型

用编译型语言写的程序执行之前,需要先有一个专门的编译过程,以后就可以直接运行而不需要编译了,例如windows的exe文件,因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率较高。

解释型语言编写的程序不需要编译,只在运行的时候才翻译,但是这样的话每执行一次就要翻译一次,效率比较低。优点在于不需要专门的编译过程,可以随时编写代码并立即运行。

php是解释型语言。

原文地址:https://www.cnblogs.com/web200/p/10716543.html

时间: 2024-08-03 02:36:15

简单理解弱类型、动态类型、解释型语言的相关文章

静态类型&动态类型

何时使用:使用存在继承关系的类型时,必须将一个变量或其他表达式的静态类型与该表达式表示对象的动态类型区分开来 静态类型:表达式的静态类型在编译时总是已知的,它是变量声明时的类型或表达式生成的类型 动态类型:动态类型直到运行时才可知,(变量或)表达式表示的内存中的对象的类型 如果表达式既不是引用也不是指针,则它的动态类型永远与静态类型一致. 如当print_total调用net_price时:double ret = item.net_price(n);,我们知道item的静态类型是Quote&,

动态类型和动态绑定,动态载入

1.       iOS动态类型和动态绑定简述 NSObject * 也就是id类型---动态类型 动态绑定: 先明白引用多态---父类指针可以指向子类对象 方法多态: 方法名相同,方法的实现却不同 动态绑定就是当程序运行的时候,才去查找对象的类型. 一种是静态载入,一种动态载入 2.      简述你对UIView.UIWindow和CALayer的理解 UIWindow 就是程序的窗口,一个程序可以有多个窗口,但是屏幕大小限定的在同一时间内,只能显示一个窗口,窗口上面显示的UIView,可以

python笔记2 python对象的动态类型

Python中的一切都是对象,并且这些对象都是Python的组成部分,即是内置对象,和python一同产生. 从更正式的角度来讲,在P ython中,数据以对象的形式出现一一无论是Py t hon提供的内置对象,还是使用Python或是像C扩展库这 样的扩展语言工具创建的对象.尽管在以后才能确定这一概念,但对象无非是内存中的一部分,包含数值和相关操作的集合. 内置对象 对象类型 例子常量/创建 数字 1234, 3.1415, 3+4j, Decimal. Fraction 字符串 'spam'

Objective-C多态:动态类型识别+动态绑定+动态加载

一.Objective-C多态 1.概念:相同接口,不同的实现 来自不同类可以定义共享相同名称的方法. 动态类型能使程序直到执行时才确定对象所属类型 动态类型绑定能使程序直到执行时才确定要对对象调用的实际方法 2.Objective-C不同于传统程序设计语言,它可以再运行时加入新的数据类型和新的程序模块:动态类型识别,动态绑定,动态加载 3.id类型:通用指针类型,弱类型,编译时不进行类型检查 二.动态类型识别 1.任意NSObject的子类都会继承NSObject的isa实例变量,而且当NSO

弱类型和强类型的简单理解

弱类型和强类型的简单理解 强类型.弱类型是指类型检查的严格程度的.无论哪种语言,对于变量而言,都存在"类型"和"值"两个概念.对于强类型语言,要求所有的变量必须先定义(定义时必须声明数据类型)后使用,并且指定类型的变量只能接受类型与之匹配的值. 如Java的变量定义和使用语句为: int a = 10; System.out.println(a); 这意味着每个变量和每个表达式都有一个在编译时就确定的类型,类型限制了变量能赋的值,限制了表达式能产生的值同时也限制了在

编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

最近在研究Python和Erlang.反复提到动态类型语言.动态语言.解释型语言这些概念.这些概念很生涩,在这里做一个总结. 编译型语言和解释型语言 1.编译型语言 需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言.一般需经过编译(compile).链接(linker)这两个步骤.编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件. 优点:编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行

弱类型、强类型、动态类型、静态类型语言的区别是什么?

作者:amalgamation链接:https://www.zhihu.com/question/19918532/answer/21647195来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1. 先定义一些基础概念 Program Errors trapped errors.导致程序终止执行,如除0,Java中数组越界访问 untrapped errors. 出错后继续执行,但可能出现任意行为.如C里的缓冲区溢出.Jump到错误地址 Forbidden Beh

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

收集了一些关于编程语言分类的文章: 一. 作者:rainoftime链接:https://www.zhihu.com/question/19918532/answer/21647195来源:知乎 类型系统的一些概念,众说纷纭,使用上也比较乱.有些东西,甚至不好严格定义.以下算学术界的一种相对"严格"的说法. 1. 先定义一些基础概念 Program Errors trapped errors.导致程序终止执行,如除0,Java中数组越界访问 untrapped errors. 出错后继

【转载】编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

编译型语言和解释型语言 1.编译型语言 需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言.一般需经过编译(compile).链接(linker)这两个步骤.编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件. 优点:编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高.可以脱离语言环境独立运行. 缺点:编译之后如果需要修改就需要整个模块重新编译.编译的时候根据对应的运行环境生成机器码,