2020年需要学习的十大按需编程语言
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
编程语言大约有600多种。编程语言的需求和流行程度每年都在变化。另外,新的编程语言也具有吸引人的功能。
那么,应该学习哪种编程语言?学习新的编程语言始终需要我们投入大量的时间和智力。如果是一位经验丰富的开发人员,或者已经知道几种编程语言,则可以学习一种小众的现代语言。
但是,如果打算在2020年开始编程生涯,或者想学习第一或第二种编程语言,那么最好学习一种主流的和成熟的编程语言。在这里,我将基于以下条件列出各种编程语言:
在软件开发行业中已经是主流并已牢固确立。
世界排名第一的著名编程语言排名网站。
受欢迎程度正在增加或稳定,并且没有急剧下降。
他们拥有大量的库、框架和工具支持,并且拥有庞大的社区。
他们对工作市场有很高的薪水要求。
另外,我们总结了编程语言的历史背景、关键功能和主要用例。
1. Python
当Guido van Rossum在1990年代开发Python作为他的副项目时,没有人认为这有一天会是最受欢迎的编程语言。考虑到所有公认的排名和行业趋势,我将Python视为整体上排名第一的编程语言。
Python的USP是其语言设计。它是高效的、优雅的、简单的且功能强大的。
Python与C / C ++具有一流的集成,可以无缝地将CPU繁重的任务卸载到C / C ++。
Python具有非常活跃的社区支持。
而且,根据GitHub存储库的贡献,Python已超越Java,成为第二大最受欢迎的语言:
此外,StackOverflow开发人员调查还将Python排名为第二大最受欢迎的编程语言(第四大最受欢迎的技术):
另一个编程语言排名网站TIOBE在去年将Python排名第三,并获得了可观的增长:
根据GitHub Octoverse的说法,由于去年Python增长了50%,因此Python仍然有机会在今年的排名中进一步提高:
StackOverflow开发人员调查将Python列为第二受欢迎的编程语言:
大多数较旧的主流编程语言都具有稳定或下降的吸引力。不过,Python在这里是个例外,并且在最近五年中呈上升趋势,从Google趋势可以明显看出:
人才市场:
此外,StackOverflow开发人员调查还显示,与其他主流编程语言相比,Python开发人员的薪水较高,而经验却相对较低:
主要用例:
数据科学 数据分析 人工智能,深度学习 企业应用 Web开发
在第一次浏览器大战中,Netscape 已分配布伦丹·艾希(Brendan Eich) 为其浏览器开发一种新的编程语言。布伦丹·艾希(Brendan Eich)仅用了10天的时间就开发出了最初的原型,剩下的就是历史了。由于语言设计欠佳且缺乏功能,软件开发人员常常在早期嘲笑JavaScript。
JavaScript是浏览器编程中无可争议的王者。 感谢Node.js,JavaScript提供了事件驱动的编程,特别适合I / O繁重的任务。 在过去的几年中,JavaScript经历了大规模的现代化和大修,尤其是在2015年,2016年及以后。
资料来源:2019年StackOverflow开发人员调查
另一个编程语言流行网站PYPL将JavaScript排名为第三大流行编程语言:
资料来源:PYPL
编程语言流行网站TIOBE将JavaScript排名为第七大流行编程语言:
资料来源:TIOBE
根据StackOverflow开发人员调查,JavaScript也被列为最受欢迎的11种编程语言:
资料来源:2019年StackOverflow开发人员调查
JavaScript的趋势相对稳定,如Google趋势所示:
资料来源:Google趋势
资料来源:2019年StackOverflow开发人员调查
主要用例:
Web开发
后端开发
移动应用开发
无服务器计算
浏览器游戏开发
Java是迄今为止最具破坏性的编程语言之一。上世纪90年代,业务应用程序主要是使用C ++开发的,它非常复杂且依赖于平台。James Gosling和他在Sun的团队通过提供一种更简单的,面向对象的,解释性编程语言(也支持多线程编程),降低了开发业务应用程序的障碍。
Java提供了一种功能强大,功能丰富的多范例解释型编程语言,具有适度的学习曲线和较高的开发人员生产力。
Java严格向后兼容,这是业务应用程序的关键要求。
Java的运行时JVM是软件工程的杰作,也是业界最佳的虚拟机之一。
资料来源:TIOBE
在最近几年中,Java的流行度有所下降,但是根据TIOBE的说法,它仍然是最流行的编程语言,如下所示:
资料来源:TIOBE
根据GitHub存储库的贡献,Java在2014–2018年期间排名第一,去年仅滑落至第三位:
资料来源:Octoverse
另一个流行的编程语言排名网站PYPL将Java排名为第二大最受欢迎的编程语言:
资料来源:PYPL
StackOverflow开发人员调查还将Java排名很高,并且仅被JavaScript和Python编程语言所取代:
资料来源:2019年StackOverflow开发人员调查
根据Google的趋势,Java在过去五年中不断失去吸引力:
资料来源:Google趋势
资料来源:2019年StackOverflow开发人员调查
主要用例:
企业应用开发
Android App开发
大数据
Web开发
Anders Hejlsberg在将C#摆脱Java的阴影并赋予自己的身份方面做得非常出色。
在Microsoft的支持下,已经从事该行业20年,C#拥有大型的库和框架生态系统。
像Java一样,C#也与平台无关(由于CLR),并且可以在Windows,Linux和移动设备上运行。
资料来源:TIOBE
此外,Octoverse已将C#列为GitHub存储库贡献的第五种流行编程语言:
资料来源:Octoverse
StackOverflow开发人员调查已将C#列为第四受欢迎的语言(2019年第七受欢迎的技术):
资料来源:2019年StackOverflow开发人员调查
有趣的是,StackOverflow开发人员调查将C#列为最受欢迎的第十种编程语言(远高于Java):
资料来源:2019年StackOverflow开发人员调查
从Google的趋势可以明显看出,C#在过去的几年中并未被大肆宣传,如下所示:
资料来源:Google趋势
人才市场:
关于StackOverflow开发人员的调查,就全球平均薪资而言,C#高于Java(尽管有更多经验):
资料来源:2019年StackOverflow开发人员调查
服务器端编程
应用程式开发
Web开发
游戏开发
Windows平台软件
在1960年代和1970年代,CPU的每个周期和每个字节的内存都非常昂贵。贝尔实验室工程师Dennis Ritchie开发了一种过程通用编程语言,该语言在1969-1973年间直接编译为机器语言。C编程提供对内存的低级访问,并提供对底层硬件的完全控制。
由于C提供了对内存的低级访问并编译为Machine指令,因此它是最快,最强大的编程语言之一。
C完全控制了底层硬件。
C是“语言的编程语言”之一,即许多其他编程语言(如Ruby,PHP,Python)的编译器都用C编写。
资料来源:2019年StackOverflow开发人员调查
Google趋势在过去五年中也显示出C的相对稳定趋势。
资料来源:Google趋势
人才市场:
StackOverflow开发人员调查显示,与Java,Python等相比,C开发人员可以赚取平均工资,但需要更长的时间才能实现这一目标:
资料来源:2019年StackOverflow开发人员调查
主要用例:
系统编程
游戏开发
物联网和实时系统
机器学习,深度学习
嵌入式系统
Bjarne Stroustrup在1970年代曾与贝尔实验室的Dennis Ritchie(C的创建者)合作。受C影响很大,他首先创建了C ++作为C的扩展,并添加了面向对象的功能。随着时间的流逝,C ++已经发展成为一种多范例的通用编程语言。与C一样,C ++也提供低级内存访问,并直接编译为机器指令。
像Java一样,C ++也在不断进行现代化,以适应硬件或生态系统的变化。
C ++还可以完全控制基础硬件,并且可以在每个平台上运行并利用各种硬件,无论是GPU,TPU,容器,云,移动设备还是微控制器。
C ++速度极快,并在性能关键和资源受限的系统中大量使用。
资料来源:TIOBE
Octoverse在GitHub存储库贡献方面将C ++排名为第六位:
资料来源:Octoverse
此外,2019年StackOverflow开发人员调查将C ++列为第9最受欢迎的技术(第6最受欢迎的语言):
资料来源:2019年StackOverflow开发人员调查
尽管C ++面临着来自Rust或Go之类的现代编程语言的激烈竞争,但在过去五年中,它仍然引起了稳定的关注:
资料来源:的确
资料来源:2019年StackOverflow开发人员调查
系统编程
游戏开发
物联网和实时系统
机器学习,深度学习
嵌入式系统,分布式系统
与Python一样,PHP是90年代由单个开发人员作为辅助项目开发的另一种编程语言。软件工程师Rasmus Lerdorf最初将PHP创建为一组用C编写的通用网关接口二进制文件,以创建动态Web应用程序。后来,更多的功能被添加到PHP产品中,并且有机地演变为成熟的编程语言。
PHP是高效的服务器端Web开发编程语言之一。
由于PHP在过去35年中一直用于Web开发,因此市场上有许多成功且稳定的PHP框架。
许多大型公司都在使用PHP(Facebook,Wordpress),这为其提供了出色的工具支持。
资料来源:TIOBE
根据GitHub存储库的贡献,Octoverse将PHP排名为第四大最受欢迎的编程语言:
资料来源:Octoverse
根据2019年StackOverflow开发人员调查,PHP是第五种最受欢迎的编程语言(第八种最受欢迎的技术):
资料来源:2019年StackOverflow开发人员调查
尽管PHP仍然是使用最广泛的编程语言之一,但从Google趋势可以明显看出,它的趋势正在缓慢下降:
资料来源:Google趋势
人才市场:
资料来源:的确
StackOverflow开发人员调查显示,PHP是2019年收入最低的编程语言:
资料来源:2019年StackOverflow开发人员调查
主要用例:
服务器端Web应用程序开发
开发CMS系统
独立的Web应用程序开发。
Swift是也出现在我的列表中的仅有的两种编程语言之一:“ 现在可以学习的7大现代编程语言 ”。由克里斯·拉特纳(Chris Lattner)领导的一组苹果工程师致力于开发一种新的Swift编程语言,主要用于在Mac和iOS平台上替代Objective-C。
Swift的主要USP之一是其语言设计。凭借更简洁的语法以及开发人员人体工程学的功能,它为Apple生态系统中的Objective-C提供了更高产且更好的替代方案。
Swift还提供了现代程序语言的功能:空安全。此外,它还提供了语法糖来避免“ 厄运金字塔”。
作为一种编译语言,Swift正在像C ++一样迅速发展。它还在系统编程和其他领域中越来越受欢迎。
资料来源:TIOBE
另一个流行的编程语言排名网站PYPL将Swift排名为第9大最受欢迎的编程语言:
资料来源:PYPL
StackOverflow开发人员调查将Swift排名为第15名最受欢迎的技术(第12名最受欢迎的编程语言):
资料来源:2019年StackOverflow开发人员调查
Google的趋势还表明,Swift的普及程度急剧上升:
资料来源:Google趋势
人才市场:
资料来源:Indeed
StackOverflow开发人员调查还显示,与Objective-C相比,Swift开发人员可以以相对较少的经验获得高薪:
资料来源:2019年StackOverflow开发人员调查
主要用例:
iOS App开发
系统程式设计
客户端开发(通过WebAssembly)
深度学习
物联网
与Swift一样,Go只是该列表中最近十年的第二种编程语言。同样,像Swift一样,Go是由科技巨头创建的。
Go对并发具有语言级别的支持。它通过Goroutine(轻量级绿色线程)和Channel 提供基于CSP的消息传递并发。
Go的最大USP是其语言设计和简单性。它成功地结合了Python的简单性和生产力以及C的强大功能。
Go嵌入了Garbage Collector(尽管还不如JVM垃圾收集器成熟)。Go开发人员可以使用Java,Python的安全性来编写系统程序。
资料来源:TIOBE
2019年StackOverflow开发人员调查还将Go排名为第13名最受欢迎的技术(第10名最受欢迎的编程语言):
资料来源:2019年StackOverflow开发人员调查
根据Stackoverflow的调查,Go是最受欢迎的9种编程语言之一:
资料来源:2019年StackOverflow开发人员调查
根据GitHub Octoverse的说法,Go还是增长最快的10种语言之一:
资料来源:Octoverse
Go的日益普及也反映在Google的趋势中,这表明Go在过去五年中越来越受关注:
资料来源:Google趋势
人才市场:
资料来源:Indeed
2019年StackOverflow开发人员调查显示,Go是收入最高的编程语言之一:
资料来源:2019年StackOverflow开发人员调查
主要用例:
系统编程
无服务器计算
商业应用
云原生开发
物联网
Ruby成功地结合了编程语言的一些最佳功能:动态的,面向对象的,功能性的,垃圾收集的和简洁的。
尽管Ruby本身并不是破坏性的,但其Web开发框架Ruby on Rails可能是最具破坏性和影响力的服务器端Web开发框架。
Ruby被Twitter,GitHub,Airbnb等一些最大的软件项目所使用,并具有出色的工具和框架支持。
资料来源:TIOBE
在GitHub存储库贡献中,Octoverse还将Ruby评为2019年最受欢迎的编程语言排名第10位:
资料来源:Octoverse
2019年StackOverflow开发人员调查将Ruby列为第9最受欢迎的编程语言(第12最受欢迎的技术):
资料来源:2019年StackOverflow开发人员调查
近年来,Ruby并不是一门大肆宣传的语言,但根据Google的发展趋势,它一直保持着吸引力:
资料来源:Google趋势
人才市场:
资料来源:Indeed
2019年StackOverflow开发人员调查还显示,Ruby开发人员可以以相对较低的经验获得高薪:
资料来源:2019年StackOverflow开发人员调查
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~