编/解码
指令
CPU根据架构不同分为以下常见的指令集:
- x86:CISC,复杂庞大
- ARM: RISC,精简指令集
编程语言需要解决跨(CPU)平台问题问题,因此出现了两大阵营:
- (提前)编译型:C/C++、Go、Rust
开发者将写好的程序在不同平台编译成二进制可执行文件,用户下载对应操作系统版本即可运行
- 解释型: Python、Java、Ruby、Javascript
解释器是一种进程级虚拟机,只对CPU虚拟化,满足特定语言的翻译工作,常见PVM、JVM、V8
- (即时)编译型:JVM、V8
JIT与AOT的区别在于:对解释器上运行的高频调用代码进行编译后运行,融合了跨平台与执行效率的优势。
数据
文本
ASCII码表于1967年最早提出,将常用的英文字母、阿拉伯数字、符号等与二进制数据一一对应,后来为了适应不同国家的语言需要,陆续出现了GB2312/gbk等编码格式。为了统一编码方式,出现了Unicode码表,同时兼顾存储效率引入了最通用的utf-8,它使用变长存储:英文占1字节,中文占3字节,Emoji占4字节
注:Unicode作为utf-8的核心,为了既避免对内存过高占用,又保留哈希表的查询性能,在C/C++的ICU(International Components for Unicode)库中通过分级字典实现
其他数据
- 图片:JPEG, PNG, WebP
- 音频:MP3, AAC, FLAC
- 视频:H.264, H.265/HEVC
💬 评论区