关于各语言的编译环境,什么语言可以编译成机器码?

loongchao 发布于 2013/04/04 14:50
阅读 2K+
收藏 3

从事IT行业两年了,最近才知晓语言的编译原理。

请问,为什么说 C# Java Python 等高级语言是虚拟机语言呢?

C/C++呢,他们不需要依靠所谓的虚拟机去解释(翻译)的过程吗?

C/C++编译后 exe可执行文件中是机器码对吧,

Java 编译后的 exe文件是JDK什么才认识的代码,通过JDK来解释翻译执行对吧

(最近在研究使用Python来写Socket通讯,据说性能很好)

------------------------

C/C++最终编译的结果与编译器有关系吗? 比如VS编译的或者使用其他IDE编译。

Python呢? 是否也跟IDE有关系吗? 可以编译成机器码的exe可执行文件吗?

 

以下是问题补充:

@loongchao:解释型语言有哪些? 编译型语言有哪些? 感觉不需要虚拟机(JDK/.NetFramework)的语言运行起来性能更好。 (2013/04/05 11:14)
加载中
0
h
houj

1)理论上,  任何语言写的代码都可以编译成机器码,甚至自然语言也能编译成机器码, 前提是有这样的编译器存在;

2)任何语言的最终编译的结果都与编译器有关, 不同编译器编译的结果肯定是有差别的,甚至同一种编译器的不同版本,编译的结果也不一样.

eric-PAY4
eric-PAY4
不是编译器存不存在,而是设计语言的目的
eric-PAY4
eric-PAY4
不是吧
0
m
mjjgv

高级语言直接编译成机器码的不多,据我所知只有C++、易语言能达到此种境界,不过易语言比C++要更高级一些,生成的机器码叫易格式体,可以直接硬件跨平台。

0
南湖船老大
南湖船老大
所有语言最终都是编译成机器码
0
crab2313
crab2313
python java等高级语言为了实现跨平台, 采用将源程序编译成bytecode,然后用虚拟机执行的方式, 虚拟机在不同平台都有实现, 这就实现了编译一次到处可用,但是需要相应平台有虚拟机的实现。C, C++这类语言的编译器一般是将源程序翻译成native code。python和java的.exe一般就是简单的wrapper, 调用虚拟机执行byte code。还有LS和LSS在搞笑,最后请LZ搞清IDE和编译器是什么,over。
crab2313
crab2313
回复 @loongsoft : my god, LZ要是没有打错字的话可以回家补课了
loongchao
loongchao
IDE开发编辑器, 编译器不是代码转换编译
0
SeekerLee
SeekerLee
语言和语言的实现是两码事。
0
算法与编程之美
算法与编程之美
楼主的问题描述的不是很清楚,我觉得"houj"这位同学回答的有道理
0
mallon
mallon

引用来自“mjjgv”的答案

高级语言直接编译成机器码的不多,据我所知只有C++、易语言能达到此种境界,不过易语言比C++要更高级一些,生成的机器码叫易格式体,可以直接硬件跨平台。

“易格式体”,好恶心,听起来好像医学上某种微生物的名字...
0
8
870177103
高级语言是编译成二进制代码的,但它一般依赖os的实现与接口。而自然语言的编译产物可看做的脚本吧,如果说解释器是引擎的话。
crab2313
crab2313
回复 @loongsoft : 看到这里,我确信LZ需要回家补课
loongchao
loongchao
解释的真够深奥的, 那高级语言编译后的二进制码吗? 语言需要的支撑环境就是将二进制码解释成汇编 让cpu识别他吗?
0
mallon
mallon
其实如果把虚拟机看作硬件的话,那之上跑的也是“机器语言”
0
8
870177103
exe只有一部分是汇编代码,一些是给os识别的。额,不好意思,说起来我还没有进行过单片机开发呢。的确高级语言可以很方便地转换成汇编码然后在硬件上跑,但这种模式会引发很多问题,比如兼容与移植。所以一般都是接口相关的,比如说api。
返回顶部
顶部