到底什么是解释性语言、编译性语言、脚本语言?

本文对比了编译性、解释性和混合型编程语言的特点,如C++的高效执行但不跨平台,Python的开发快速但执行较慢,Java的中间字节码提供体系结构中性。通过SLAM示例和网站开发、人工智能算法的应用,阐述了在项目决策中权衡语言类型的必要性。
部署运行你感兴趣的模型镜像

1 含义解释

(1)编译性编程语言:
过程: 在程序执行之前,源代码会经过编译器处理,将其转换为机器语言。
生成: 编译过程会生成一个可执行文件,该文件包含机器语言,在windows上生成的可执行文件,不可在linux系统上运行。同样在linux系统上进行编译生成的可执行文件,不可在windows系统上运行。
执行: 可执行文件在运行时直接由计算机操作系统处理,无需再次编译。
例子: C、C++
优点: 执行快
**缺点:**在哪种操作系统上编译,就必须在哪种操作系统上运行。不可以跨平台。
案例: c++写好程序,由g++或其它编译器编译成可执行文件。比如在windows上编译成.exe文件,就可以放到别人windows电脑上运行,放到linux电脑上不行。

C++具有 极高的性能和运行效率,很多语言都是在C/C++基础上封装的,比如Python底层都是c++写的。就这一点足以秒杀众多的高级语言。

(2)解释性语言:
过程: 在执行的时候,源代码逐行或逐句被解释器处理,不事先生成可执行文件。
生成: 不生成独立的可执行文件,而是在运行时逐行翻译并执行源代码。
执行: 解释器负责将源代码翻译成机器语言并立即执行。
例子: Python、JavaScript、Ruby、Shell脚本。
优点: 开发快,修改方便,不用打包;跨平台。
**缺点:**一是慢,二是运行时必须有解释器,运行时源代码由解释器逐行转为机器码,再传给操作系统执行。
案例: python写好程序,运行时由python3解释器根据所在系统编译成对应的机器码运行。

(3)混合型语言:
也就是介于编译性与解释性之间的语言
过程: 一些语言采用编译和解释相结合的方式。例如,Java首先编译成中间字节码,然后在Java虚拟机上解释执行。
生成: 不生成独立的可执行文件,也不是直接使用源代码,而是编译成了一种中间字节码。
执行: 解释器负责将中间字节码翻译成机器语言并立即执行。
例子: java;
优点: 开发快;
缺点: 效率略慢。
案例: java写好程序,由JDK编译成中间.class字节码文件。比如在windows上编译成.class文件或者jar包,就可以放到linux上运行。它在不同操作系统之间通用,因为都是先由JDK处理中间字节码,JDK在不同操作系统上会根据所在系统编译成对应的机器码。

执行效率:编译性语言>混合型语言>解释性语言;
编程效率:解释性语言>混合型语言>编译性语言;

架构人员或者开发组组长:
来了一个项目,组长需要权衡用什么语言比较合适,数据库软件有SQL Server,有mySQL,到底用哪个呢。都是需要权衡的,这就是组长的重要性。

2 常见编程语言属于哪种?

(1)C++是编译性编程语言;

(2)Python是解释性编程语言,对于解释性编程语言,一般也称之为脚本。虽然解释性语言也有各种方法对执行进行加速,但总体上执行效率、资源占用等要比编译性语言差很多,更何况C++本身就是比较底层的编程语言。执行的时候由bash软件进行编译成2进制码流,然后由操作系统执行。

(3)java: Java既不属于传统的编译型语言,也不属于解释型语言,属于介于编译性和解释性语言之间的语言。

Java程序首先由编译器编译成.class(字节码)文件,然后由JVM(Java虚拟机)解释执行这些字节码。这意味着Java既可以进行预先编译(类似于编译型语言),也可以在使用时进行即时编译(类似于解释型语言)。例如,JIT(Just In Time)编译器会在运行时将字节码编译成本机机器代码,以提高执行效率。因此,Java既不是纯粹的编译型语言,也不是纯粹的解释型语言,而是两者的结合。

Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。

