15-445 Project 0

在CMU上CMU的网课()

主要是因为时间冲突也就没能去上15-445这门神课(大概会去抽空听听llm的课,如果论文来得及看的话),不过来都来了,那就顺着时间轴把项目刷一下

顺便也要转型成为技术型博客了(大概),虽然绝对少不了疯癫的碎碎念w

Project 0 整体来说是一个偏基础的项目大概花了4h 由于没有hidden case应该是可以轻松拿到满分的

整个项目编码过程其实(肯定)不是最花时间的,但是在debug的过程中,发现浪费最多时间是由于读题不仔细,或者说没有完全理解题目的意思,bucket leading bit 这类没有搞清楚关系所以就浪费了很多时间,大约是有一半的时间浪费在误解题意上。

实现本身没有什么难度,图示给的相当清楚,但是有几个细节还是需要斟酌一下,尤其是在presto实现中对于dense和overflow的处理

也算是首次体验了neovim在大型的C项目上面的体验,感觉相当不错,

WSL下面有过奇怪的依赖错误,找不到binutils,后来通过下载源码编译安装还碰上了api太新了导致不能编译的问题,找了ubuntu对应版本的binutils重新编译安装就解决了。

顺便还学了一下根据文件type配置neovim indent控制的方法,具体如下

vim.api.nvim_create_autocmd("FileType", {
  pattern = "cpp",
  callback = function()
    vim.opt_local.verbose = 0
    vim.opt_local.shiftwidth = 2
    vim.opt_local.tabstop = 2
    vim.opt_local.expandtab = true
  end
})

希望下次如果用上gdb的话 dap那一套debug可以有不错的适配,这种没有main文件的还真的没试过)

附上通关图片!