送命题,选 C++ 还是 Java?
The following article is from 程序员鱼皮 Author 鱼皮
如果一定要二选一,你会选哪个?
大家好,前段时间看见一个问题:想学编程,是选 C++ 还是 Java?
看到这里,我直接脱口而出:小孩子才做选择, 我全都要!
但毕竟时间有限,如果我们无法同时深入学习两门编程语言,必须二选一,你会选 C++ 还是 Java 呢?
这真是一道送命题啊,不过还好题目不是选 PHP 还是 Java。。。
下面我聊聊自己的看法。
我的看法
首先,明确一点,C++ 和 Java 都是非常优秀的主流编程语言,编程语言和技术没有绝对的优劣之分,只不过在不同的场景下,有更优的选择。而且,像很多大神说的一样,语言只是工具,编程思想才是核心。不过,选择好的工具也是至关重要的,好的抓手才能带来更大的赋能。
读者:你能不能说人话?
好吧我错了,拽词上头。
如果大家身在校园、且时间充裕,建议先学 C 语言或 C++ 打基础,这也是大部分计算机专业学生在高校内学到的第一门编程语言,相对底层,能帮助你接触到更多计算机的概念,比如系统、网络等,从而为学习其他的高级语言做铺垫。
但最终你是要找工作赚钱的,因此我可以斩钉截铁地说,选 Java!
我自己本科是计算机专业,如上所说,刚上大学时学的课程就是 C 语言和 C++,但是后来我果断转战 Java 了,坚定地朝着 Java 的方向深入学习,最终也拿到了腾讯等大厂的 offer。
很幸运的是,目前在腾讯做应用开发,使用的主后端语言正是 Java!没错,并不是说腾讯只招 C++!
那下面我会结合亲身经历,从以下几个方面来谈谈我选择 Java 的理由:
市场需求 语言特性 语言生态 应用场景 学习成本
市场需求
在国内,Java 软件工程师的需求量非常大,就业机会多,薪资高,前景非常好!
这和近年来中国在移动互联网这块发展迅猛有很大的关系。如今创业成本降低,越来越多的创业公司和中小型企业加入市场,因此对于网站、安卓 APP 等应用开发的需求变大。而 Java 作为国内企业开发的首选语言,自然更受欢迎,优秀的 Java 工程师的薪水也是非常诱人的!因此,我们要思考如何成为优质的 Java 开发者,而不是只会 CRUD(增删改查)的工具人。
Java 在 TIOBE 编程语言排行也是非常高的!
我曾经也想过做一名 C++ 程序员,但是后来查阅了网上的一些招聘数据,发现如今互联网公司在后台开发方面招的 Java 程序员明显更多一些。虽然大公司也会招很多 C++ 程序员,但整体来看,Java 会有更多的就业机会。这一点,相信大家按照平时看到的培训机构课程数和广告数就能看出来了。
那为什么 Java 的市场需求如此之大呢?请接着往下看。
语言特性
Java 作为一门高级程序设计语言,拥有非常多的优秀特性,比如面向对象、简单性、分布性、解释性、健壮性、可移植性、高性能、多线程、安全性、动态性。当然,C++ 作为较底层的编程语言,也有众多优秀的特性,比如高性能、灵活等,但是在很多方面,Java 和 C++ 存在一定区别,使得 Java 更适合作为开发企业项目的首选语言。
简单性:Java 语言在继承了众多 C++ 语言的优点的同时,移除了 C++ 中学习成本高、易出错的指针、多重继承等概念,并且通过接口机制减少了类间关系的复杂度,学习成本更低。此外,Java 的语法结构和 API 也相对更简单、更丰富,使用更方便、开发效率更高。
可移植性:跨平台可以说是 Java 最大的优点,Java 通过虚拟机执行,并不依赖固定的平台,使用 Java 开发的应用程序可以运行到任何操作系统,这对于企业中复杂多变的需求和架构场景尤为重要,一定程度上降低了开发和维护成本。
健壮性:Java 语言的设计使得用它来编写高可靠软件变得相当容易,很多银行的电子交易系统、知名公司的大型电商系统、秒杀系统都是使用 Java 语言开发的。
安全性:这里不是说使用 Java 就能比 C++ 更安全,而是因为 Java 自带的一些机制(比如垃圾回收)以及限制,使得很多由于程序设计不合理导致的问题能够被规避。
虽然 C++ 的性能通常是比 Java 高的,但在大多数企业业务开发中,这些性能的提升对应用来说是微不足道的,当然,底层和基础架构另当别论。
我在学习一段时间的 C++ 后,主动自学了 Java。刚开始学习 Java 时,就被它更简单的语法深深吸引了。不需要自己去管理内存在应用开发中实在太爽太方便了,能够大大提升开发效率!
语言生态
由于 Java 具有的优秀特性、易上手、学习成本低等原因,使得 Java 的发展非常迅速,尤其是 Spring 等知名开发框架的崛起,进一步降低了企业应用的开发成本。
在国内,越来越多开发者选择 Java,也因此涌现了很多 Java 技术交流社区,很多的问题都可以通过百度和社区询问来解决。而阿里巴巴作为国内超一流互联网公司,也选择了 Java 作为主要的后端领域编程语言,进一步推动了 Java 在国内的发展。
应用场景
Java 语言的优秀特性和繁荣生态,使得其非常适合企业级 Web 项目开发,在大数据分析处理、微服务、云计算、移动开发等领域也都处于领先地位。此外,Java 语言和 C++ 语言一样,也是可以应用到图像处理、桌面应用开发、分布式系统开发、嵌入式等近乎所有场景的。
学习成本
Java 的学习难度相对于 C++,以及其他的编程语言来说,算是很低的了。虽然 C++ 更底层、性能也很高,但是正因如此,涉及的系统层面的知识以及需要学习的概念也会更多,比如指针、内存管理、进程管理等,尤其是指针,对新手而言简直是噩梦!而学习 Java 时,你不需要自主管理内存,降低了很多出现 bug 的概率,即使没有对操作系统有深入的了解,也能写出比较健壮的程序。
当然,这并不意味着你不需要学习操作系统、指针等底层知识,但如果时间有限,当你能够熟练开发 Java 应用后,再来补课也为时未晚。
由于 Java 语言自身的优秀特性,再加上巨大的市场需求,使得学习 Java 的同学也非常多,促使越来越多的培训机构盯上了这块大蛋糕,像黑马、尚硅谷等等。因此,现在网上的 Java 教程非常非常多,关键还有超级多免费的优质学习资源。随便去 B 站一搜,就能找到一大堆。
我的 Java 就是利用网上的资源完全自学的。先跟着网上的视频教程或文档,看一节敲一节,上手是比较轻松的。然后通过看《Java 核心技术卷 I》打实基础,再学习 SSM、SpringBoot 等框架来开发企业级项目,学习过程中多跟着视频敲代码、发挥想象做一些自己想做的项目,帮助我顺利找到了实习。再学习 SpringCloud 微服务框架以及 Redis、Zookeeper 等中间件,学会设计技术架构,用技术解决实际问题。在找工作前,再深入学习多线程高并发编程以及 JVM 底层原理,最终帮助我拿到了大厂 offer。
大家主要学习哪门编程语言呢?对不同编程语言的学习有什么看法呢?欢迎评论区分享吧~
推荐阅读:
字节Java全能手册火了 ! Redis/Nginx/Dubbo/Spring全家桶/啥都有
运行 Java、Python、Go 等 25 种代码后,发现性能最强的竟然是它!