• 编译型语言和解释性语言


    编译型语言

    通过编译器,将源码编译成目标语言,即不同平台(不同CPU架构或同CPU架构不同操作系统)可识别并直接执行的机器代码的文件,如.exe文件。

    优点

    1. 编译后的文件执行效率高
    2. 一次编译可多次运行
    3. 比解释器消耗的内存少

    缺点

    1. 可移植性差,编译后的文件一般不可跨平台

    2. 编译后的文件比相较解释型语言要大

    3. 编译器对程序调试提供不了多少帮助

    4. 编译型程序不支持代码中实现安全性——例如,一个编译型的程序可以访问内存的任何区域,并且可以对你的PC做它想做的任何事情(大部分病毒是使用编译型语言编写的)

    5. 编译器比解释器更难实现

    解释型语言

    依赖不同平台的解释器,在程序执行时才将源码的解释成对应平台能识别的机器码,并立即执行。

    优点

    1. 容易实现跨平台,可移植性好
    2. 解释器更容易实现
    3. 解释器对程序调试帮助很大
    4. 解释型语言可保证高度安全性,更适合互联网环境
    5. 中间语言代码比编译型可执行代码小很多

    缺点

    1. 执行效率和速度不如编译型语言
    2. 占用较多的内存和cpu资源

    如何理解跨平台?

    首先,要理解平台的概念,一般指cpu架构和操作系统,不同的平台具有不同的cpu架构(例如X86、ARM等)或操作系统(如Unix和Windows)

    跨平台:即指可执行程序能够在不同平台的机器上直接执行。所以,是否可跨平台,指的是最终的可执行文件,编译型语言指的是编译后的文件,解释型语言指的是源代码(这里仅个人理解)。

    举个例子,帮助理解编译型语言和解释型语言

    一本中文玄幻小说(源代码),畅销日韩(不同平台,A和B),但是如何才能让日本人和韩国人都能看懂呢?

    • 方法一:直接将中文(源码)分别翻译成日语小说(A平台能直接运行的机器语言)和韩语小说(B平台能直接运行的机器语言

    好处是,日本人和韩国人只要拿到翻译后的小说(编译后的可执行文件),就可以畅快的阅读(执行效率高),并且想什么时候读,读多少遍都没问题(一次编译,多次运行)。但问题来了,加入翻译后的日本小说拿去给韩国人看,韩国人是看不懂的,反之亦然(编译后的文件不可跨平台),而且更悲催的是,如果小说有修改或更新(源代码改动),就需要重新翻译一次(重新编译)。

    • 方法二:分别给日本和韩国读者配一个翻译官(解释器),日本读者想读小说了,才让翻译官边看边翻译给他(程序执行时才对源码进行解释执行),这样的好处是,只要拿到了中文小说(源代码),并且有对应国家的翻译官(解释器),就能让对应国家的人(对应的平台)读懂(识别),即使小说更新(源码改动),也只需要再次翻译就好;当然,坏处也有,例如你需要支付的翻译费比直接翻译成不同语言的小说花更多的钱(消耗更多的CPU和内存),翻译官翻译给你比你自己直接阅读要花更多的时间(效率更低,速度更慢)。针对时间这块,也有好的方法改进:假如翻译官是个美国人,那他肯定对英语(中间代码bytecode)更加熟悉,而且英语是世界通用语言(字节码与平台硬件无关)那么可以先将中文小说(源码)翻译成英文(字节码),下次翻译给日韩读者(解释执行)时,直接去阅读英文进行翻译,效率上肯定更加高。
  • 相关阅读:
    .NET程序默认启动线程数
    TPL中Task执行的内联性线程重入
    Unity容器中的对象生存期管理
    C# 异步 TCP 服务器完整实现
    WPF中多源控制Button的状态
    C# 对 TCP 客户端的状态封装
    WPF异步MVVM等待窗体
    C#实现UDP分包组包
    C#实现RTP数据包传输
    PHP 传引用调用
  • 原文地址:https://www.cnblogs.com/zuozs/p/14257869.html
Copyright © 2020-2023  润新知