请问各位哥哥姐姐们新手该如何选择编程
各位哥哥姐姐们你们好 初来鱼C论坛希望多多照顾我是一名新手正在努力的学习中//我学过python和C++ 但是不知道目前到底该选择那款语言作为一个长久的方向
//马上就要毕业了希望选择一款语言一直学下去然后就业毕竟一个男孩子要承担家中的一切
//希望各位给我推荐一下 麻烦你们了谢谢 你来 C++ 版,我就给你推荐 C++ 。
你来 Python 版,我就给你推荐 Python 。 本帖最后由 赚小钱 于 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++ 在同一水平,高级语言。
坏处,需要和编译器作斗争。
别的想不起来了,你说想做什么方向,我给你建议。
赚小钱 发表于 2020-6-4 21:44
虽然,提问的内容在注释里,我还是看到了。
请说出你的职业规划方向,脱离方向推荐语言,都是不负责任的 ...
谢谢 我主要是想好找工作吧 然后选择一门语言 赚小钱 发表于 2020-6-4 21:44
虽然,提问的内容在注释里,我还是看到了。
请说出你的职业规划方向,脱离方向推荐语言,都是不负责任的 ...
比如一下运维方向吧学起来不是太难的 比较数学和英语不好 谢谢你的推荐 woailaojiayu 发表于 2020-6-4 22:13
比如一下运维方向吧学起来不是太难的 比较数学和英语不好 谢谢你的推荐
linux平台就去学 shell,windows 平台就去学 powershell。
然后,运维也是有分类的
1. 硬件运维
定位硬件故障,采购服务器,虽然不用你修,但是你要能知道是哪里的问题。
比如,读写文件失败,要能定位是磁盘问题,还是 scsi card 的问题,网络中断的原因是什么,谁的责任
或许,应该熟读 深入理解计算机系统。更多的,可以去 oracle, ibm 的文档库找一下白皮书吧。
2. k8s 运维
了解 docker 的原理,能搭建 docker k8s 系统。会使用 docker kubectl 命令行。能定位容器出现的问题。
https://docs.docker.com/get-started/
https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/
3. 系统运维
了解如何监控系统,应用服务。必要时有警报。能实现弹性伸缩。现在基本也是 k8s 那一套了。还有 istio
https://istio.io/zh/docs/concepts/what-is-istio/
4. IT运维
上面几个主要服务于 开发人员。 IT 运维服务全公司所有 部门。
比如 管理办公套件(office, intellij, ps 的采购版权),门禁,供电,打印机等。
我能想到的这么多,上面几类,每个公司的分工可能不同,也可能不分工。
你可以去了解一下 devops,近几年比较火热的岗位。
PS: 网络,存储,组成原理相关的书籍,或许运维都应该了解一下吧。
woailaojiayu 发表于 2020-6-4 22:11
谢谢 我主要是想好找工作吧 然后选择一门语言
如果想快点找工作,那就是 java,python,golang 三选一。原因看上面。
但是,要注意,java,golang可以作为第一语言,一直使用几年。
而对于 python来说,你可以使用 python 去面试,去实习。但是,大概率会被要求学习使用另一门语言,国内的行情,基本也是从 java,golang 中选一个。
一直写 python 的岗位,不能说都没发展吧,很少。
页:
[1]