我纯粹从一个普通211毕业生工作两年的普通人角度来说,大神们轻喷。
发现大家都有这山望着那山高的心态。
评论区有更细的岗位分法,比如dba、devops、java分布式中间件等等的岗位细分。有些岗位很贵,有些很便宜,大家自己进行区分吧。按语言来分,确实有点过于粗浅了。
- C++
目前在华为、百度、腾讯等等大厂中有很多应用,在硬件、图形学、网络、存储等领域都有应用。岗位数量挺多,但也没那么多,减少是趋势。很多企业现在能不用C++就不用C++,心累。
主要痛点:
Web和Unicode没有(事实上的)标准框架,导致C++远离当前最主流最来快钱的Web。C++一般工作在TcpIp层,所以C++程序员都会学网络通信、TcpIp协议、Linux内核,而很少懂HTTP、MySQL集群、MySQL性能优化。
很多C++岗位有一半是写脚本,Python或Lua或C#什么的,反应了C++不具备Java一样全家桶的能力。
C++遗留太多历史语法,不像其他语言有很清晰的规范。有些人喜欢像C with Class一样写C++,有些人喜欢完全C++11化,有些人喜欢template。给大型软件带来了太高的管理成本。
C++程序员拒绝学习开源,喜欢自己造(糟糕的)轮子。我见过太多C++程序员只会用STL和Socket解决问题,美曰其名性能好,各种鄙视Java程序员拥抱开源红利,喜欢魔改一些早已经被人写过千百遍的开源库,但造出的轮子太糟糕,浪费工期。其实真牛逼的是写Redis、MySQL、V8、JVM的那些能创造从0到1的C++程序员,而不是闭门造车或拒绝开源。
过于复杂的语法阻碍了人们学习更高级的技术,分布式的Paxos协议、Raft协议、Hadoop,大数据处理、数据挖掘、AI等等这些东西。很多技术都是用很简单很简单的语言来做的,可以让人把精力放在解决问题上,而不是语法上。我见过一些“C++语法律师”,知道右值引用的四种写法,但实际没球用。
其实C++目前主要缺乏的是语法标准化,unicode字符串(UTF8、UTF16)的标准化,http和https的处理框架。如果解决这3个问题,相信实际写起来和Java是没有什么区别的。
- Php
在那个Java没有统一天下的年代,Php好像是最火的Web语言,Php的语法再烂再恶心,标准库被人骂了一千遍,照样火的不行。很多大厂是用Php来做Web,C++做后台保证性能,很多大企业都有Php + C++的历史,但这两年似乎Web都转到Java去做,岗位变少了。
现在Java系越来越有一统天下的势头了。非常佩服谷歌那样靠C++搞定大量架构和业务的企业,确实是一件对软件管理要求很高的事情。
- Golang
岗位越来越多,作为C++和Java的替代品,越来越抢手。相比于C++,主要解决了历史遗留语法问题,内存池管理,包管理器,高并发、协程、Web服务器这些现代语言功能。
另外Rust语言也是对标C++,但国内不火,没看到有岗位。
- Java
供不应求,Spring、Hibernate、MyBatis、Zookeeper、Hadoop、Kafka、ApacheMQ,和C++程序员的风格完全相反,直接拥抱开源红利,能不写的就不写(其实最讽刺的是,上面这些除了Spring、Hibernate、MyBatis之外,都可以通过C++客户端调用,但C++程序员死活就是不愿意去学、去用)。非常多的后台会用,也是阿里系一手建立的生态。各种全家桶从头到尾撸一遍很好很强大。比C++性能弱?但是开发快省时间啊,而且一种语言通吃,避免出现C++ + Php、Python、Lua等一票多语言共存的麻烦情况。
Java简单的语法一方面造就了它在大型分布式系统、数据挖掘、AI(评论区的同学表示目前Python+C++在AI领域的应用更为广泛,似乎确实如此,很多AI框架都是Python搞的)等前沿领域的火爆,Apache社区是目前技术水平和产量都非常高的社区。但另一方面又造成太多Java程序员挣扎在CRUD的业务里,说到底只是入门简单,但要做的好,还是看真功夫的。
与此相比,C++程序员少的原因是语法就把一大堆人挡在了门外。
- Python
很多工程师都会的一门语言,可以做运维、后台、web、各种工具。但因为性能原因,没办法承载核心的系统,大部分做对性能不敏感的工具和应用。(评论区的同学表示目前Python+C++在AI领域的应用更为广泛,似乎确实如此,很多AI框架都是Python搞的)
- C#
游戏开发和Windows开发会用,前几年游戏很火。游戏里C#因为Unity游戏引擎而火,而国内一线厂商的自研引擎则一般用C++ + Lua或Python来做。而Windows平台下C#确实很方便。
编译器的话……其实很小众,岗位很少……当然其实除了这些有很多七七八八的岗位,都很多,比如游戏啊、大数据啊、AI啊什么的很多,也都挺好。牛逼的人做什么都会很厉害的,加油吧!
有人说我用语言来划分工作太low,老实说我也不想这么low,可惜……事实就是这样呀,你们工作就知道了。
说白了业务需求而已,哪里资本热,哪里就有需求。有技术热情是好事,只要别太固执……
反正,web前端和Java后台,这几年是主流,既然是学计算机的,就不要想着什么铁饭碗了,入行之后,你每天都会处于一个不断学习的过程之中,计算机更新换代的速度很快,不学习就会被淘汰。Java学习交流群:282711949,互相学习交流!
作者:赵臣又
来源:知乎