动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍_其它综合

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

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. 弱类型定义语言

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

时间: 2024-07-31 08:26:10

动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍_其它综合的相关文章

编程语言里的静态、动态、强类型、弱类型等概念介绍_其它综合

对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed. "动"或"静",强调的是实施类型的时间,编译里就要确定类型的是静态类型,比如C/C++/JAVA/C#,运行时才实施类型的则是动态类型,比如VB/Python.       而"强"或"弱"刚强调实施类型的强度,强类型的语言,如C++等,变量的类型不可随意转换:而

类库与框架,强类型与弱类型的闲聊

    有一天,我问一个同学说,"如果让你通过程序开发一个虚拟地球出来,模拟不同的人的行为,模拟天气,地理,人文,股票涨跌,模拟情感,思考,数学,你怎么做?"那哥们眼睛一亮,马上就说,以人为例.教师,官员,学生,工人都不一样,都从人这个基类继承!天气可以定义一个天气接口,通过工厂模式提供一组天气的集合-       我问,突然哪一天,你需要加一个字段,定义学生是不是程序员!他说,那加一个字段就好了.我说,代码都发布出去了.那哥们开始冥思苦想了.总之你发现,不可能预知未来的需求!人的类型

C语言 动态内存分配的详解及实例_C 语言

1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的. (2)变量和数组都是内存的别名.     ①内存分配由编译器在编译期间决定     ②定义数组的时候必须指定数组长度     ③数组长度是在编译期就必须确定的 (3)但是程序运行的过程中,可能需要使用一些额外的内存空间 2. malloc 和 free 函数 (1)malloc 和 free 用于执行动态内存分配的释放 (2)malloc 所分配的是一块连续的内存 (3)malloc 以字节为单位,并且返回值不带任何的类型信息

malloc-C语言动态链表建立问题

问题描述 C语言动态链表建立问题 #include #include #define LEN sizeof(struct Student) int n = 0;//记录数据的个数 struct Student { int number; int score; struct Student *next; }; int main() { struct Student *creat(void); void print(struct Student *p); struct Student *p; p =

初学者c语言动态汉诺塔帮忙注释

问题描述 初学者c语言动态汉诺塔帮忙注释 #include #include #define N 1000 void gotoxy(int x, int y); // 声明gotoxy函数 void colorxy(int x, int y); //声明colorxy函数 void hanoi(int n,char a,char b,char c); //声明hanoi函数 void move(int n,char a,char b); //声明move函数 void Print(); //声明

c语言动态数组的问题,求解答

问题描述 c语言动态数组的问题,求解答 怎么用c语言定义一个不知道维数的二维数组,比如定义一个字符数组,存放几段(段数未知)不同长度(长度未知)的字符串 解决方案 用指针数组,每一维都是一个指针元素,每个指针可以指向一段不定长的字符串或数字. 解决方案二: 用指针数组就可以了,对应存储空间随用随申请,记得释放就可以 解决方案三: int n: char *A=new char[n]; cin>>n; 高手们是不是把问题想复杂了,我就渣渣一枚,只能想到这个.

c语言动态内存分配问题

问题描述 c语言动态内存分配问题 我去杭州海康威视笔试和面试被问的原题: 没有改动一个字符, 5.以下程序有什么问题,请指出. char * getMem() { char *p=malloc(100); return p; } int main(void) { char *p = getMem(); spintf(p,"hello"); free(p); }

cursor-PL/SQL中什么变量必须定义?它属于强类型语言还是弱类型语言

问题描述 PL/SQL中什么变量必须定义?它属于强类型语言还是弱类型语言 declare begin for i in 0..5 loop for k in 1..i loop dbms_output.put(' '); end loop; for j in 1..11-2*i loop dbms_output.put('*'); end loop; dbms_output.put_line(''); end loop; end; i,j,k都不必先申明再使用 declare pename em

目录服务-c语言 动态修改Openldap的Schema

问题描述 c语言 动态修改Openldap的Schema 安装好Openldap后,如何使用c语言去修改Openldap的Schema呢? Openldap提供相应的接口吗?如果有,在哪里可以找到?怎么用呢? 感谢大家的提示和回答!