一文彻底明白编译型语言和解释型语言、静态语言和动态语言、强类型语言和弱类型语言、脚本语言的区别

1.编译型语言和解释型语言

编译型语言:编译型语言将源代码提前编译为二进制机器码。优点:已经编译为指定 CPU 架构、指定操作系统等平台的机器码,无需二次转换,程序运行速度快,缺点:不同的 CPU 架构、操作系统等平台需要不同的编译,跨平台性差。

解释型语言:解释型语言将源代码不是提前编译为二进制机器码,而是运行时再编译。优点:不同的 CPU 架构、操作系统等平台不需要不同的编译,跨平台性好。缺点:未编译为指定 CPU 架构、操作系统等平台的机器码,还需二次转换,程序运行速度慢。

编译型和解释型的定义是对立存在的,但也可以在一个语言中同时存在,比如 Java 语言同时兼有编译型和解释型的特点。整个流程如下:

首先将源代码(.java文件)编译为字节码(.class文件),然后再通过 JVM(Java虚拟机) 解释成二进制机器码。

2.静态类型语言和动态类型语言

静态类型语言:指数据类型的检查是在运行前(如编译阶段)做的。优点:数据类型安全,缺点:需要编写大量的关于数据类型的代码。

动态类型语言:指数据类型的检查是在运行时(如解释阶段)做的。优点:代码相对简洁,省略了编写大量的关于数据类型的代码,缺点:数据类型不安全。

3.强类型语言和弱类型语言

强类型语言:一旦一个变量被声明了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量 a,那么程序根本不可能将 a 当作字符串类型来处理。强类型语言是类型安全的语言。

弱类型语言:它与强类型定义语言相反,一个变量可以被赋与不同数据类型的值,不需要强制转换。弱类型语言是类型不安全的语言。

4.脚本语言

脚本语言:实际上讨论的是程序代码的入口和执行顺序,默认情况下,脚本语言按照脚本中的代码的出现顺序依次执行,传统的编程语言C#Java 会查找程序代码的入口点 main() 方法。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/osexp/1151.html

(1)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2020年3月1日 22:23
下一篇 2020年3月6日 23:55

相关推荐

  • update-grub2、update-grub、grub-mkconfig的区别(Ubuntu)

    打开到 Ubuntu 的目录 /usr/sbin/,我们不难发现如下: update-grub2 链接到了 update-grub。 打开 update-grub 文件,看到如下源码: 我们可以看到原来 update-grub 是 grub-mkconfig -o /boot/grub/grub.cfg 的封装。

    操作系统经验 2021年2月27日
    04.0K0
  • Ubuntu 22.04隐藏Dock状态栏的Windows未挂载分区图标

    笔者是 Ubuntu 20.04 和 Windows 10 双操作系统,在升级到了 Ubuntu 22.04 版本以后,Dock 状态栏多了几个 Windows 操作系统的分区图标。 依次单击左下角的“显示应用程序”-工具-磁盘,左侧选择对应的磁盘,我们不难发现其实 Windows 分区实际上并没有挂载。 解决方案如下…

    操作系统经验 2022年8月2日
    02.7K0
  • Linux常用命令一览表

    1.系统管理 命令 全称 描述 login —————— 登陆系统 logout —————— 登出系统 poweroff —————— 立即关闭系统 shutdown —————— 延时关闭系统 reboot —————— 重启系统 mount —————— 挂载目录到分区 umount —————— 从分区卸载目录…

    操作系统经验 2023年1月22日
    05330

发表回复

登录后才能评论