语言高阶 - lisp
很像数学
lisp 真的很像数学,或许这就是 lisp 的特征。它像是一个从计算器程序变成的计算机一样有趣。而 C 则更像是一种由内存驱动变成的计算机。
另外一个很像数学的点就是,lisp 试图用最少的基本结构(可能是数据结构,也可能是过程结构)来描述最多的复杂结构,就像数学在用最少的公理来推导最多的定理一样。
数学家会详细研究房子着火之后的救火步骤,当房子安然无恙时,他们则会将房子点燃,然后心安理得地救火。
lisp 真的很像数学,或许这就是 lisp 的特征。它像是一个从计算器程序变成的计算机一样有趣。而 C 则更像是一种由内存驱动变成的计算机。
另外一个很像数学的点就是,lisp 试图用最少的基本结构(可能是数据结构,也可能是过程结构)来描述最多的复杂结构,就像数学在用最少的公理来推导最多的定理一样。
数学家会详细研究房子着火之后的救火步骤,当房子安然无恙时,他们则会将房子点燃,然后心安理得地救火。
在学 OS 的时候我就已经写过一篇介绍启动流程的文章了,在我忙了一上午以后重新学了一遍,发现其实之前就已经学的十分详细了,属于是自己造自己的轮子了。不过再次回顾,尤其是结合了自己开发操作系统的经验,还是发现很多重点的,所以再来回顾一遍。
首先是关于启动最初,bios,MBR 和 grub 的区别
当我们提起 git 的时候,我们总说它是版本控制工具。但是版本控制工具到底是什么?我觉得是一种特化的数据库,我们根据版本号去查询对应的项目内容,这种特殊数据库用于进行代码管理。而对于 git,我愿意定义它为 “分布式、并发、无锁数据库”。
Git 是 Linus 写出来的版本控制工具,其诞生的直接原因是原来为 Linux 进行版本控制的工具 BitKeeper 不再免费了。也就是说,git 的直接需求是 Linux 的版本控制,而 Linux 是世界上最复杂的开源项目之一,所以 git 的设计是较为彪悍的,它支持最为复杂的分布式并发开发,并且可以促进这种集市一般的开发文化。
正因为如此,我个人觉得 git 并不用户友好,它迫使每一个希望更好地利用 git 的用户,都需要去了解 git 的底层实现理解和 git 面临的现实需求。光是 “指针分离” 这一个常见的现象,如果希望合理的解释,那么就必须深入 git 的底层实现,在了解了指针引用,版本快照,追踪分支和版本快照等一系列实现知识后,还需要了解频繁切换分支,生成分支,并行开发,分布式开发等多个版本管理需求,才可以明白它为啥不把这种直接暴露底层实现的功能更好的封装一下。
总的来说,git 不够友好,不够简洁,并不是开发者的开发水平不行,而是其需求过于强了,所以不得不将工具设计得这么复杂。而如 vscode 或者 IDEA 将 git 封装成更为易用的状态,但是这种方式往往限制了 git 的功能,其本质其实是限制了需求的强度。而一旦面对更高强度的需求,不得不承认 git 做得已经很 “友好简洁” 了。
如何熟悉工具呢?我觉得最为重要的是理解工具被设计和使用时的理念或者概念或者抽象,只要理解了工具中蕴含的理念是什么,对于具体的操作,就可以抄文档了。
linux 下的常见命令行工具有什么特点呢?这些常见的,简单的命令行工具,本质是 GNU/Linux 生态的一部分,他们的很多概念,本质是 Linux Kernel 的概念的延续和拓展。
GNU/Linux 的伟大真的是难以形容啊。
进程调度的本质是对于计算资源的分配,被调度到的进程拥有计算资源,就可以更快地完成自己的计算任务。不同的调度策略会使得计算系统呈现不同的效果,非独占式的轮流调度会使得每个进程的等待延迟减少,同时提高系统的并行度,进而提高吞吐量,但是会提高任务完成的延迟;独占式的串行调度,会让进程在运行时独占所有资源,可以降低任务完成的延迟,但是会增加任务的等待延迟,同时降低系统的吞吐量。
portability 可移植性
symposium 会议
modularity 模块化
monolithic 单片机,宏(内核)
bypass 绕过
non-trival 非平凡的,可观的
invocation 调用
compatible 兼容,backward compatible 向后兼容
capability 能力,权限
resurgent 复兴的,复苏的
heterogenous 异构
relay 继电器,转发,中转
semantics 语义学
underly 基本的,本质的
manipulate 操作
plane 飞机,层次,平面
respectively 独立地,各自地
dicated 精心设计的
tenant 租户
lease 租借,租用
commodity 商品,货物
adversary 对手
comprise 包括,构成
LOC,line of code 代码行数
cyber 计算机相关的
traverse 遍历
obstacle 障碍
order-of-magnitude 多个数量级
roundtrips 往返
retain 保留
leverage 使用,杠杆
indirection 间接
stale 陈旧的
fallback 倒退的
senarios 场景
enclave 飞地
scale 规模,可拓展性
encryption 加密
negligible 微不足道的
revisit 重温
feasibility 可行性
vesatile 灵活的,多样化的
best-effort 尽力而为的
preemption 抢占式
monopolize 垄断
utilization 利用率
idempotent 幂等的
devise 设计发明
paradigm 范例
stipulate 规定
effacy 功效
coarse-grained 粗粒度的
intuitive 直观的
proatively 积极主动的
indispensable 不可或缺的
polling 轮询
impose 强加于
indepth 深入的
reclaim 回收
remedy 弥补
retrofit 改造
incur 导致,招致
intercept 拦截
fusion 融合
substitution 替代品
heuristic 启发式
saturate 饱合
perception 观念,感知
amplify 扩大,增大
premise 前提
incoporation 合并,加入
tune 调整
contention 竞争
orthogonal 正交
Virtualization, Security, Distributed, Parallelism
你为什么加入 IPADS?
当我还是大二的学生的时候,我就听学长说起过 IPADS,他将 IPADS 描绘得很好,所以我基本上当时就很好奇,之后也是关注了 IPADS 的知乎账号,所以对于 IPADS 的进展有很深的了解。从客观上来讲,我个人的科研兴趣是系统软件,这很符合 IPADS 的研究方向。从主观来讲,我希望我从事的工作不只是一份工作,更是一个艺术品,我希望我的作品精益求精,我觉得这种想法和 IPADS 的实验室文化是相通的。
When I was a sophomore in college, I heard my senior talk about IPADS, and he described IPADS very well, so I was basically very curious at that time, and after that, I also followed the IPADS Zhihu account, so I have a very deep understanding of the progress of IPADS. Objectively, my personal research interest is in system software, which fits well with the research direction of IPADS. Subjectively, I hope that my work is not just a job, but also a work of art, and I hope that my work will be perfect, which I think is in line with the lab culture of IPADS.