内存
存在栈的值,大小在编译期就需要确定,栈上存储的变量生命周期在当前调用栈的作用域内,无法跨调用栈引用
堆存放大小未知或动态伸缩的数据,堆的内存管理包括TGC(Tracing GC)和ARC(Automatic Reference Counting),都有性能损耗或其它问题
数据
值和类型
类型是对值的区分,值是符合某个类型的数据的实体
值以类型规定的表达方式存储成一串字节流进行访问,值无法脱离具体的类型讨论
编程语言的类型分为原生类型和组合类型
- 原生类型:最基础的数据类型,大小固定
- 组合类型:结构体(多个类型组合在一起的数据结构)和标签联合
指针和引用
通过指针的解引用(deference)来访问指向的内存地址
代码
函数,方法和闭包
函数往往是一等公民
在面向对象编程语言中,类或者对象中定义的函数,称为方法
闭包(closure)是把代码和其上下文环境一起存储的数据结构,闭包引用的上下文的变量,会被捕获到闭包的结构中
接口和虚表
接口将使用方和实现方隔离,使两者不再有依赖关系,提高复用性和扩展性
运行方式
并发和并行
并发(concurreny)是一种能力,并行(parallel)是一种手段
同步和异步
同步保证了代码的因果关系
异步是一个任务开始执行后,与之没有因果关系的其它任务可以正常执行,不需要等待前一个任务结束
编程范式
泛型编程