对数据库感兴趣,但完全接受不了 cpp

206 天前
 OliverDD

这两年用到比较多数据库,ClickHouse 、PostgreSQL 等,慢慢发现自己对数据库非常感兴趣,很想深入去了解各个数据库模块和设计。

看 CMU 的 15445/645 课程,结果整个项目基于 BusTub (一个 C++写的教学数据库),对于 CPP 我是真的提不起一丁点兴趣,看它各种操蛋语法很是痛苦,什么 move constructors 、左右值、&&,我感觉很难快速掌握这个“工具”去学习我想学的,反而会在工具上花费大量时间...

想问下各位大佬们有什么建议吗?

贴一下在看的资料:

6000 次点击
所在节点    程序员
45 条回复
ydpro
206 天前
推荐 2 个课程:
CS186 ,他的实验是基于 Java 的。
清华大学的数据库课程 https://www.bilibili.com/video/BV15u4y1Q71R/?spm_id_from=333.999.0.0&vd_source=b578f404bddc480d71de0ce5866009a9

楼主有空可以看下,我也比较纠结选择哪个课程
longbowape
206 天前
传统数据库实现可以看《 Database System Implementation 》,《 Designing Data-Intensive Applications 》和实现关系不大,主要讲应用层怎么做技术选型的。
mm520
206 天前
可以看下我写的教程,用 Go 和 Rust https://w02agegxg3.feishu.cn/docx/Ktp3dBGl9oHdbOxbjUWcGdSnn3g
littlewing
206 天前
你是对存储引擎还是 SQL 感兴趣,存储引擎的话,move constructors 、左右值、&& 这些用得比较少
thedinosaurmail
206 天前
那就学编译原理,学完编译原理再看 cpp
OliverDD
206 天前
@ccsexyz 嗯,知道了,去玩吧
OliverDD
206 天前
@wateryessence 毕业一年了…学这么心智开销大的东西,我还不感兴趣,这不是什么好主意
kneo
206 天前
这 OP 有点巨婴。人家指出你的问题还需要先和你很熟?
totoro52
206 天前
那天学了点 rust ,说实在 学不下去了,规矩太多了
OliverDD
206 天前
@kneo 本来不想回的。我对某个技术感兴趣,想深入点研究以满足好奇心,碰壁,遂来本站提问,请问这个行为戳到他哪点了?就算我叶公好龙,他是谁啊,凭啥在互联网上指指点点?真有意思,我从未一天换个说“我要成为 xxx 专家!”,何来叶公好龙一说?
GrayXu
206 天前
@Kumo31 #20 +1 ,感觉 performance 和低心智负担就是个 trade off
simen513
206 天前
PostgreSQL 的代码主要是 C 语言的,注释也全,代码风格不错,网上资料也多,推荐你学习。
codegenerator
206 天前
查询引擎什么语言 java go 都可以,存储引擎可以考虑 rust
我以前用 c++自从用了 rust 彻底不想写 cpp 了
ihciah
206 天前
cpp 通常有两种:简单版和魔法版,简单版性能或者泛化能力差一些。很多人以能够写出魔法并且难以被经验较少的理解沾沾自喜。
这种问题在 rust 里不存在,麻瓜也能写出足够高效的代码,且没有一堆 hardcode 补丁般难以理解的规则。
这才是一个语言应该有的样子:具有充分的表达能力的同时保持简单(如果一个 cpp 程序员认为 rust 更难,那么很有可能他并没有学会正确的 cpp 使用姿势)。
我也很讨厌写 cpp ,讨厌 cpp 真的不代表你会讨厌曾经强依赖它的技术。
teiboku1
206 天前
看看 lucene 呗 纯 java
agagega
206 天前
cpp 的心智负担是重,但你说的右值引用和移动构造这些东西并不是 cpp 的心智负担造成的,甚至不是因为 cpp 没有 gc 造成的,所有支持值语义的语言都必须实现类似的概念。
ilcn
206 天前
@OliverDD

你就是叶公好龙。你发言自由,我们就没有发言自由?
az467
206 天前
CS122
用的 java
主要是 query engine 查询优化相关

或者你看看 TiKV/TiDB 呢
levelworm
206 天前
我感觉楼主也不算是叶公好龙,毕竟很多时候只想了解背后的东西,不打算做专业的实现,那的确没必要去按照专业的法子来。就好比说我想了解一下编译器的实现,我没必要啃龙书虎书,对不对? 我把 Crafting Interpreters 这本书看完,代码跟着抄完,我的目的也实现了。反正我又不是想要成为专家,只是想了解。

楼主可以找找看有没有数据库方面类似编译器这块 Crafting Interpreters 的书,就是一边介绍原理一边干。挑一本不用 C++的就行。

或者读读第一版的 redis 源代码也行,据说质量不错。C 相对来说语法简单一些。
xuanbg
205 天前
要我说 OP 喜欢研究数据库技术,但讨厌 C 艹,这有问题吗???一点问题都没有,任何人都可以讨厌 C 艹。楼上明里暗里嘲讽 OP 的也是够了。。。

还有 2 楼说 rust 有一样的问题,这个确实是客观事实。但这个不影响我就是喜欢 rust 而不喜欢 C 艹呀。

好吧,我觉得 OP 可以不用去管别人怎么实现,自己多看点理论,然后用自己喜欢的语言去做个实现就很好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1032919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX