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

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

[复制链接]
77210 20
@Xizi_3cZjRvNK 发表于 2020-5-10 12:23:44 | 只看该作者 打印 上一主题 下一主题
 
C++应届小白一枚,决心选C++作为主武器,但是目前各大公司招C++岗比较少,目前看到的都是服务器端开发,游戏开发, 嵌入式软件开发这三个方向,请教各位大佬,哪个方向前景更好?


上一篇:请教下预应力双T端部跟跨中容易裂是什么原因呢?有没有避免的方法?
下一篇:有没有一个能跨平台的好用的日程管理APP?
@



1.西兔生活网 CTLIVES 内容全部来自网络;
2.版权归原网站或原作者所有;
3.内容与本站立场无关;
4.若涉及侵权或有疑义,请点击“举报”按钮,其他联系方式或无法及时处理。
 

精彩评论20

正序浏览
跳转到指定楼层
沙发
雨霏花影 发表于 2020-5-10 12:24:24 | 只看该作者
 
这么久以后再来看这个问题,补充一下哈,其实游戏开发(基于UE4的c++方向)也是很有前途的哈,喜欢c++并且喜欢游戏的可以学习UE4。
--------------------------------------
我目前在鹅厂从事的是服务器的领域,用的是c++。后台开发都比较低调内向,很少有人来回答类似的问题。我也不能在这里说某某游戏在线人数多少、用了多少台配置多高的服务器。但是因为选用c++,我们的服务器成本做到了最低,同时因为用户量巨大,很多场合c++几乎是唯一的选择。
其实,有不少周边的服务,请求量并不高的,随便用什么语言开发都可以,只是团队中大部分人都熟悉c++,为了避免切换的成本,对于周边服务一般也会选择c++。但是从公司制度上来说,从来没人限制我们必须用啥语言,公司内部用go、java来做服务器的都有。
曾经在一次开发论坛上听过一个演讲,演讲者是某游戏引擎的开发人员,当时印象最深刻的就是他说了这样的一句话:脚本的耗电量是c++的30倍。现在手机越来越高级,可以玩越来越复杂酷炫的游戏,但是电池本身的瓶颈一直未有大突破,导致玩几下就没电了。这个时候,c++的优势就体现出来了。
某现象级手游客户端本身是用unity开发的,后来发现提高性能的解决办法是将其中部分功能改成c++。根据我和前端同学的交流,他们也认为很多性能问题优化到最后还是需要C++,所以不如从一开始直接上C++。以后我们这边的前端会逐渐从unity切换到UE4,因为UE4的开发语言就是C++。前端同学的技术栈更新得很快,我见过技术就有flash、cocos、HTML5、unity,曾经很多前台同学跟我表示很羡慕后台开发C++万年不变,现在终于也能用上C++了。
关于耗电量,其实不仅仅是移动端,服务器其实也有一样的问题。几年前看过一个视频(这里有介绍和链接:Why C++ ? 王者归来 | | 酷 壳 - CoolShell)。现在几年过去了,随着云计算越来越流行,以后有越来越多的机房和服务器,电费占了不少的成本。我觉得云计算给c++带来了不少机会。
作为一个喜欢c++的人,对于“使用c++的人是否越来越少”这个问题不是很关心。第一,我只是特别喜欢c++而已,并不是不会别的;第二,c++的市场永远存在,作为一个使用者,只要保持自己学习的节奏,混口饭吃不难。就像现在在鹅厂的后台开发,看不到c++被取代的迹象。
其实,BAT都有用c++的。因为c++的人才培养时间极长,所以成本很高,一般的公司会慎选。在我们这里,新人进来都有导师,导师在一段时间内会看新人写的每一行代码,还有些负责任的技术leader会细心review组内每个人的代码。总之培养新人的成本是非常高的。但是c++的缺点只是难学,并不难用,说好听点就是难学易用,付出高回报也高。我们愿意花时间去培养新人,每年也都会招实习生、毕业生,新鲜血液的加入才能让我们的团队保持活力,新人也能提醒我们这些老油条不忘初心。对于正在学C++、喜欢C++的同学来说,欢迎毕业以后来鹅厂。
回复 支持 反对

使用道具 举报

 
板凳
12589 发表于 2020-5-10 12:24:52 | 只看该作者
 
