对IT职业、学习软件开发的人员来说,开发语言真是五花八门、相当凌乱。作为过来人,在刚刚入行时也经历过语言选型的苦恼,花费很多时间学习的语言找不到合适的工作岗位、或者试图用一种语言去解决所有问题,虽说任何一种语言理论上都可以解决某个问题,但每种语言的特性和用法不一样,解决问题的效率也不一样,薪水也不一样。
语言就是开发者的工具利器,选对了语言,解决问题事半功倍,而且不同行业不同语言的薪酬差异也很大。希望本文对入门者的开发语言选型以及打算转行其它语言的同行有所帮助,也欢迎同行关注我,与我交流。
各种开发语言
谈到开发语言的前景,业内一般都会参考TIOBE指数,TIOBE指数是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据,此类排行只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,因为工具没有好坏之分,适合的就是最好的。
TIOBE指数每月更新一次,对世界范围内开发语言的走势仍具有重要参考意义,该指数可以用来检阅开发者的编程技能是否符合趋势,以及什么编程语言是应该及时掌握的,从而做出是否有必要作出转行的决定。
上图是TIOBE 2020年的开发语言热门度排行榜,我们只针对前十以及前二十中的主要开发语言进行介绍,前二十里面有些事国内不常用的就不在此介绍了。
C语言
如果你是计算机相关专业,肯定学习过C语言;如果你不是计算机相关专业,打算从事软件开发,也建议你将C语言作为启蒙语言,因为编程的许多关键概念,比如结构体、数组、指针、内存管理等等都是参考C语言标准。
C语言是目前流行语言中最接近硬件的语言,语言特性越接近硬件,它的执行效率就越高,通常开发效率会越低(费劲)。很多硬件的固件、嵌入式程序以及对程序执行效率有特殊要求的,都需要使用C语言开发,这也是C语言为什么能够流行40多年经久不衰,不可替代的原因。如果你打算从事硬件开发或者挑战高性能开发,C语言是最佳选择。
Java
Java是目前最大众化的开发语言,已经流行了将近20年。在Java流行的前10年,它和C#.net统治着各种应用程序的开发;近10年,Java在服务端和桌面应用开发领域应该是在逐渐减少(因为出了很多后起之秀),但由于Android移动应用的普及,Android移动应用开发只能使用Java,所以Java依然保持流行。
Java语言的通用性很强,也就是说Java开发者的横向跨行业发展空间和纵深垂直发展空间都是目前最大的,工作机会也是目前(2020年)最多的。注意,是我说的是只是当前的现状,我的判断是Java在服务端开发的方面会越来越少,Java之所以还能保持流行,很大程度上取决于Android移动应用开发只能使用Java,别无选择,以及大数据Hadoop生态是用的Java语言。如果你打算从事服务端开发,Java已经不是最好的选择,因为学习成本相对较高;如果你打算从事Android移动应用开发也只能选择学习Java语言。
Python
Python是目前公认的最容易上手的开发语言,容易到什么程度?现在儿童编程教学领域,用的就是Python。因为Python上手容易,这也促使基于Python的现成轮子(开源库)很多,很多问题都有现成的库和代码,直接就能使用。任何事物有两面性,Python容易上手,但他的单线程解释语言的特性,决定了他的执行性能不高,而且也不符合现在CPU多核多线程的发展趋势。
很多性能要求不高的应用服务端,都可以用Python快速实现,Python这种胶水语言的通用性也很强,但是很难将性能做到极致,所以Python开发者也很难挑战业界高薪。通常,Python除了用于开发一般应用(实现功能就行,别的要求不高)之外,自动化运维、自动化测试、人工智能、大数据岗位会将Python作为工具脚本语言,这样Python与运维、测试、人工智能、大数据等相结合之后,也是可以胜任高薪的,注意,是需要与另一种技能组合使用才能挑战高薪,单纯的Python开发者薪酬普遍偏低(学习投入与收益成正比)。
C++
C++和C语言属于宗亲,都比较接近硬件,只是C语言是面向过程的开发语言,C++与C语言相比更具备面向对象特性,因此C++的开发效率要比C语言高,但C++与C语言的性能相差无几,所以在高性能开发领域,很多开发者都使用C++而不使用C语言,硬件开发领域依然使用C语言(这是无可替代的)。
如果你想挑战高薪,从事高性能开发,C和C++是不错的选择。
C#
C#与Java曾经流行于同一个时代,甚至超越Java的流行,Java有Android移动应用开发继续保持流行,但C#的流行很快就衰退了。现在除了构建微软家族各种桌面应用之外,很少开发者会选择C#,现在C#依然能够排到前五,是因为Windows桌面应用(如办公软件、游戏软件)还有很大需求,毕竟大多数人都还在用微软的Windows操作系统。但C#的流行度,就目前来看,很难持续。
当前,新手很少有人会选择C#,除非工作所属行业或者由于历史遗留问题,必须使用C#开发(国内是这样,国外可能不太一样)。
VisualBasic .Net
在TIOBE上VisualBasic .Net竟然能排到第六的位置,你是不是觉得很奇怪,我也觉得很奇怪。但仔细想想,也有一定的合理性。在2000年前后的5年(大概10年期间),最流行的开发工具,当属微软的Visual Studio莫属了,那时的大多数开发者都是使用VisualBasic .Net,后来有一部分转向了C#,因为C#同属微软体系,但C#的代码比VisualBasic .Net更简洁。也就是说15年前最流行的VisualBasic .Net现在排到第六有其合理性,毕竟瘦死的骆驼比马大。
当前,新手连比VisualBasic更简洁的C#都不会选择,更别说选择VisualBasic .Net了。除非工作所属行业或者由于历史遗留问题,必须使用VisualBasic .Net开发(国内是这样,欧美使用VisualBasic比国内要更多)。
Javascript
Javascript在TIOBE上才排到第七,也是我很不理解的,因为在我心目中Javascript是最流行最通用的开发语言,几乎每一个Web页面都需要用到Javascript。Javascript是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由Javascript实现的。简单地说,Javascript是一种运行在浏览器中的解释性的编程语言。在当今Web世界里,只有Javascript能跨平台、跨浏览器驱动网页,与用户交互,你没有其它选择。而且随着Nodejs生态的完善,用Javascript也可以实现服务端和桌面应用程序。
Javascript跟Python差不多容易上手,如果你是新手入门,或是打算从事Web前端开发,或者打算从事全栈开发(前端后端都能拿下),Javascript是最省心的选择,前端和后端技术栈一致,都是Javascript。所有的互联网产品和互联网企业,没有不需要Javascript开发的。
PHP
PHP是公认的做网站开发效率最快的编程语言。PHP原意为Personal Home Page的缩写,后来更名为 "PHP: Hypertext Preprocessor超文本预处理器",它就是为做网站而生的开发语言。现在很多网站、开源建站系统都是用PHP开发的。PHP除了用于做网站,也很少用于别的应用,如果你打算从事网站开发、建站工具开发,PHP是不错的选择。PHP开发者的薪资水平和其它建站语言开发者相比,通常偏低。
SQL
SQL结构化查询语言是一种能被数据库理解的语言,是每一个开发者都必须要会的开发语言,因为几乎没有软件不需要使用数据库。所以不管你是哪种语言的开发者,都必须熟悉SQL,先是学习通用的SQL语法,然后再结合某种数据库学习基于某种数据库的SQL语法,比如MySQL,各种数据库的SQL略有差异。
Go语言
Go语言是谷歌公司近些年推出的一款开发语言,属于后起之秀,对于web服务器开发、网络开发以及命令行程序开发来说,它是又一个非常不错的选择。Go语言的语法风格和C/C++很接近,性能也不比C/c++差多少,是一种真正兼顾性能和开发效率的语言,这也是Go语言迅猛流行的根本原因。如果你打算从事互联网行业,挑战高性能开发和高薪酬,Go语言是不错的选择。
关于开发语言选择的总结性建议
对于初学编程的人来说,选择Python或Javascript可以提高入门的学习效率;对于想从事Android移动应用开发的人来说,只能选择Java;对于想从事苹果iOS移动应用开发的人来说,不再选择Objective-c而是选择Swift;对于想从事Web前端开发或者全栈开发的人来说,Javascript是很好的选择(还需熟练HTML和CSS);对于web后端开发来说,PHP、Java、Python和Go语言都可以,建议选择Go语言(不仅高效而且高薪);对于硬件开发,首选C语言;对于高性能的算法实现,首选C++;不管从事哪种语言开发,都需要熟悉SQL语言。
至于开发者的薪酬,除了看从事哪种开发语言和所属行业之外,关键看你处在哪个段位。国内一线城市开发者的薪酬,初级(1-2年)在10K左右,中级(3-5年)在20K左右,中高级(5年以上)在30k左右,更高级开发者的年薪百万以上也很常见。
那么是不是开发者的薪酬与语言类别就没有关系了呢,当然不是,每个行业的薪酬水平是不一样的,而不同行业通常使用的语言也不一样,举个例子,用Python支撑一个生产型非互联网企业的门户网站(单机秒并发不超过100),和用Go语言支撑一个千万级秒并发用户的互联网应用相比(单机秒并发超过2000),当然是后者Go语言开发者的含金量更高(高几倍甚至几十倍),而一个千万级秒并发用户的互联网应用通常不会使用Python开发。
另外如果你想更好的提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~
C语言C++编程学习交流圈子,【点击进入】微信公众号:C语言编程学习基地
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
编程学习书籍:
编程学习视频: