C++、python、Java的运行过程对比

本文介绍了源代码、目标代码、机器码的概念,以及编译和解释的区别。详细比较了C++、Java和Python的运行过程,强调了Java通过JVM实现跨平台性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

        要了解三种语言的运行过程,我们先要知道什么是源代码、目标代码、机器码;什么是编译、解释以及什么是静态语言、动态语言。如有不对的地方,欢迎小伙伴们指出来,我会及时进行更正!也欢迎各位小伙伴在评论区进行讨论~

什么是源代码、目标代码、机器码?

        源代码就是程序员直接编写出来的代码。

        目标代码是源代码经过编译器或汇编器处理后生成的中间代码,它是由特定的指令集和格式组成,并不能直接在计算机上运行。

        机器码是计算机可以直接执行的二进制指令。它是由0和1组成的二进制数,对应于计算机硬件的指令集。目标代码需要通过链接器将其与其他目标代码以及库文件等链接在一起,最终生成可以在计算机上运行的可执行文件,这时候才会将目标代码转化为机器码。

什么是编译、解释?

        举个例子,小明想去书店买《哈利·波特》,有两种选择,一是买中文版的《哈利·波特》,另一种选择是买英文版(假设他爸妈为了方便他学习英语给他配了一个英语翻译老师)。

        如果买了中文版,那他就不再需要原版的《哈利·波特》,而且可以一次性读完中文版,甚至也不需要英语老师进行解释如果买了英文版,那这个时候英语翻译老师的工作就是一边阅读《哈利波特》的英文版的同时一边解释给小明听。

        上述的例子中,出版《哈利·波特》中文版的翻译者就是编译器,而英语翻译老师就是解释器。所谓编译,就是将源代码一次性转换为目标代码,也就是一次性翻译,之后就不需要源代码。所谓解释,就是将源代码逐条转换为目标代码,同时逐条运行,运行时随翻译随执行,是需要源代码的!(不然英语翻译老师对照什么讲述呢?)。

什么是静态语言、动态语言?

        静态语言就是使用编译器执行的编程语言,动态语言就是使用解释器执行的编程语言!

        有了上面的知识基础,我们再来看看 C++、Java、python运行过程的对比!

 C++的运行过程

  1. 编写C++源代码,保存为.cpp文件。
  2. 使用C++编译器(gccclang等)将C++源代码编译成机器码,生成可执行文件。
  3. 运行生成的可执行文件。

Java的运行过程

  1. 编写Java源代码,保存为.java文件。
  2. 使用Java编译器(javac)编译Java源代码,生成字节码文件(.class)。
  3. 使用Java虚拟机(Java Virtual Machine,JVM)加载字节码文件,并执行。

        注:字节码文件不能直接执行,因为它包含了Java虚拟机(JVM)能够理解的指令和结构,而不是直接CPU可以执行的指令。因此,需要JVM作为中间层解析并执行这些字节码指令,她会将字节码翻译成可以执行的机器码!当然它也提供了其他很多功能,比如内存管理,垃圾回收、异常处理等,Java就是通过JVM提供的一致性接口才使Java程序具有跨平台性的!

        为什么要有JVM,是不是多此一举? 别忘了,Java的诞生,本身就是为了解决不同平台上的差异性的~~

Python的运行过程

  1. 编写Python源代码,保存为.py文件。
  2. 使用Python解释器执行Python源代码,即时解释并执行。

三者的区别和联系

JavaC++python
语言设计和语法静态类型语言静态类型语言动态类型语言
编译和解释编译型语言编译型语言解释型语言
平台依赖性通过JVM实现跨平台针对不同平台需要不同编译器不同平台
性能次之最高较低

        注:这个性能对比结果是因为C++在编译时会经过一系列优化,而Java和Python会在运行时进行一些额外的解释、优化等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值