在软件开发领域 C++ 曾保持了二十年的统治地位,C++开发几乎应用到了所有领域。
背后的原因就是计算能力的价格昂贵,而人力相对便宜,所以开发商愿意采用运行效率比较高的语言和平台来节省计算能力的成本,为此愿意付出一定的开发、测试和维护成本。
但是摩尔定律几十年如一日地有效,每18个月计算能力的价格就下降一半,20年下来,单位价格的计算能力提升了近万倍。
最近几年我们可以看到,在各个领域,尤其是应用开发领域里,多种语言都有取代C++的趋势,并且这个趋势是不可能逆转的。
最近几年已经很少有新成立的大型项目选择C++作为开发语言了,应用程序开发领域C++基本也退出了,尤其是移动App,自从Symbian和黑莓挂掉之后,就没有移动平台把C++作为第一语言了。
这不是说C++就要完蛋了,也不等于C++程序员没人要了,只是C++的领土面积有些缩水,但是离亡国还早得很。
C++传统上很强势的领域,它依然具有统治地位,主要就是基础设施和超大型软件应用领域。
比如:
数据库,编辑器,编译器,脚本引擎,虚拟机,排版软件,游戏引擎,应用程序框架,计算平台等。
代表性的项目有,MySQL,VisualStudio,LLVM,V8,VMWare,Office/WPS,3DMAX,Qt,WebRTC,Tensorflow等
可以看出来,都不是小项目,源代码都是上百万行,甚至千万行的,并且都有很长的历史,有的多达30+年。
这类项目采用C++一方面是历史惯性,一方面是C++的性能在这些特地领域的确有优势,比如C++和C 汇编混合调用的时候几乎没有额外开销,而Java的JNI,Golang的CGO都是有额外成本的。
对于刚进入软件开发领域的年轻人来说 C++并不友好,新的工作机会的确在变少,而现有的项目需要的基本功和相关知识积累又非常高,不是初如职场的新人可以快速掌握的,除非你很聪明勤奋,又有很大决心去学习,比如 编译器,数据库领域,再聪明勤奋也要学很多年,而且要有丰富经验的业界前辈来指导。在这些领域C++本身不是问题,难的是领域相关知识技能。
选择了C++就要断了速成和赚快钱的念头,要潜心研究慢慢积累,花5-10年去深入某个领域,这需要很大的决心毅力,别太在乎投入产出比。
虽然我写了二十年C++,也用C++写了些大项目,但是我已经在逐步放弃C++了,最近一年里用得最多的是Golang,Python,Objective-c,Java。
因为我的领域是应用开发,是面向广大最终用户的应用,这个领域越来越强调开发效率,对性能到不是那么介意,C++显然很难胜任。
以前的软件开发,版本迭代周期一般是 半年到一年,而如今互联网软件的迭代周期通常是周为单位的。比如 YY 在某一年里 发了25个版本,只有春节休息了下,这还不包括十多个小补丁版本。
C++对工程师coding水准要求太高,很容易就搞出野指针,内存泄露,缓冲溢出什么的,所以测试成本,调试成本,崩溃解决成本都比较高,周期也长,耗费了开发者大量精力。
那时候,经常有大量崩溃上报,看minidump又是崩得乱七八糟的callstack,至今心有余悸。
具体到题主的问题,我可以说 C++在这三个领域都没啥前景,按照趋势来看这三个领域未来都不算是C++的强势领域了。
服务端的瓶颈已经不是计算性能了,而是传输、IO、伸缩性,并行度等
游戏开发除非是引擎,业务逻辑剧情基本都是写脚本了,而除非是大公司有积累,否则也不会自己撸引擎。
嵌入式依然受摩尔定律支配,随着计算能力越来越便宜,语言也会更倾向于开发效率更高的,而不是运行效率高的。
如果真的对C++有情有独钟,非要写C++不可,那么就去我上面提到的几个C++强势领域吧,基础设施和超大型应用。
回复 支持 反对

使用道具 举报

 
地板
同是天涯XX人 发表于 2020-5-10 12:25:23 | 只看该作者
 
对于写C++的同学来说,抛开面试难度,只说个人成长、待遇以及未来需求、发展。无论是服务器端开发还是游戏开发以及嵌入式开发前景都一般。
嵌入式开发我记得5、6年前火了一把,但是,当时主要原因是被炒作的(物联网啥的),实际上待遇一般,即使现在需求和待遇都不太好。
游戏开发的话,网易游戏面试要求比较高,但是进去后多数都是写Python脚本,腾讯游戏是写C++逻辑,从我认识的同学来看,工作2年后,技术没有太多成长,跳槽出来想转行多数待遇也一般(我那届去网易游戏的很多,认识的得有5、6个,目前全部离职转方向了),但是这些人当年在校期间可是实力强劲的。当然如果能去做游戏引擎开发还是值得的,但是这种需要隐忍以及对游戏是真爱才可以。
服务器端开发多数实际上是业务岗,增删改查,快速迭代业务上线,如果技术没有太多积累的话,成长也有限。
实际上如果对技术有追求,个人推荐往底层方向走,走系统和基础架构类、分布式机器学习平台等方向,毕竟这种技术难度大,成长高,未来比较火且赚钱很多的技术方向啊。拿阿里招聘JD来举例:
职位详情 - 阿里巴巴集团招聘 可以看到以下几个要求:
1、熟悉AI领域常用算法以及开源框架(如Tensorflow/Caffe等); 2、熟悉大数据处理框架(如Spark/Flink等); 3、熟悉计算表示层技术(如Cloud Dataflow等); 4、熟悉大规模服务调度系统(Yarn/Mesos等); 5、熟悉资源隔离等技术(Docker/Kubernetes); 6、熟悉分布式存储系统。
这6个选项,任意找一个方向深入,都是不错的选择,我再补充2个,那就是搜索/推荐底层相关的生态开发。
而如果喜欢做嵌入式,可以选择:
职位详情 - 阿里巴巴集团招聘
当然异构计算系统架构师这种职业也是未来高端人才的要求,就是即会分布式机器学习算法,又懂嵌入式,又懂分布式系统设计。
再补充一点,上述提到的方向,做个几年后,语言就不是那么重要了,重要的是懂得如何解决问题。
回复 支持 反对

