`
andyhu1007
  • 浏览: 199731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

动态语言

阅读更多

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. 泛指的动态语言是指:能够在运行时改变程序结构和变量类型的语言。与之相对的概念“静态语言”指的是在编译阶段确定变量或数据对象类型的语言。

分享到:
评论

相关推荐

    Qt动态语言切换

    在Qt开发中,实现动态语言切换是一项常见的需求,它允许用户在程序运行时根据自己的喜好选择不同的语言环境。Qt框架提供了强大的国际化(i18n)支持,使得开发者能够轻松地构建多语言应用。本篇将详细介绍如何在Qt程序...

    弱类型动态语言Io.zip

    Io语言是一门简单小巧采用原型编程范式的弱类型动态语言。虚拟机只有10K左右。初次遇见Io,你一定会惊叹于它的简洁。从Io官网就可以看出来,作者Steve Dekorte是个极度崇尚简洁的人。 io作为一门原型语言,其对象...

    Python源码剖析 深度探索动态语言核心技术.pdf

    根据提供的标题“Python源码剖析 深度探索动态语言核心技术.pdf”以及描述中的相同信息,我们可以推断出这份文档的主要内容是关于Python语言的核心技术深入解析,特别是针对Python作为一门动态语言的特点进行探讨。...

    Python源码剖析——深度探索动态语言核心技术

    资源名称:Python源码剖析——深度探索动态语言核心技术资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Qml动态语言切换QmlLanguage.7z

    在QML(Qt Meta Language)中,动态语言切换是一个重要的特性,它允许应用程序在运行时改变用户界面的语言,提供多语言支持。QmlLanguage.7z这个压缩包可能包含了一个示例项目或库,用于演示如何在QML应用中实现这一...

    Qt国际化 动态语言切换 多窗口翻译

    Qt 国际化动态语言切换多窗口翻译 在 Qt 中实现国际化是一件非常重要的事情,特别是在多语言支持方面。Qt 提供了强大的国际化机制,可以轻松地实现多语言支持。本文将详细介绍 Qt 国际化的步骤,并结合动态语言切换...

    Qt、QML动态语言切换功能的实现

    在本文中,我们将深入探讨如何在Qt和QML应用程序中实现动态语言切换功能。Qt是一个跨平台的应用程序开发框架,而QML是Qt提供的一种声明式语言,用于构建用户界面。多国语言支持是现代软件必不可少的一个特性,使得...

    QT动态语言切换、历史语言记录、QMessageBox和QDialogButtonBox的Ok按钮动态切换汉字

    在QT中,实现动态语言切换是一项重要的功能,这使得应用程序可以适应不同地区和语言环境的用户需求。本文将详细讲解如何在QT中进行动态语言切换,并涉及到历史语言记录、QMessageBox以及QDialogButtonBox的Ok按钮...

    qt4 动态语言切换

    网络上很多的qt4动态语言切换讲到的都是一个主窗口的实现,如果主窗口中单击按钮弹出子菜单,子菜单的语言怎么切换,网络上很多都没讲到;这是我做的一个小例子,其中有7个子窗口,第一,二个我实现了动态的切换,...

    Python源码剖析—深度探索动态语言核心技术.part2

    Python源码剖析—深度探索动态语言核心技术.part2

    Python源码剖析—深度探索动态语言核心技术.part1

    Python源码剖析—深度探索动态语言核心技术.part1

    动态语言与JavaScript中文帮助文档

    对于动态语言的帮助部分,可能会涵盖动态语言的一般特性,如何在不同动态语言之间进行比较,以及如何利用动态语言的优势进行高效开发。通过阅读这些文档,开发者能够深入理解JavaScript和动态语言的精髓,提升编程...

    个人web服务器,不支持动态语言,但是实用

    总的来说,个人Web服务器是个人网站、学习项目或小型应用的理想选择,虽然它可能不支持动态语言,但对于发布静态内容、实验性项目或个人网页,WebMan这样的工具已经足够实用且高效。通过深入了解和使用,我们可以更...

    一份介绍动态语言和FP的PPT

    标题中的“动态语言”指的是那些在运行时可以改变其结构的语言,它们允许程序的数据类型、函数、对象等在执行过程中动态地定义和修改。这样的语言通常具有灵活性和高表达性,比如Python、Ruby、JavaScript和Lisp等。...

    mojo编程语言是一种用于编写Web应用程序的动态语言

    Mojo编程语言是一种专门用于编写Web应用程序的动态语言。为了深入了解Mojo,我们可以从它的创建背景、语法特点、应用场景以及如何编写一个简单的Web应用程序等方面进行探讨。 首先,Mojo由Dan Ingbert创建于2005年...

    《动态语言程序设计(Perl)》课程教学大纲.docx

    《动态语言程序设计(Perl)》课程教学大纲 本课程教学大纲是根据《动态语言程序设计(Perl)》课程的教学要求和教学内容所设计的。该课程的主要目标是向学生介绍程序设计的基本知识,讲授变量、数据结构、逻辑操作和...

    动态语言Python探讨与比较.zip

    本文将深入探讨Python的动态特性,并将其与其他动态语言进行比较。 Python的动态性体现在以下几个方面: 1. 类型系统:Python采用动态类型系统,这意味着变量的类型在运行时确定,而不是在编译时。这种灵活性使得...

    jdk6.0从入门到精通-----chapter18与动态语言结合

    标题中的“jdk6.0从入门到精通-----chapter18与动态语言结合”指的是Java开发工具包(JDK)6.0版本中的一个章节,主要探讨了如何将Java与动态编程语言集成。在Java 6中,引入了一个重要的特性,即Java平台标准版6...

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

    本文将深入探讨动态语言、动态类型语言、静态类型语言、强类型语言和弱类型语言的区别,帮助理解它们各自的特点。 1. 动态语言: 动态语言,也被称为动态编程语言,其核心特征是在运行时允许程序结构的变化。这意味...

Global site tag (gtag.js) - Google Analytics