设为首页|收藏本站|
开启左侧

[问答] 对于C++ 开发者来说,服务器端开发,游戏开发, 嵌入式软件开发,哪个方向更有前景?

[复制链接]
11#
童宝 发表于 2020-5-10 12:30:01 | 只看该作者
 
慢慢的发现c++不只是招的人越来越少,而且普遍没java的工资高

还是匿名了,怕被c++大神们吊。
大神就是大神,但对于我们这些普普通通的c++程序员来说这就是现实,市场不需要你了,you free
回复 支持 反对

使用道具 举报

 
12#
laoyuqw 发表于 2020-5-10 12:30:16 | 只看该作者
 
喜欢c++的话就来我大腾讯吧 管他什么程序什么方向都是首选C++
回复 支持 反对

使用道具 举报

 
13#
可爱美眉化蝶飞 发表于 2020-5-10 12:30:35 | 只看该作者
 
服务器端开发:会不断被蚕食。游戏开发:危机并存、潜力巨大。嵌入式开发:依旧保持语言优势。
服务器端开发
服务器端要看是写什么类型的服务器,更具体说是要处理什么协议。如果是处理http、或类似http这种基于字符的协议,那脚本语言有莫大优势,将不会再用C/C++。但如果是处理基于二进制的数据,像游戏服务器、视频服务器,就另当别论了。
这里说下C/C++写服务的两个特点,一是灵活的交互机制,二是处理数据能力。在交互上,脚本语言写的服务器一般使用session机制,一个请求、一个应答,一个session就结束了,而且没有心跳包机制。写游戏服务器时,假设地图上有20个角色,这时每个角色是一个客户端,它们每次操作(移动、攻击、建造等等)都要生成一个数据包,然后交由服务器,虽然每个包几个字节,可数量大,这时再用session就出现严重性能问题。数据处理能力和C/C++指针相关,因为有指针,C/C++可以不必复制就到处引用一段数据。而要处理大量数据,光复制就要耗大量cpu,如果还要深入数据块,指针就更凸显作用了,像视频服务器。
总的来说,市面上基于字符协议的服务器是占大头,而且脚本语言服务器会不断发展,而一旦它们做到那功能了,C/C++基本就是失去那一领域,结果只能是不断被蚕食。
游戏开发
对这话题,我想应该扩展为app开发。app分为游戏和非游戏app。开发app有三种方法,一是脚本语言(react native、angular、vue,等等)、二是C/C++、三是原生(Oc等)开发。
目前app开发有这么个规律:公司一开始为尽快上市,用脚本语言先开发出app,等有了一定资金、人力后,发现脚本语言不能满足需要,然后改为原生开发。脚本语言写不出一个100%性能app,这是结构性矛盾,无法调合。另外这条规律只适合非游戏app,对游戏app,至少目前脚本语言是无解。对原生语言,一个问题是不能跨平台,而需要的逻辑一旦复杂后,如果iOS、Android两个平台依旧用原生语言实现,那两边都须要编程能力很强开发人员。也正是这原因,一旦到了复杂逻辑,往往想到的是写个C/C++库,然后让原生去调用。游戏是个把“复杂逻辑”常态化的例子,只用原生开发太难了,于是往往都用个第三方提供的框架,而这框架基本逃不开用C/C++。
开发非游戏app很少用C/C++,这是事实,这是C/C++“危”的一面,但由于C/C++技术特点,又存在“机”。可以去想像,一个SDK如果实现了以下功能会是怎样?1)同时支持游戏、非游戏开发。2)非游戏app可方便使用游戏中的场景技术,游戏app可使用非游戏中强大的gui功能。3)跨平台,同时能跨PC(Windows、Linux、Mac os X)、移动(iOS、Andoird),甚至智能机器。4)足可媲美脚本方案的窗口布局。5)可直接融合开源社区中项目,像Webrtc、Chromium、boringssl。——C/C++可以做到以上5点,而且只有C/C++能做到。这里请不要被市面已有的C/C++框架给限制了,像Qt、cocos2d,应该拓展视野,像SDL。当然,现实是市面上没 这么个SDK,可没有不代表不会出现,于是概括为“危机并存、潜力巨大”。
嵌入式开发
我把嵌入式开发分为两种,一是有自个操作系统的,二是没有操作系统的。
有自个操作系统的设备。特点是板上有颗专门存放系统镜像的falsh,往往还会存在容量至少8M以上的cpu外内存。定制化的Andorid正严重冲击这类系统。像智能眼镜、智能手表,基本跑的全是定制化Android。用Android好处不言自明:减少app开发时间。当然市面上还是有非Andorid的嵌入式系统,典型的有linux(uClinux)系,像一些内置了视频编、解码功能的arm cpu,在那种场合,基本只能用C/C++。
没有操作系统的设备。这类设备比较多的是接口、传感器设备,像基于蓝牙(BLE)的手环,心率计,温度、湿度传感器,电机控制器,等等。编程这类软件的语言基本还是C/C++,更准确是C,一来代码不多,二来cpu供应商提供的开发工具决定了只能用C。
终归来说,嵌入式开发中要和硬件打交道的,基本只能用C/C++,而且将来也不大会变。但离远了硬件的部分,像app,那就要看操作系统向外提供的开发app语言了,像定制化的Andorid就支持了Java。


