一、前言

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