C++的后端和客户端的岗位有什么区别吗?
大家好,我是程序员YT
不少同学学习c++的初衷就是想去做后端,从而衍生出一个问题:C++后端和客户端的岗位有什么区别吗?
那很多同学深度了解之后却发现,c++有后端吗?
其实传统意义来说,C++ 是没有服务端的。就是 C++ 它不是适合做服务器开发。
那为什么又出现了C++ 服务器开发这个词呢?
这其实很多的时候,是由于我们口语表述的时候,把它叫做C++ 后端,但实际上它不是C++ 的后端。
这个后端就是backend,英文单词就是back end。
其实它是一种对外提供支持服务的意思,对外提供服务、提供功能、提供支持的这一层。
其实很多的时候,大家所熟知的,比如做的这种SDK,也有把它叫做后端;包括有些人做的这种自动驾驶的功能,也把它叫做后端;
也有把智能座舱的也叫做后端;包括做路由器开发的,也有的可能把它也叫做后端。
就是这一层,看不见摸不着的,都把它叫做后端。
那对应来说,客户端开发呢?
客户端开发它会有些不一样,它是那种桌面的客户端,也就是 C++ 的客户端。
基本上都是做的桌面,你能看得见的这一类型。
用的方案基本就是这么几套:
要么就是QT;
要么就是MFC;
或者说Linux下面这种GTK ,GTK它这种很少
大多数情况下用的可能都是QT或者MFC或者win 32以及 Windows Form,就是WPF这一套这种客户端开发。
那所谓的 C++ 的服务端呢?
真正传统意义把它叫 C++ 服务端的,我认为这种岗位在boss直聘上面有,但是这种岗位数量不多。
而且那种岗位你把它真的叫做服务端可能会有点难。
因为它跟传统的这种 java 的后端,是有很大区别的。
java这种后端,你会发现他提供的就是这种接口服务
那这里就要额外讲一下: C++ 的后端和 java 的后端,它们的区别在哪里?
我们先说java的后端。
我们比如说,以淘宝为例,在淘宝上面比如看到这个商品的信息,这是 java 提供给你的。
然后比如说我们看到的购买商品的整个流程,这是 java 实现的。
这种接口,它就不会用 C/C++做。
那 C/C++ 在哪工作呢?
淘宝上面我们看到那种商品的图片,这种图片存在哪里?
它有个分布式文件系统,那这个分布式文件系统,就很有可能用 C/C++ 写的。
因为这种功能,这种基础设施功能,用 C/C++ 做会更好。
因为他的接口简单,但是性能要求比较高,
但是比如说商品的这种流程,比如在购买的时候,或者在看到这种商品信息的时候,它就会用 java。
因为他的接口很多繁杂,整个过程间接口会很多,而且偏业务,那这种功能它会选择用 java写。
所以就实现功能来说,这种基础设施开发,那就更偏向c/c++。
所以,如果说大家想选择c/c++做开发,那就的正视一点:
c/c++的方向是很多且各个方向的差距是很大的,不能用后端这两个字去笼统的涵盖它的技术方向!
举个例子:
就比如做音视频的,同样做音视频,不同的公司方案都不一样;
即使做安防,比如海康和大华,他们的软件代码都不一样,都是做安防的;
再比如说做这种存储的,就从做存储设备到这种云存储的厂家,它都是不一样的。
乃至包括做游戏的都叫做游戏,但是做游戏的也都不一样,比如做这种MMO的、包括这种SLG的、包括这种MOBA的这种游戏
它都会不一样。
而且它底层来说,它的方案代码也不一样。即使同样是MMO,比如说做魔兽世界的和做这种传奇类的,那这种它都会不一样
所以大家得去正视这一点,它是客观存在的,改变不了。
大家如果选择了 C/C++ 语言,就得去接受它各个方向都不一样,而且差别很大。
那有朋友说了,我学c/c++,那我总得选择一个方向去专精吧
我的建议是:
如果是应届生的朋友,暂时就不要去挑方向。就在 Linux 上面用 C/C++,然后校招的时候所有的方向都投。
都不要去细分,比如说以后到底是做游戏还是做存储,还是去做音视频。
不要去考虑这个事情,就在 Linux 上面用 C/C++ 做一两款产品,自己能用给别人也能用的产品级项目,然后后面所有方向都海投。
这是选择c/c++方向学习同学最好的上岸姿势。
而难点就是在于,如何去选择,去做好一两个这样可产品化的项目,这一点尤为重要。
倘若有些同学就是对某一个方向有自己的执念,我就非做这个方向不可了,那也是在Linux上用c/c++上开发的基础上,在项目的选择上可以偏向做这个领域的项目,在项目中去体现大家爱好方向的技术内容,而不是all in某一个方向。
毕竟c/c++虽然大方向的岗位是不少,但那也是因为方向多,就单点来说去all in 实在是非明智之选。
如果大家也有技术选型/学习困惑/offer选择的问题,也欢迎大家投稿@程序员YT