很像数学
lisp 真的很像数学,或许这就是 lisp 的特征。它像是一个从计算器程序变成的计算机一样有趣。而 C 则更像是一种由内存驱动变成的计算机。
另外一个很像数学的点就是,lisp 试图用最少的基本结构(可能是数据结构,也可能是过程结构)来描述最多的复杂结构,就像数学在用最少的公理来推导最多的定理一样。
数学家会详细研究房子着火之后的救火步骤,当房子安然无恙时,他们则会将房子点燃,然后心安理得地救火。
当我们提起 git 的时候,我们总说它是版本控制工具。但是版本控制工具到底是什么?我觉得是一种特化的数据库,我们根据版本号去查询对应的项目内容,这种特殊数据库用于进行代码管理。而对于 git,我愿意定义它为“分布式、并发、无锁数据库”。
Git 是 Linus 写出来的版本控制工具,其诞生的直接原因是原来为 Linux 进行版本控制的工具 BitKeeper 不再免费了。也就是说,git 的直接需求是 Linux 的版本控制,而 Linux 是世界上最复杂的开源项目之一,所以 git 的设计是较为彪悍的,它支持最为复杂的分布式并发开发,并且可以促进这种集市一般的开发文化。
正因为如此,我个人觉得 git 并不用户友好,它迫使每一个希望更好地利用 git 的用户,都需要去了解 git 的底层实现理解和 git 面临的现实需求。光是“指针分离”这一个常见的现象,如果希望合理的解释,那么就必须深入 git 的底层实现,在了解了指针引用,版本快照,追踪分支和版本快照等一系列实现知识后,还需要了解频繁切换分支,生成分支,并行开发,分布式开发等多个版本管理需求,才可以明白它为啥不把这种直接暴露底层实现的功能更好的封装一下。
总的来说,git 不够友好,不够简洁,并不是开发者的开发水平不行,而是其需求过于强了,所以不得不将工具设计得这么复杂。而如vscode 或者 IDEA 将 git 封装成更为易用的状态,但是这种方式往往限制了 git 的功能,其本质其实是限制了需求的强度。而一旦面对更高强度的需求,不得不承认 git 做得已经很“友好简洁”了。
portability 可移植性
symposium 会议
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.