c++和java的选择

Huan Lee Lv5

每个想要当程序员的人总是离不开几个经典问题:

  • 做开发还是算法?
  • 做前端还是后端?
  • 前端学什么框架?后端选什么语言?

作为一个软件工程的学生, 不管是前端后端, java亦或c++我都接触过. 这里想主要针对c++和java之间的选择简单谈谈.

提要

总所周知, 编程语言是具有不同用途的, 如面向数据统计, 面向科学计算, 面向商业应用, 面向底层服务等等. 不同的应用场景有不同的要求和侧重点, 因此不同场景所常用的编程语言也有所不同. 然而一旦聚焦到了”后端”这里, 大家就忽略了这点. 其实即使是后端, 也分了很多种, 如音视频后端, AI模型后端, 高并发应用后端, 游戏后端等等. 因此, c++和java因为语言和生态的特性, 主要的实际应用场景是有一定区别的, 在正式思考之前, 必须要摒弃掉编程语言的鄙视链观点, 无论是流行至上, 还是底层为王都是片面, 不正确的.

为什么公司选择java?

java凭借垃圾回收, 跨平台性以及完整的生态, 能够通过简洁的代码高效的实现业务逻辑. 这在前些年互联网行业快速扩张, 互相竞争的时代是相当重要的 – 提高开发效率, 减少软件bug, 提前上线占据市场, 多花的服务器费用在铺天盖地的广告推广费用面前不值一提. 至于高并发的场景, 通过云服务厂商的”弹性计算”增加硬件资源, 比软件层面慢慢优化要直观可靠且便宜的多. 后面如果想要优化, 通常借助java生态中成熟的工具也能简单地得到显著提升. 要想走到深度优化这一步, 通常只有极少数大厂的核心业务, 虽然优化的上限不如更加”底层”的c++, 但是也完全够用了. 更何况, 大部分大厂, 面对”服务器成本高”的问题, 解决方案不是减少服务器的使用, 而是自己下场来做服务器(所以才有了那么多的云服务商).

在众多成熟的语言中, java很好地均衡了性能和开发成本, 学习门槛较为友好, 生态成熟, 被市场广泛验证, 因此被众多公司采纳. 归根到底, 微小的性能差异用户并不一定有感知, 但是高昂的开发成本确是实实在在的money啊.

C++用在何处?

都说C++岗位少, 这是事实, 即使是在C++底蕴较为深厚的腾讯, 很多业务也换成了java甚至go. 但有一些领域还是需要C++的, 如音视频, 游戏服务器, 高性能服务器, 数据库等等. 这些领域, 不像java开发侧重点在于业务实现, C++更注重实现细节, 因此开发过程中离不开计算机基础, 如计算机网络和操作系统, 有时甚至需要涉及硬件细节.

竞争力的区别

java, 语言本身的门槛并不高, 但是与业务绑定, 因此非常看重平台. 不同的公司, 使用和接触的解决方案天差地别, 所能积累到的经验和履历也就有着巨大的差距.

C++更多的是在学习和应用计算机的底层技术, 能够随着项目不断增加对底层的熟悉程度和性能优化的功力, 颇有机械和设计行业越老越香的感觉. 当然这里的要求是使用C++实现高性能复杂任务, 而不是基于某些库, 实现不同的应用业务, 那就有些本末倒置了.

如何选择?

在选择时, 有几个考虑维度, 排名不分先后:

  1. 学习时间长短和计算机基础掌握情况. C++的学习门槛较高, 需要提前投入大量的时间, 如果求职在即, 或者读研期间校内任务较重, 可以优先考虑JAVA. 虽然C++和JAVA在求职时都会通过八股文考察计算机基础, 但是在实际开发中C++对计算机网络, 操作系统, 计算机体系结构等内容要求更高, 是真正需要熟悉掌握的, 否则可以说是寸步难行.
  2. 科班和学历. 不像java面向业务, 在大中小厂中都有大量工作岗位, C++除开一些特殊方向, 如驱动开发和嵌入式, 大部分优质岗位集中在大厂的研发部门以及各种研究所, 对学历和本科专业有要求.
  3. 个人兴趣和职业规划. 无论是java还是C++, 如今都卷的飞起, 因此还是回归初心, 关注一下自己的个人兴趣和职业规划吧…. 如果以后想做管理, 做产品, 甚至有创业想法的, java更合适; 如果是对计算机基础感兴趣, 数学和算法扎实, 或者想走游戏开发, 可以考虑学习C++做一辈子技术.

想要了解行情, 可以上微信小程序“天窗说”, “OfferShow”, 看一看到底市场上的大厂研发工程师的薪资是多少.

最后

编程语言并不是非黑即白的, 任何一个代码工作人员, 都不可能只掌握一门语言, 语言不过是工具罢了. 针对不同的场景, 选择不同的语言, 是一个软件工程师的基本常识. 而打下良好的计算机基础, 是一个软件工程师的基本素养. 外行才嚷嚷, 内行全都要.

  • Title: c++和java的选择
  • Author: Huan Lee
  • Created at : 2023-08-21 21:15:29
  • Updated at : 2024-02-26 04:53:15
  • Link: https://www.mirthfullee.com/2023/08/21/语言的选择/
  • License: This work is licensed under CC BY-NC-SA 4.0.