使用道具 举报

 
5#
chzhiyuan 发表于 2020-5-10 12:25:55 | 只看该作者
 
自从社会发现大家已经有了更多的存款之后,开发游戏的人也不优化了,现在都用Unity3D+C#瞎几把写,屁大点特效就可以把i7-6700 + GTX1080吃满。嫌游戏慢就去买更牛逼的电脑(逃。软件也一样,客户端程序谁要优化啊,知乎那么多bug你们还不是不退,卡一下算个屁。
所以题主如果一定要用C++,可以考虑去那些行业,which还是有钱也不够买电脑用的,或者客观上无法使用好电脑的,即可以赚大钱,又可以用自己心爱的语言。
回复 支持 反对

使用道具 举报

 
6#
蚂蚁金服威力贷 发表于 2020-5-10 12:26:53 | 只看该作者
 
现在干实时音频的表示我们这行果然没存在感。
回复 支持 反对

使用道具 举报

 
7#
tanchunhai 发表于 2020-5-10 12:27:33 | 只看该作者
 
说实话,这几个领域都挺难的。
嵌入式开发,服务器开发都属于受限系统开发,经常需要优化,当年有兄弟在dsp 32k 片上mem上实现cif大小的视频编码,绝逼不是会点语言能解决的。
服务器开发受限稍微好点,对架构能力要求很高,上集群啊,io非阻塞模型啊,cpu密集优化啊,负载均衡,zerocopy,数据库优化等,也绝逼不是会点语言能解决的。
游戏我不知道,不说话。总体来说,选一个自己可以长期干下去的方向,持之以恒,必有厚报。
回复 支持 反对

使用道具 举报

 
8#
吖丝黎 发表于 2020-5-10 12:28:23 | 只看该作者
 
为什么要用语言来区分开发者,语言难道不是一个程序员的职业技能中最好习得的一个么?
目前在做数据库项目,golang + c++混合编程,项目启动之前毫无golang背景,经过两个星期时间,golang的部分就可以开发和调优,然而数据库那部分的知识才是通过长年累月的实践踩坑得到的宝贵经验。如果语言那部分比你的领域知识更重要的话,《xxx:21天从入门到精通》的作者们才应该经常在各领域顶会露脸。
话回到题目上,个人觉得c++的服务器端开发还有的可做,不过要看是什么服务器,对性能要求越高就对底层语言黏性越大,上层应用应该快速迭代,基础设施应该精耕细作。举个比较常见的例子,当你发现你的服务因为CPU context switch而影响性能的时候,你觉得是用了高级语言然后去改虚拟机好,还是用了c++去修改通信模型比较好,这当然见仁见智,但是第一个方案通常让你发现xxx语言的虚拟机是c++写的(逃
回复 支持 反对

使用道具 举报

 
9#
我是孟弟弟 发表于 2020-5-10 12:29:17 | 只看该作者
 
都不好,人都招不到,老板也不愿意招C++,都去写jawa把
回复 支持 反对

使用道具 举报

 
10#
豚连姆斯 发表于 2020-5-10 12:29:34 | 只看该作者
 
既然是小白,又如何以语言选择职业未来呢?
我理解完全是反过来的,应该以方向来选择,至于语言倒是随便选。
上个月,组织上安排我写一个C++的服务器,我都6年没碰C++了,但事实上实现起来还是很轻松的(顺手用scala+akka实现了client sdk),而这里面的关键难点也完全不在语言上,而是分析设计协议、分析业务特性、设计模块架构、设计可用性、容量、监控、寻找性能瓶颈等等服务端工程师的基本功。即使语言特性的使用、库的选择上做不到尽善尽美,但也能做到八九成,不会出太大问题,毕竟语言都是相通的。
而方向的选择则是决定命运的,这个经验是资深工程师的经验所在。服务端工程师换个语言容易,你要说我的特长是C++,在嵌入式和服务器之间切换可就难喽。
回复 支持 反对

使用道具 举报

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

本版积分规则

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