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

本文对比了编译性、解释性和混合型编程语言的特点,如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开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包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、付费专栏及课程。

余额充值