未来三年,众多编程语言你选择谁?我推荐Java
在计算机技术日益普及的今天,不学一两门编程语言,出门都不好意思跟人打招呼(大误)。不论你是从事计算机专业的老鸟,还是慕名而来的萌新,学习一门新的编程语言总是十分有益的。
当然,并没有哪个编程语言就一定是“专业开发人员必学语言”,你该选什么语言很大程度上取决于你现有的知识水平,以及你未来的职业发展规划。
别担心,今天就带你好好捋一捋当下的形势,帮你选到最适合的编程语言。下面推荐三种编程语言(一种给新手,一种给有经验的程序员,还有一种给专家级程序员),以及几种你可能会喜欢的备选方案,让你自己挑一挑。
首先,让我们了解一下近年来几种主要编程语言的发展趋势。
下面这张表显示了几种主要编程语言在2017~2018年间就业情况的变化:
(数据来源:Indeed.com,可视化制图:CodingDojo)
尽管Java已经有20多年的历史,它依旧是就业需求最高的编程语言——虽然自2017年来,它的需求量有所下跌。长期以来,Java一直是最受企业追捧的计算机语言,这可能是因为它强大的可移植性,可以在各种硬件和系统上运行。举个栗子,所有的安卓应用程序都基于Java,而大部分《财富》500强企业都用Java进行后端开发。
Python因其在web开发等方面的应用,近年来已经快速赶超了许多其他语言。如今,Python在科学计算、数据挖掘和机器学习等热门领域都有着广泛的应用,这也解释了它快速增长的原因。
JavaScript排行第三。作为大多数开发人员和几乎所有具有动态逻辑的网站不可或缺的组成部分,JavaScript依然非常热门。同时,类似React和AngularJS这样的JavaScript前端框架也被广泛用在物联网(IoT)和移动设备集成领域,所以我们可以预见,在不远的将来,JavaScript还会榜上有名。
C++和C#这两种语言比较类似,它们都是游戏开发、操作系统/应用软件方面的强力选手(C#主要用于微软的.NET平台)。它们在2018年有所下降,但仍然很强劲。
PHP越来越受欢迎,它能为网页添加普通HTML或CSS无法处理的Web功能,还能方便地操作MySQL数据库。许多从业人员都开玩笑说“PHP是最好的语言”。
最后,Perl还依旧宝刀未老,因为它能作为连接不同软件、模块的“胶水语言”而受到许多系统和网络管理员的欢迎。
需要注意的一点是,上面这些最受欢迎的语言都是基础编程语言。学好一门基础语言,对于初学者来说是非常重要的,但有经验的程序员可能会需要学习一些更加“高级”的特定类型的编程语言。
基础语言vs专业语言
上面这些最热门的计算机编程语言常被人称为基础编程语言。它们诞生于计算机技术刚开始普及的时候,许多如今被视为基础设施的计算机应用程序和网络架构,都是由这些语言构成的。
然而,随着科技的发展和程序员社区的兴起,许多针对性强,专业程度高的语言逐渐活跃在各种新技术领域中。比如用于AI和机器学习领域的Haskell,用于代替Java的Scala,函数式语言ML,用于人工智能和网页编程的Scheme等数百种“专业语言”。
这些专业语言的学习曲线和先修技能对新手并不太友好。然而,如果你打算成为某个特定领域的专家,它们就将是你的无价之宝。比如在AI与机器学习方面,懂得Haskell将会给你带来相当大的优势。
当你掌握了一种或多种基础语言之后,你应该就有余力能学习一些更新、更专业的编程语言。只要记住,学习一种新的语言几乎总是会给你带来一些新的好处,即使你用不上它,在学习的过程中,它也能帮助你从不同的角度来思考问题,对你的个人能力也是一种提高。
看完了上面这两点分析,下面就给大家推荐三种不同阶段程序员“必学必会”的语言(初学者,有点经验,高级专家),以及几种额外的备选语言。
JavaScript是初学者首次学习编程语言的不错选择。就像上面提到过的,JavaScript几乎无处不在,你可以用它来开发各种不同的应用程序。你每天使用的许多网站都依赖JavaScript,包括Gmail、Facebook等许多网站在内。
JS可以用在Web应用程序的前端开发(使用AngularJS,Ember.js和React等框架)和后端开发上(使用Node.js框架)。学习这些框架可能比单独学习JavaScript本身花费更多时间,但有助于提高你的就业能力(和工资水平)。
JavaScript有一个可能是最方便的特性,那就是它实际上已经内置在你的电脑浏览器中了,因此你无需安装任何内容即可开始试着编程,这也使得它非常容易上手。
你可能会发现,它的基础知识学起来很简单,但千万别小看它,因为它有很多高级的概念,需要你花上很多时间才能慢慢掌握。
如果你是初学者,希望以后成为一名专业的程序员,那么学习JavaScript会是个好主意。不过话又说回来,任何一种基础语言也都会是一个不错的选择。在理想情况下,在整个职业生涯中,你肯定会学习多种不同的基础语言。
一个不错的选择是Python语言。它相对容易,也更有趣,只有不多的几条严格语法规则。事实上,它读起来就像普通的英语,所以即使是纯粹的初学者也能理解代码。Python被许多大公司采用,构建类似Instagram、YouTube和Spotify的网站,因此它也有可能是你拿到顶级IT企业职位的敲门砖。
像Python一样,Ruby也很容易让初学者上手。在使用它的时候,你不必记住许多命令或语法规则。如今许多初创公司越来越多地使用Ruby的一个全栈框架——RubyonRails,它也被用于构建了Airbnb、Groupon等网站。
当你有了一定的编程经验之后,你可以花点时间尝试学习C语言,(包括C#或者C++)。
和JavaScript比起来,C的难度明显更大,但它很值得一学,因为许多其他的编程语言实际上是用C来实现的,比如Python最常用的解释器就是Cpython。这是因为C语言是一种更加“机器层面”的语言。所以,学习C语言的过程,你将会理解更多计算机是如何运行的知识,让你今后学习其他语言的时候更容易理解。
在成为专业程序员之前,先学习用C语言编程,就像在成为医生之前,得先理解基本解剖学一样。如果你想成为一名真正的专家,你就必须了解计算机系统和软件是如何协同工作的。学习C语言是一种富有启发性的体验,它将带来许多有益的附加作用,让你懂得如何编写出更有效率的代码。
C#被广泛用于.NET平台上的企业级应用开发,它同时也是Unity3D的主要语言,而Unity3D非常流行的独立游戏、VR游戏开发引擎。另一方面,C++通常被用于性能密集型桌面应用程序(包括游戏)中。它也被微软,甲骨文和Adobe等公司用于构建许多大型软件系统。
Java是另一个不错的选择,因为它能很容易地跨平台编程,跨平台运行,是非常不错的通用编程语言(而且,它也还是目前最热门的编程语言之一)。
Java很常用于编写app,所以如果你希望开发移动设备app,那你一定要学一学Java。
如果你已经掌握了Javascript、C#、C++、Java和Python等基础编程语言,那么你已经准备好迎接新的挑战了。从某种意义上说,这个挑战应该是Rust。
根据StackOverflow的调查结果显示,截至2018年,Rust已经连续三年被程序员评为最受欢迎的编程语言。这是一种相对较新的语言,由Mozilla于2010年创建,并且不断改进。
Rust在性能和用途方面都是一种与C相当的编译型语言。但与C不同,Rust是内存安全的:用Rust编写的代码中不会有空指针、缓冲区溢出或其他类型的内存错误。在Rust中搞出这种错误是不可能的,因为任何错误都会在在编译期间被捕获——在任何代码被真正运行之前。
这个特性使Rust很难被初学者所掌握,但有经验的程序员能体会到这种内在的性能改进带来的价值。自问世以来,它的用户数量一直在稳步增长。而可以预见的是,在接下来的几年中Rust相关职位将会有很大的需求。根据StackOverflow的数据,它是2017年薪酬第二高的编程技术岗位,在2018年的排名也跻身前六。
如果你已经是一名老练的Java程序员,或许你应该把Scala(名字来源于ScalableLanguage,可扩展语言的缩写)列入你该学习的下一个语言中。
Scala是程序员试图改进Java的许多尝试之一,它基本上可以直接替代Java——事实上,它被编译之后就是在Java虚拟机上运行。这是一门需要花费精力学习的复杂语言,但这些付出最终会是值得的:Scala在StackOverflow的2017年和2018年调查中,都被评为最高薪的技术岗位。
与Rust一样,Scala在过去5年中一直在稳步增长。包括LinkedIn和Twitter在内的许多大公司已在代码库中使用Scala。
总而言之,你接下来要学习的编程语言,应该和你当前的技能水平、未来的职业兴趣或志向相吻合。
初学者应该从相对易于学习的语言,比如JavaScript、Python或Ruby开始,先试试水,开始编写自己的第一个应用程序。
拥有更多经验的程序员,应当明智地掌握一门基础、通用的编程语言语言,如C或Java,以更好地理解计算机系统和软件的交互方式。这也将教你如何编写出更有效率的代码。
最后,专家级程序员可能希望学习Rust或Scala等语言,以对现有的基础语言(如C和Java)做出改进。这两种高级语言已经在经验丰富的程序员中非常受欢迎,并且随着时间的推移,它们的重要性可能会继续增长,因为在商业竞争中,企业总是会需要构建更新、更高效的应用程序。
读者福利:
分享一下精心整理的Java架构进阶学习资料(文档+笔记+视频+面试必备),包括了Dubbo、Redis、Netty、zookeeper、Springcloud、微服务、分布式、高并发等架构资料,还有完整的Java架构学习进阶导图和Java相关的面试资料,希望能够给有需要的朋友提供一点帮助。
私信我“Java”即可获取。
主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/15438.html