1. 语言的动态特性表示语言具有在运行时确定绑定关系的性质。
2. “静态”是一个相对的概念,任何程序设计语言都可以看作具有某种程度的动态特性。一个变量能够在运行时改变自身的值,可以说它具有动态特性,比如最简单的赋值语句:
char ch;
int m;
ch = cin.get();//从输入流中接收一个字符
m = func(); //将func的返回结果赋给m
对字符型变量ch与值的绑定关系要推迟到程序运行时检测到标准I/O流的输入数据才能确定下来,整型变量m的值也要到程序运行时执行了函数func后才能确定。
3. 以下都是一些动态特性:
a. 在运行时进行的动态类型检查、动态内存分配都是语言的动态特性的具体表现。
b. 变量的寻址方式也是一个动态的过程。程序经编译后,获得了变量的相对于程序代码
段(CS)或数据段(DS)的偏移量信息,在程序执行时,操作系统首先将程序装载到内存中足够大小的某个单元中,这个单元的首地址加上变量的偏移量就形成
了变量的存储单元地址。
c. 此外,面向对象语言中运行时多态性是一个重要的动态特性。
从这个意义上说,早期Fortran语言、C、Pascal都具备一定程
度的动态特性,但比较弱,而Smalltalk、Lisp、Python等语言在运行时可以改变变量的类型甚至时自身的程序结构,我们就认为这样的语言具
有更强的动态特性。
4. C++的动态性
比Fortran动态性更强的C/C++语言提供了指针,支持堆栈,提供了malloc/new和free/delete操作,运行时可以动态分配和释放
内存,可以比较灵活地动态生成对象并分配存储空间。此外,C++语言中的RTTI(RunTime Type
Identification)机制可以在只有指向某个对象的基类指针的情况下,根据驻留在虚函数表中的类型信息,在运行时确定该对象的准确类型。然
而,C/C++程序中的变量类型仍然需要在编译时确定下来,大部分类型检查也是在编译时完成的,执行前完成了大部分的绑定工作。
5. Java和C#的动态性
现在流行的Java和C#语言的动态特性之所以要比C/C++强,是因为Java/C#提供了更强的反射Reflection机制,可以在运行时通过
Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static
等等)、superclass(例如Object)、实现的interfaces(例如Cloneable),也包括fields和methods的所有
信息,并可于运行时改变fields内容或唤醒methods。
6. "动态语言"们
这些语言的变量的类型绑定和类型检查都是在运行时进行的。Perl、Python和Ruby语言可以在运行时修改类的结构或定义,
变量的类型可以按需改变,编写程序时无须声明变量类型。Lisp语言甚至可以在运行时动态地改变自身的代码,
Lisp语言对程序代码和数据一视同仁,都看作是存储在内存中的对象,这样数据结构既可作为程序执行,程序也可作为数据进行修改。
7. 泛指的动态语言是指:能够在运行时改变程序结构和变量类型的语言。与之相对的概念“静态语言”指的是在编译阶段确定变量或数据对象类型的语言。
分享到:
相关推荐
Io语言是一门简单小巧采用原型编程范式的弱类型动态语言。虚拟机只有10K左右。初次遇见Io,你一定会惊叹于它的简洁。从Io官网就可以看出来,作者Steve Dekorte是个极度崇尚简洁的人。 io作为一门原型语言,其对象...
在qt程序切换语言标签可以动态的切换语言
资源名称:Python源码剖析——深度探索动态语言核心技术资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Python源码剖析 深度探索动态语言核心技术.pdf
Python源码剖析-深度探索动态语言核心技术(2008) 扫描版
网络上很多的qt4动态语言切换讲到的都是一个主窗口的实现,如果主窗口中单击按钮弹出子菜单,子菜单的语言怎么切换,网络上很多都没讲到;这是我做的一个小例子,其中有7个子窗口,第一,二个我实现了动态的切换,...
Python源码剖析—深度探索动态语言核心技术.part2
Python源码剖析—深度探索动态语言核心技术.part1
介绍了qml混合编程的多语言翻译,实现Qt、QML动态语言翻译切换功能
Qml动态语言切换QmlLanguage.7z
QT动态语言切换、历史语言记录、QMessageBox和QDialogButtonBox的Ok按钮动态切换汉字
此资源最好搭配讲解,地址http://blog.csdn.net/m_nanle_xiaobudiu/article/details/79267703
这个是网上流传已久的好东西,专门负责转换HTML语言到动态语言的工具,具体效果我没试出来。呵呵~
大蛇语言是比较流行的动态语言,通过学习丰富一下智能动态语言的魅力吧 哈哈
Qt国际化使用步骤,简单方便实用,并加上了动态语言切换和 多窗口翻译代码,实际在项目中测试过,希望对你有帮助。。。。。。。。。。。。。。。。。。。。。
动态语言 维基百科对动态语言的定义: 动态编程语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力如PHP、...
此为JavaScript中文帮助文档与动态语言中文帮助。 开发时,常常将动态语言与JavaScript一起使用。此为我寻找好久并使用后,使用觉得好的帮助。
WPF 多国语言实现与动态切换当前使用的语言。
个人web服务器,不支持动态语言,但是实用