zoukankan      html  css  js  c++  java
  • 编译原理之静态策略与动态策略

      如果一个语言使用的策略支持编译器静态决定某个问题,那么我们说这个语言使用了一个静态(static)策略,或者说这个问题可以在编译时刻(compile time)决定。另一方面,一个只允许在运行程序的时候做出决定的策略被称为动态策略(dynamic policy),或者被认为需要在运行时刻(run time)做出决定

      比如说,动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来,如python。

      所谓的动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断(注意是运行时的类型判断):

    def sum(a, b):
       return a + b

      静态类型语言:与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、JAVA都是静态类型语言的典型代表

       

      静态作用域与动态作用域

      x的一个声明的作用域(scope)是指程序的一个区域,在其中对x的使用都指向这个声明。如果仅通过阅读程序就可以确定一个声明的作用域,那么这个语言使用的是静态作用域(static scope),或者说词法作用城(lexical scope)。否则,这个语言使用的是动态作用域(dynamic scope)。如果使用动态作用域,当程序运行时,同一个对x的使用会指向x的几个声明中的某一个

  • 相关阅读:
    Python3 从零单排10_xml&configparser
    Python3 从零单排9_json&pickle&shelve
    Python3 从零单排7_模块&os&sys
    Python3 从零单排6_装饰器&生成器&迭代器
    Python3 从零单排5_内置函数
    python3 从零单排4_函数进阶
    Python3 从零单排2_文件读写&集合
    查看innodb表空间
    如何从innodb的数据字典里恢复表结构
    innodb double write buffer
  • 原文地址:https://www.cnblogs.com/hercules-chung/p/12437248.html
Copyright © 2011-2022 走看看