zoukankan      html  css  js  c++  java
  • 编译型语言与解释型语言,强类型语言与弱类型语言,动态类型语言与静态类型语言

    编译型语言:

      需要编译器,只需编译一次,就可以将源码编译成机器语言(二进制cpu指令),后续执行无需再次编译,直接执行二进制机器指令即可,执行效率非常高。

      编译型语言代表有,c、c++、Delphi、等等。

      执行效率高,但是跨平台性差,需依赖对应平台的编译器,如更换平台,例如,从linux到Windows,需对源码使用Windows平台的编译器进行重新编译。

      不同平台下对编译器影响较大:

        (1)16位系统下int是2个字节(16位),而32位系统下int占4个字节(32位);
        (2)32位系统下long类型占4字节,而64位系统下long类型占8个字节;

    解释型语言:

      需要解释器,源码并不是直接编译成对应平台的机器语言(二进制cpu指令),而是先翻译成中间代码,执行的时候,再通过解释器对中间代码进行一条一条的解释执行。

      源码->中间代码(字节码)->机器语言(二进制cpu指令)

      源码每执行一次,都需要解释器翻译一次,即源码->中间代码(字节码)->机器语言(二进制cpu指令)这个过程。

      解释型语言代表有,python,JavaScript,shell,ruby,MATLAB等等。

      运行效率相对编译型较低,依赖对应平台的解释器,通过对应平台的解释器从而实现了语言的跨平台性,源码在不同平台上无需改动直接使用对应平台解释器执行,且不同平台执行结果相同。实现跨平台性。

    编译型与解释型语言比较:

      (1)一般情况下,编译性语言的运行效率比解释性语言更高;但是不能一概而论,部分解释性语言的解释器通过在运行时动态优化代码,甚至能使解释性语言的性能超过编译性语言;
      (2)编译性语言的跨平台特性比解释性语言差一些;

    强类型语言:

      数据类型不可以被忽略的语言 即变量的数据类型一旦被定义,那就不会再改变,除非进行强转。 在python中,例如:name = 'test',这个变量name在被赋值的那一刻,数据类型就被确定死了,是字符型,值为'test'。

    弱类型语言:

      相对于强类型语言而言的,数据类型可以被忽略的语言 比如linux中的shell中定义一个变量,是随着调用方式的不同,数据类型可随意切换的那种。

      在强类型语言中,变量的类型有多种,例如int char float boolean 等,不同的类型相互之间转换需要强制转换。而像JavaScript这种语言,只有一种类型var ,为变量赋值时会自动判断值的类型从而确定变量的类型,并且随着程序中使用该变量的位置的不同,该变量的数据类型也会发生变化,所以javascript是弱类型语言。

    动态类型语言:

      运行时才进行数据类型检查, 即代码运行时,看到变量赋值时,分析变量值的类型,从而才确定变量的数据类型,不用事先给变量指定数据类型。

    静态类型语言:

      需要事先给变量进行数据类型定义。

    Java是编译型还是解释型语言?

      Java可以理解成是兼具编译型和解释型的语言。

      Java文件先编译成与平台无关的.class的字节码文件,然后.class的字节码文件既可以在Windows平台上的Java虚拟机(JVM)上进行解释运行,也可以在Linux平台上的JVM上解释运行;而JVM的翻译过程时解释性的,JVM从.class的字节码文件中读出一条指令,翻译一条指令,然后执行一条指令,这个过程就称为Java的解释执行;

    Python是一门解释型的强类型动态语言。

    JavaScript是一门解释型的弱类型动态语言。

  • 相关阅读:
    在windows下拆卸Linux就是这么俭朴
    打点Linux下永中Office和桌面殊效的冲突
    Banshee 0.11.4
    ubuntu8.0中文输入法
    RedFlag 6.0 硬盘安置我解
    阅读器和把持体系和用户的IQ
    初试Fedora,最后还是Xubuntu
    VMware中放置Ubuntu后鼠标滚轮标题问题办理
    GNOME 的文件经管器将片面支撑标签式阅读
    ATI显卡开启fedora9的3d后果的一些条记
  • 原文地址:https://www.cnblogs.com/Leo101018/p/13803741.html
Copyright © 2011-2022 走看看