热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

你知道不同开发语言的薪酬差距吗?

对IT职业、学习软件开发的人员来说,开发语言真是五花八门、相当凌乱。作为过来人,在刚刚入行时也经历过语言选型的苦恼,花费很多时间学习的语言

对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语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习书籍:

编程学习视频:

 


推荐阅读
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • VB.net 进程通信中FindWindow、FindWindowEX、SendMessage函数的理解
    目录一、代码背景二、主要工具三、函数解析1、FindWindow:2、FindWindowEx:3、SendMessage: ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 如何在C#中配置组合框的背景颜色? ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有