《CSDiy》笔记
探索数据库系统的奇妙世界
数据库系统是计算机科学领域的基石,负责存储、管理和检索数据。《CSDiy》带领我们深入了解了Stanford的CS346课程和CMU的15-799课程,揭开了数据库系统实现的神秘面纱。
Stanford的CS346课程以RedBase项目为核心,要求我们从零开始构建一个简易的数据库系统。这个项目分为记录管理、索引管理、系统管理和查询语言四大组件,每个组件都像拼图一样,逐步拼凑出完整的数据库系统。RedBase的代码量适中,结构清晰,非常适合有CMU 15-445基础的同学继续深入学习。通过实现B+树索引、DDL语句解析和RQL查询语言,我们不仅巩固了数据库理论知识,还培养了C++编程技巧。
CMU的15-799课程则聚焦于数据库领域的前沿主题。fall2013版本探讨了流数据处理、图数据库和非易失性存储器,而spring2022版本则深入Self-Driving DBMS的领域。课程任务包括基于PostgreSQL的性能调优和改进NoisePage Pilot的自驾驶数据库系统。这些任务不仅拓宽了我们的视野,也让我们对数据库系统的未来发展有了更深刻的理解。
编译原理的奇妙旅程
编译原理是计算机科学的另一大基石,负责将高级语言转换为机器能够理解的低级代码。《CSDiy》为我们介绍了北京大学的编译原理实践课程和Stanford的CS143编译课程,带我们踏上了探索编译器内部工作原理的奇妙旅程。
北京大学的编译原理实践课程给予了我们极大的自由度,从零开始实现一个SysY到RISC-V汇编的编译器。课程引入了Kopa IR中间表示,使得编译器开发更加结构化和高效。配套的Docker环境和自动测试脚本大降低了开发难度,允许我们专注于核心功能的实现。通过逐步扩展编译器功能,我们不仅理解了编译器的工作原理,还体验到了编译器开发的乐趣。
Stanford的CS143编译课程则通过COOL语言的设计和实现,带领我们深入了解编译器的各个阶段,从词法分析到中间代码生成,再到目标代码生成。课程提供了详细的讲义和实验指导,帮助我们一步步构建出完整的编译器系统。通过这个课程,我们对编译器的优化和代码生成有了更深刻的理解。
结语
通过《CSDiy》的学习,我们不仅掌握了数据库系统和编译原理的核心知识,还体验到了这些领域的魅力和挑战。无论是从零开始构建数据库系统,还是深入理解编译器的内部工作原理,这些经历都为我们的计算机科学之旅增添了宝贵的财富。未来,我们将继续探索这些领域的奥秘,推动技术的边界,为计算机科学的发展贡献自己的力量。