(4)shell:shell脚本,解释性语言,执行的时候由bash软件进行编译成2进制码流,然后由操作系统执行。

3 几个案例

3.1 一个小案例SLAM程序用c++

SLAM是个对实时性要求很强的落地工程问题,除了精度外,运行时间效率是第一位的,其重要性远远超过开发效率。

C++是编译性编程语言,Python是解释性编程语言,对于解释性编程语言,一般也称之为脚本。虽然解释性语言也有各种方法对执行进行加速,但总体上执行效率、资源占用等要比编译性语言差很多,更何况C++本身就是比较底层的编程语言。
现如今几乎所有面向落地应用的开源SLAM工作,也几乎都是基于C++的,Python代码往往服务些外围的工作,比如测试数据的预处理、轨迹精度的评估、各类传感器的内外参标定等等对运行时间不敏感的部分。总体来说,探索性或者教育性的SLAM,侧重开发效率,才会考虑使用Python。

3.2 开发学校网站

用java不用c++

因为java开发网站的第三方库比较多,所以直接拿过来别人用的就行,1个月就开发好了,用c++需要1年。
用java效率虽然比c++慢一些,但是用的人少,也不影响使用。

3.3 做人工智能算法 python

人工智能算法的库比较多,所以实验比较方便。这些库都是c++写的,所以效率也不慢。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 脚本语言、解释型语言与编译型语言的区别 #### 脚本语言 脚本语言通常被视为解释型语言的一个子集,主要用于自动化任务、网页开发、系统管理等。它们通常具有简单、易学的语法,并且可以直接在命令行或特定的环境中执行。脚本语言通常与解释器一起使用,以便在运行时动态地执行代码。例如,Bash、PowerShell、JavaScript等都是常见的脚本语言[^2]。 #### 解释型语言 解释型语言在程序运行时,通过解释器逐行读取源代码(例如,Python、Java等),并立即执行相应的操作。用户不需要提前编译源代码,而是直接运行源代码文件,解释器会负责将其转换成机器码并执行。由于解释型语言在运行时需要逐行解释代码,因此其执行效率通常低于编译型语言。也因为是逐行解释运行,一旦出现错误就要全部重新解释,运行速度相对较低。一般来说,解释型语言无法像C语言那样对内存进行直接管理[^2]。 #### 编译型语言 编译型语言在程序执行之前,需要通过编译器将整个源代码(例如,C、Go、C++等)转换成目标机器码(即二进制代码)。一旦编译完成,用户可以直接运行生成的可执行文件,而无需再次进行编译。如果出现错误,只会重新编译出错部分,出错后重新运行的效率更高。编译型语言通常具有更高的运行效率,因为编译过程进行了许多优化,并且机器码可以直接由计算机的CPU执行[^2]。 #### 主要区别 - **执行方式**:编译型语言在运行前需要编译成可执行文件,而解释型语言在运行时由解释器逐行执行。脚本语言通常被视为解释型语言的一个子集,主要用于特定环境下的任务自动化[^1]。 - **性能**:编译型语言通常在性能和安全性方面表现更好,因为编译过程进行了许多优化,并且生成的机器码可以直接由CPU执行。相比之下,解释型语言由于需要逐行解释,执行效率较低。 - **灵活性**:解释型语言通常更灵活、易于调试,因为不需要预先编译,可以直接运行源代码文件。脚本语言同样具备这种灵活性,适合快速开发和原型设计。 - **错误处理**:编译型语言在编译过程中可以检测到大部分错误,因此在运行时的错误较少。而解释型语言由于是逐行解释执行,一旦出现错误就需要重新解释整个代码段,导致运行速度降低。 ### 示例代码 以下是一个简单的Python脚本语言示例,展示了如何使用解释器逐行执行代码: ```python # 这是一个简单的Python脚本 def greet(name): print(f"Hello, {name}!") greet("World") ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳花bigdata

如果文章给您带来帮助,感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值