一、前言
jsc/c++pythongojava
gccLLVM
二、c和c++和c#的区别
1、高级语言和低级语言
参考:
计算机语言的几种分类
计算机语言发展简史
低级语言: 如机器码(machine language)、汇编(伪机器语言)和符号语言是属于低级语言;
C、C++ 、C#、pascal、python、lisp、prolog、FoxPro、Objective-C 、Swift 、java、php
机器码: 计算机能够直接识别的二级制编码,无论语言多高级都要转成二级制文件来让计算机识别运行。
汇编: 用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,在不同的设备中有着不同的指令集
高级语言与低级语言的区别:高级语言大部分不能直接更硬件打交道,这使得相对来的程序运行速度降低,总之一句话来说那种语言更接近人性化的语言就更高级。
2、c 和 c++ 和 c#的区别
(1)C语言
CCCANSI CCCWindows、DOS、UNIXC
(2)C++
C++C++CCC++C
C#C#C++C#C#CC++.NET Framework.NET Core
三、各主流语言的底层实现
高级语言的底层实现,主要是看它的编译器或者解释器是用什么语言写的,这些编译器把高级语言编译成了机器码。
1、python的底层实现
CPythonCPythonPythonCPythonCPythonJavaPythonJPython.netPythonIronPython
2、 java的底层实现
javajavajavac/c++javac/c++
3、php的底层实现
phpc语言phpzendzendCPHPPHPopcodehashtable、ooapiZend
4、js的底层实现
jspcc/c++v8jsc/c++javaiosobjectC
5、node是用什么语言写的
node.jsC++JSjavascript
6、golang是用什么语言写的
GoGoGoGoGoJava、C#、PHP、Pythongo
7、rust是用什么语言写的
RustLLVMLLVMC++OCamlRustOCamllinuxrustCrust
8、.NET是编程语言吗?是的话底层是用什么写的
.netc# ,vb,F#,j#netcorenetcoreC#.net.net
9、object-C的底层是用什么写的
Objective-CANSI CSmalltalkANSI CGCCClangCMac OS XObjective-CiPhoneiPhoneObjective-C
四、编译器GCC和Clang和LLVM
参考:
【编译原理】GCC/Clang/LLVM的区别与联系
gcc/g++/clang,相当于javac:
GCC vs Clang: 两大编译器巨头的龙争虎斗
具体细节可以参照这三篇文章。
GCCJIT
(1)前端:解析源代码、检查语法错误、翻译为抽象的语法树
(2)优化器:将抽象语法树翻译生成中间代码,并对中间代码进行优化
(3)后端:将优化器优化后的中间代码转换为目标机器的代码,通用功能包括指令选择、寄存器分配和指令调度
简单来说:
1、clang,clang++gcc,gcc++
clanggcccc++clang++g++c++clang~~~~~和^GCC
2、gcc和LLVM
LLVMgccLLVMLLVM IRLLVM IRIDELLVMgdbgccLLVMLLDB
3、关于LLVM IR
LLVM IRjavabyteCode
关于编译原理,内容实在是太多了,感兴趣的同学可以根据这些关键词自行搜索学习,博主这里只是科普下,有个印象就行。
end