如果想从事服务器开发,那会对开发者的C/C++使用经验有很强要求,没个4、5年以上C/C++使用经验,有的公司估计还真不敢用,毕竟一旦处理数据时出了BUG,那非常难查。嵌入式开发往往和硬件挂钩,需要有一定的硬件知识,像寄存器、中断、常见协议,同时需要较高的语言功底。对C++应届生,而且不是有硬件背景的,建议走app开发,而立即可以做的是去学习SDL,首先写个贪吃蛇、玛丽、坦克战啥的小游戏
-----------分割线--------2017.7.17补充
个人看好家用机器人市场(家用机器人中的app - 知乎专栏),一旦成形,产生的app规模不会比现在的手机app少。要引爆这个市场,结合PC、手机发展历程,至少要满足两个条件。1)硬件。普通家庭能轻松购买基本功能的硬件设备。2)软件。拥有稳定的操作系统,提供开发者易于使用、并且能充分发挥硬件功能的SDK(工具链)。
针对上面两点,目前家用机器人较为可行的有这么种解决方案。硬件:基本配置类同近期的Android手机,只是把和信号相关模块替换成激光雷达(SLAM)。软件:操作系统用定制Android,工具链包括上面说的那些个sdk,至少要有gui+webrtc+opencv+slam+tensorflow。
为什么要说这些?工具链中sdk主要编程语言是C/C++,只有C/C++才能快速将它们串连起来,为此家用机器人初始会大规模使用C/C++。即使这个市场进入稳定期,慢慢地更多用脚本语言代替,但C/C++依旧会是这市场高效语言,而且要支持新传感器这些还是逃不开用C/C++。
回复 支持 反对

使用道具 举报

 
14#
quickly100 发表于 2020-5-10 12:31:17 | 只看该作者
 
服务器吧,游戏开发能做游戏引擎也很好。这两者能跟互联网挂钩!嵌入式不推荐,毕竟那个更适合硬件开发人员去搞。而且互联网钱多!我觉得做好服务器,你对所有的软件都会有一个架构上的了解,即使专做其他也比较好转!当然了,做服务器你应该还会接触一些其他语言的,慢慢来,c++见效慢,需要有耐心。向其他人说的,做java也不错,java也是很全能,不过其他的语言不建议作为第一语言。都可以作为第二第三语言,以后再攻,而且会比较快。
回复 支持 反对

使用道具 举报

 
15#
wuquinn 发表于 2020-5-10 12:31:22 | 只看该作者
 
菊厂员工:鹅厂员工说的对,对于C++的开发者来说,这3个都没有前景,因为前景是无法预测的,我们只聊钱景,说道钱景要先看产业,服务端背靠云计算,游戏开发分为前端和后端服务器娱乐产业,嵌入式软件其实也分前端和后端其花样更多产业涉及更广,所以这三个方向是模糊的重叠的,所以没法预测。OK,言归正传,应届小白更应该关注自身基础能力的提高,英语,算法和数据结构,数据库,OS,网络和编译原理,更加关注这些不变的东西,为了应付将来的万变,后面才能不离其宗,钱景靠人更靠命,并不靠你说的这三个方向,所以,你喜欢玩游戏就去搞游戏开发,喜欢大数据去玩服务端开发,喜欢用软件控制硬件什么的就去玩嵌入式开发,你只要搞上层次,都有前景,都离不开,现代的c++ 14什么的,其实把C++很多缺点都纠正了,比如容易内存泄漏什么的,有智能指针,其编程风格越来越java化,在大流量大数据处理方面c++还是无敌的,所以我建议直接使用java,学习c++后,语法差不多,java是不需要学习的,我就是eclipse上参考别人的代码直接开撸java代码,查查api手册,问问人,什么python啊,lua啊,js,shell啊,basic啊,连fortran都写过,语言花样多,最有前景的是大领导罩着你,分红股票大大地,最应该学的语言是:鬼话,见人说人话,见鬼说鬼话,这个世界还是鬼多人少。
回复 支持 反对

