我们做分布式存储的,我们数据面选择了C,没有选择C++。管控面选择了golang。没选择C++的原因有如下几点:
1、C++特性太多,难以驾驭。
C++支持的特性很多,我们的团队成员不全是C++专家,不是每个人对这些特性都很熟悉。有些C++专家倾向于用高级特性、以及各种技巧,这会早晨普通程序员阅读和维护这部分代码很吃力。
有些团队使用编码规范来约束大家,规定那些特性不能用,比如google的C++编码规范很多内容都是不能用那些C++特性。实际上这种规范很难彻底执行,对有些C++专家来说,你不让他炫技,比杀了他还难受。
我们希望大家把更多精力用于学习存储技术,例如:如何实现ROW快照,用于崩溃恢复的日志如何设计,如何改进Raft让它更适合分布式存储系统,等等。我们不希望大家把很多时间浪费到学习C++语言上面。语言本身能带来的受益有限。
2、C语言代码与机器指令之间的对应关系更清晰,有利于Bug排查
分布式存储是基础软件,对Bug容忍度更低。现在服务器的内存都很大,当bug发生的时候,要把完整的内存coredump存储下
登录后可查看完整内容,参与讨论!
立即登录