我为什么从 C++ 转到了 Go

2021-07-10
3分钟阅读时长

为什么突然发了一篇这样的文章呢?

了解我的人都知道,我很鄙视语言歧视链,因为我不只写 Go,我同样也在写 PHP,而且还写过三年的 C++,同样也搞过 Python。但是我为什么以这个主题写一篇文章呢?

很简单,Go 源码分析文章暂时写不下去了,因为 Go 汇编我看不懂。。。

继续回到上面的话题:我为什么从 C++ 转到了 Go ?

为什么选择 C++ ?

我本科毕业那会,Java 还没有那么卷,SSH 还是主流,SpringBoot 还得往后再推几年才流行起来。C++ 那会还是毕业学生的首要选择:工资比 Java 稍高。

嗯,因为这个原因,我也用大学仅有的 C++ 知识,拿到了一个当时看起来还不错的 offer。

其实选择 C++ 还有个原因:我一直想去做游戏开发。不过遗憾的是当时不太懂如何找工作,拿到一个工资达到预期的 offer 就直接入职了。

你可以会问:咋不跳槽去游戏行业呢?我也确实这么做了,但是在提离职的时候,经不住 TL 多次游说选择留下了,这可能是我最后悔的事情了。这个事情也给我现在一个重要的警示:当同事选择离职呢,没必要多次游说其留下,选择离开自然有选择离开的理由。

为什么放弃 C++ 呢?

嗯,主要原因就是找不到工作。

最近在一个 Rust 群看到一个论点:Go 太卷了,主要因为门槛低。为什么没人去卷 rust,因为 rust 门槛高,卷需要很高的水平,如:操作系统你得烂熟于心,计算机基础,巴拉巴拉一大堆。

其实这是不对的,一个语言卷不卷,不在于门槛有多高,而在于使用的人员基数有多大。我当时就说了一句:再往前推五年,谁去卷 Go 呀。

C++ 同样的问题,越来越多的企业放弃使用 C++。

目前留下使用 C++ 的公司基本都是传统行业(当然腾讯除外),这些行业能提供的工作岗位本身就不多。最严重的问题,很多传统行业解决的业务场景过于简单,导致很多技术栈都是跟互联网行业是脱节的,导致这些写 C++ 的同学根本就找不到互联网公司的工作。

当然还有个很现实的问题:工资很低。

说起来你可能不信,我写 C++ 那会连 redis 能干啥都不知道。面试前随便看了两眼就写简历上了,记得去面试汽车之家吧,面试官问我 redis 在我们业务中的使用场景,当场被拆穿。

最近同样在一个群里看到这么个论点:我想学 epoll,我需要去学下 C++。其实大可不必,Go 底层已经把 epoll 封装好了,直接看 Go 源码就可以了。去看 C++ 的话,至少你是这个流程看下去:socket->select->poll->epoll->asio->libevent->libev,费力不讨好。而且这些年 C++11, C++17, C++2x 每个大版本都是不同的语言,C++ template 会看的你欲仙欲死,#define 看你云里雾里,何必呢。

我是如何转到 Go 的?

其实接触到 Go 完全是巧合,大概是在 2014 年京东上搜了下 web 编程。其实我是想找前端的书的,搜出来的第一本是《go web 编程》。Go 是啥完全没听过,书皮真黄,就它吧。

当时看 Go 语法是真的别扭,看了好几次,都记不住。印象最深的就是 channel 吧,真 TM 的怪,基本这本书就是看看停停,不过也没放弃,当然也去用 beego + bootstrap 写个 demo 炫耀了一番。

一直在追的一个博客:coolshell.cn,大概 2015 年那会吧,在微博上还咨询过左耳朵耗子想去转 Go 的想法。

当然那个时候 Go 还是小众语言,不过没想到的是这些年竟然被各大互联网公司接受。

可能人生就是这么奇妙,可能你当初一个不起眼的操作,也可能是你未来的陌生手段。朝华易逝,唯有静心沉淀才能不负青春。

欢迎关注公众号。更多学习学习资料分享,关注公众号回复指令:

  • 回复 0,获取 《Go 面经》
  • 回复 1,获取 《Go 源码流程图》

Avatar
HHFCodeRv 欢迎关注我的公众号:HHFCodeRv, 了解我的最新状态。