使用道具 举报

 
16#
ouyangm110 发表于 2020-5-10 12:32:20 | 只看该作者
 
题主的提问是用C++作为武器,往哪个方向进行单点突破比较好。
对此我专门请教了有嵌入式背景的大佬。这位大哥做过嵌入式软件、商业服务的后端和游戏服务器开发,比较有发言权。
总的来说,嵌入式你是在跟硬件的各个参数打交道(现在IoT方向比较火),服务器你是在跟网络和数据做抗争(比如数据的处理,以及并发什么的),游戏研发是在对一堆工具进行熟悉优化(学会使用引擎,了解引擎然后优化引擎底层)。
各个大厂还是有招C++方向的研发,但是数量占比较少,这是因为C++的研发人员很难培养(特别是高级C++研发),需要经历无数的项目踩过无数的坑才能形成一套高效的使用方法。很多公司就切换到其他更加易学易用的高级语言了,一些大厂就算有C++作为主要语言研发的项目,也是首先使用公司内部的C++团队。所以题主看到大公司招C++岗比较少。
这三个方向只能说是各有千秋,从工资角度来说推荐游戏研发,因为游戏研发收入相对高一些,但是游戏研发的技术栈更新换代太快,而且需要非常快速的适应。这三个方向在工作过程中需要的也不仅仅是C++这一种武器,还需要其他各种武器来进行覆盖式的打击。
C++就语言来说是极好的,由于它是很接近底层硬件的高级语言,所以题主学会并且掌握这个语言的前提下,去进行其他语言的学习就显得轻松愉快,这样题主在拥有主武器的情况下还兼有其他各种热门副武器,在方向上来说就不用局限于电商服务器、游戏服务器或是IoT了。比如现在比较火的大数据开发,人工智能都可以尝试突破。如果题主在算法方面有造诣也可以切入到游戏引擎底层优化、数据挖掘或者神经网络等方向。
总的来说,C++是一个学习曲线比较陡的方向,中途放弃的人比较多,但是最终达到的高度也会比较高。
回复 支持 反对

使用道具 举报

 
17#
彼岸魔杰 发表于 2020-5-10 12:32:59 | 只看该作者
 
就我看来, c++ 开发者在这三个方向前景都不算特别好。

不如做图像处理, 音视频编解码或者基础设施相关的开发咯
回复 支持 反对

使用道具 举报

 
18#
Pandoracardi 发表于 2020-5-10 12:33:38 | 只看该作者
 
C++只有比较高端的岗位,比如游戏引擎,编译器,设备驱动等比较长久。
写c++你的程序要被很多人写的别的语言的程序调用,其实语言水平只是一小部分,对个人本身的素质要求很高。
回复 支持 反对

使用道具 举报

 
19#
BY猴子 发表于 2020-5-10 12:33:50 | 只看该作者
 
来搞医学图像处理吧。
回复 支持 反对

使用道具 举报

 
20#
何乜骸骨 发表于 2020-5-10 12:34:27 | 只看该作者
 
一,不要把自己绑定在某个特定的语言里,掌握一个主语言,然后学一两个脚本语言
二,你这几个方向基本决定了不同的就业方向,你可以去各大公司招聘网站看看招聘需求,或者看看不同的方向,能在什么公司找到工作,这些是不是你感兴趣的
三,方向不止意味着你要深入的技术,还有你将来的技术,生活圈子,决定了你如果创业,或者升职冯一系列的内容

总而言之,选择建议不止考虑技术
回复 支持 反对

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

8粉丝

459帖子

排行榜
活跃网友
返回顶部快速回复上一主题下一主题返回列表APP下载手机访问
Copyright © 2016-2028 CTLIVES.COM All Rights Reserved.  西兔生活网  小黑屋| GMT+8, 2024-7-7 12:03