我发现这几个遗留问题一直困扰着我对很多其他问题的理解和探索,它们有意无意成为了很多产品、概念、方法的前提。
1 是否必须从线程或进程的抽象出发?
绝大部分编程语言和操作系统都使用,但这是否意味着所有相关问题(比如两个程序间的关系)都要从"进程间通信"(IPC)或类似视角来解决。我设想过用一种树结构来体现进程,运行过程就是树的归约(reduction)和调整,但像The Implementation of Functional Programming Languages这种书到最后也自动、默认地采用线程和进程了。
这方面我觉得最大障碍是多核处理器和多处理器,它们到底是多个机器,还是一个机器的多个组成部分?如果不采用线程/进程似乎让线程/进程如何对付多核处理器呢?
2 数据结构方面,是否必须回归到扁平数据结构层面?
换句话说,从久驻内存(NVM)的随机存储模型看数据结构并把扁平数据结构当作底层实现的一个可能性可不可以?固态硬盘现在已经普及,有些公司所有数据都储存在固态硬盘上,而数据结构的设计如果一上来就围绕如何线性映射,似乎太局限了?