|
发表于 2020-6-4 21:44:53
|
显示全部楼层
本帖最后由 赚小钱 于 2020-6-4 23:01 编辑
虽然,提问的内容在注释里,我还是看到了。
请说出你的职业规划方向,脱离方向推荐语言,都是不负责任的。
估计你也说不出来吧,我给你推荐几个我知道的
从公司来讲
1. 阿里:
java: 基本是 java 的天下,没什么说的
golang: 效能部门,阿里云使用的比较多
c++: 中间件部门,操作系统,数据库之类的
rust: 个别几个部门,私下尝试
2. 腾讯:
c++: 面试腾讯,大部分部门都会要求
golang: 腾讯云
3. 头条:
golang: 国内比较早使用 golang 作为主要语言的公司
rust: 飞书部门在使用
4. 滴滴:
golang: 国内比较早使用 golang 作为主要语言的公司
c++: 基础架构部门
php: 外卖部门早期使用,不清楚现在什么情况
5. 美团:
java: 从前同事那里了解到的
为什么没有 python?
因为每个公司都会使用,多数是写个类似批处理任务啊,项目开始搭建一个 MVP 啊,或者机器学习实现算法原型啊。但是,你要是只会 python,那不好意思。
从业务来说
1. 网络交互型服务(web后端,app 后端,游戏后端)
java: 生态太好了,有各种中间件
golang: 因为性能,语言特点,在国内很火
c++: 一些游戏服务器是 c++ 写的吧
2. 中间件服务
java: zk, Kafka(scala 基于 jvm),Hadoop, spark(scala 基于 jvm)
golang: docker, k8s, tidb
c: MySQL, OS, redis, nginx
c++: rocksdb, mongodb, tensorflow, caffe2
rust: tikv
3. 前端
typescript: 没的说啊,别的都是渣渣
4. 移动端
java: Android平台,不过 google 和 oracle 闹得那么欢,就别入坑了
kotlin: 前景看起来不错,语言特性好,还能复用 java 的生态
objective-c: 就不要学了,被苹果抛弃了。不过,如果维护老的 apple app 可能需要能看懂
swift: apple 家的亲儿子,同时,跨平台,也能完成服务端应用开发
typescript: 前端技术是万能的,各种 native 框架
从语言本身来讲,各自的适用面,排名顺序不等于推荐顺序
1. python
当然要从论坛最后欢迎的语言开始说了,python 因为背后站着 c,所以,在生态上就很有优势,就是说,你想做的事情,python 都有类库给你用,加之,语法上所谓的自由。
好处,想做点什么简单的事情,基本很快就能写一个可以工作的代码。
坏处,动态类型语言,很多 bug ,要等到运行了才知道。维护成本高。
2. c
如果不是进入顶尖企业,不建议第一份工作。毕竟,单线程都能写出内存泄漏,野指针等 bug,就更不用说到多线程环境了。当然,如果你想试一下,花费两周甚至更长的时间,去解决一个内存泄漏,每天例会,被领导问解决进度的话,那就尽情选择 c 吧。
好处,确实可以了解更多的底层知识
坏处,掉头发,浪费青春,了解底层的代价就是,困在了底层。
3. c++
这里说的是 c++11 之后的版本,是基本不使用裸指针的 c++。这个也需要进入大公司,虽然有各种智能指针,简化了内存管理模型。但是,也是需要在遵守一定使用规范的情况下。
好处,现代 c++ 确实是一门强大的语言,也可以说是最强大也不为过。并且,支持的编程范式也是最多的。
坏处,阅读几页的编译错误,需要更多的时间去熟悉精通。毕竟,多核是现代的主流。
4. java
掌握 java,基本没有什么太大的问题。首先,java 在互联网的地位,目前还是无法撼动的,虽然我讨厌 java,但我还是不得不承认。其次,java 出身的开发者,至少都有模块化思想,有一定高度的抽象思维。与之对比的 c,那基本都是面向过程,面向细节的思维,太底层了。
好处,生态最佳,招聘最多。注重设计模式,与架构思维。
坏处,竞争最大,生态太成熟了
5. golang
首先,有 runtime,gc,所以不需要考虑内存的问题,这是优点,同时也是劣势,无法开发高实时性的系统。但是,runtime 由内置了 goroutine,所以,可以很容易实现一个,能满足一定并发需求的系统。之后,又有 docker k8s etcd 等优质企业级服务。在云生态上,有天然的优势,基本是首选语言。在互联网圈,也比较受欢迎。
好处,上手快,适合作为学习并发编程的语言。大厂都在使用。
坏处,丑。
6. rust
如果你原本打算写 c/c++ 的,那我强烈推荐,转 rust 吧。真的香啊。无 gc,也无需 delete/free。
好处,性能与 c/c++ 在同一水平,高级语言。
坏处,需要和编译器作斗争。
别的想不起来了,你说想做什么方向,我给你建议。
|
|