查看原文
其他

Top编程语言的15年沉浮:C#默Java泪,Python终上位!

Python猫 2021-03-15

👆 Python猫” ,一个值得加星标的公众号

《法国中尉的女人》剧照

花下猫语:9 月份的 PYPL 榜单已发布,Python 居于首位。PYPL 指的是“编程语言流行指数”,依据 Google 相关的搜索频率进行排名。


这个榜单每月发布一次,但是若只关注每月的数据,意义不大,因为有各种因素会导致微妙的差异。如果从历史的角度来分析,这份榜单就很有意思了。今天分享的文章整理了 15 年的 PYPL 数据,一起看看 Top 编程语言这些年来浮浮沉沉的故事吧。


作者:宁静

来源:大数据文摘(ID:BigDataDigest)


哪种编程语言最火爆?


在不同的时代,这个问题也有着不同的答案,而一部编程语言的使用人数变迁史,实际上也是一部计算机世界的成长编年史。


一位名叫PYPL的油管up主很尽心地统计了从2004年到2019年,每个月使用人数最多的15种编程语言,并将这15年来的变化,制作成了一个4分钟的视频。

在这部TOP15的编程语言榜单中,我们可以看到各种不同编程语言的流行度起伏。除了今天主流的Python、Java、Javascript、C++、R外,在这个榜单曾拥有姓名的还包括C#、php、objective-C、Matlab、 TypeScript、Go这些不那么熟悉的名字。


而细细推敲每一次的榜单变动,在感叹各种编程语言更新迭代之快的同时,也看到了一幅完整的计算机和编程世界变迁史:比如2004年Javascript语言的一度火爆,得益于网游产业的兴起;而11年左右Objective-C的流行归功于iPhone的成功,编写iPhone应用程序的主要编程语言是Objective-C。


先来看看这个视频👇


在4分钟的视频中,15种编程语言在过去15年来的起伏变化一览无余,下面,我们一起沿着时间线,回顾各种语言的变化史。



01 故事开始:位居榜首的四大金刚


故事开始于2004年8月,这一年,Java用户量最多,其次是php,C/C++,Javascript。Python在这时候还是个比较小众的编程语言,用户量并不多,排在第九位。



位于榜首的这四大金刚是怎样的语言,它们各自又有什么样的特点呢?先来科普一下:


Java最初由Sun Microsystems开发和支持,而在2010年1月Sun Microsystems由Oracle收购,因此这之后开发和支持工作由Oracle完成,Java创建的宗旨是WORA,“Write Once Run Anywhere(代码运行无边界)”,Java的平台独立性是其在企业界取得成功的支柱之一。


PHP最初由Rasmus Lerdorf于1995年创建,PHP广泛用于构建动态网页和服务器端开发。


Dennis MacAlistair美国计算机科学家Ritchie于1967年至1973年间在AT&T贝尔实验室创建了C编程语言,C非常流行并广泛用于系统编程,它比Java的历史更久远,但它仍在编程语言中占据一席之地。C++被开发为C的下一代语言。它具有面向对象的编程功能,与更结构化的C语言相比,这一功能是十分令人惊叹的,因为它非常接近本机系统和而且具有面向对象特性,在金融的高频交易领域被广泛使用。


Javascript是一种广泛运用于客户端的解释性脚本语言,由Brendan Eich设计,并由Netscape Communications Corporation开发,在浏览器中可解释运行,跨平台性能良好,几乎每个主要网站都在使用这个语言。


在视频开始,这四种语言在2004年初居榜首,实力地位不可撼动,而后随着各大编程语言的迅速崛起,这种形式逐渐发生着变化。



02 2004.09-2004.10:网游市场下的Javascript vs VB


2004年9月到10月,Javascript一直在与Visual Basic(简称VB)语言争高下,2004年网游市场风起云涌,包括javascript在内的很多编程语言开始兴起,使得JS一度超越Visual Basic位居第四。



2004年,《三国策Ⅲ》于9月25日由皓宇互动开发,《武林外史》是2004年11月28日由韩国CR-SPACE公司耗时2年时间开发完成的全3D纯武侠网络游戏,除此外还有《传奇》等经典网游,这些游戏产业的兴起,使得游戏开发中需要使用到的Javascript语言一度火爆,用户人数增长直逼Visual Basic,有一段时间甚至超越Visual Basic。


▲三国策游戏主页


▲武林外史游戏截图


当然Visual Basic(简称VB)也不甘示弱,Visual Basic 是Microsoft公司开发的一种通用的基于对象的程序设计语言,其在发展过程中的第三方控件和GUI极大方便了数据访问和程序开发。在引入.NET Framework 后,2004年,微软开放了Visual Studio 2005的测试版本(代号Whidbey),包含了.NET Framework2.0的测试版本有关,使用Visual Basic的用户上升,再一次超越Javascript,出现了上图中两者“争执”的局面。




03 2004.12-2005.01:争执不休的Python和Delphi



Delphi是Windows下的开发平台,其最初原型是DOS时代盛行一时的“BorlandTurbo Pascal”。


“真正的程序员用C++,聪明的程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点,和VC相比,Delphi更简单、更易于掌握,而且在功能上丝毫不逊色;和VB相比,Delphi则功能更强大、更实用,可以说Delphi同时兼备了VC功能强大和VB简单易学的特点。


而我们现今广泛使用的Python,这一解释型脚本语言,于1991年发行,Python 2于2000年10月16日发布,稳定版本是Python 2.7,自从2004年以后,Python的使用率呈线性增长。


这一时间区间,Python和Delphi“争执不下”主要是由于Delphi9.0版本于2004年末发布,在语法方面:加入了inline及for in loop等功能;IDE方面:把Borland Delphi. Net、Borland Delphi Win32、Borland C#、Enterprise Core Objects等环境和功能集成成一个开发工具,因此可以在Win32和.NET开发环境中切换或同时进行,这些功能的优化使得Delphi的用户数动态变化,与Python展开激烈“争执”。



04 C#的两次“跃进”


2006年年初,C#超越Perl,位居第6:


Perl是一种高级的、通用的、解释的、动态的编程语言,Perl由LarryWall在20世纪80年代中期设计和开发,因其出色的文本处理能力而声名鹊起,被广泛用于CGI、数据库应用程序、网络编程和图形编程。


2006年5月,C#成功超越Visual Basic位居第5。



C#为什么能在2006年来两次绝地反杀呢?它是一种怎样的语言?


C#是微软公司在2000年6月发布的一种新的编程语言,是第一个面向组件的编程语言,它借鉴了Delphi的一个特点,与COM(组件对象模型)直接集成,并且新增了许多功能及语法,而且它是微软公司.NET windows网络框架的主角。


那么为什么在一年内,它能超越其他两种语言?2006年又有哪些不平凡呢?


将时间定位到2006年1月1日到2006年12月31日,在必应中搜索C#语言,搜索得到的结果如下:



站在后人的角度看当时人们对于C#语言的理解还挺有意思的,2006年人们对于C#语言还是充满了疑问,产生了C#与C语言的区别,C#.NET的前景如何诸如此类的问题,同样的在百度搜索引擎中输入C#语言得到的结果如下:



2006年web2.0的兴起,同年,网络游戏免费模式继续得到了大规模推广,像盛大公司的《传奇II》和《梦幻国度》,C#和与Unity结合的敏捷游戏开发,使得那段时间的C#开发一度火热,抛却时势使然,还有C#搭建桌面应用的便捷性以及C#3.0的发布。


在2005年9 月份的PDC大会(Professional Developers Conference微软专业开发人员大会)在大会上,发行了C#3.0(研发代号“Orcas”——魔鬼)的技术预览版。


C# 3.0则是率先实现了LINQ的语言,可以用类似于SQL语句的语法从一个数据源中轻松地得到满足一定条件的对象集合。例如要查找一个字符串数组names中所有长度大于5的字符串,就可以写:var longname = from n in names wheren.Length > 5 select n;


这些原因加起来,使得C#在2006年成为程序员的“宠儿”。



05 2007.04-2007.05:Javascript 与C/C++持续叫板


2007年4月到2007年五月,Javascript一直在与C/C++叫板,不过最后还是Javascript稳居第三,Javascript做为门户网站的必备语言,2007年5月开始,千龙网、新浪网、搜狐网、网易网、TOM网、中华网等11家网站举办“网上大讲堂”活动,旨在通过网上授课的形式与网民互动,传播科学文化知识,C/C++短期内的火爆还是没有撼动Javascript在网站开发方面的地位。




06 2008年C#和Python的攀升


08年除了C++和Javascript相持不下外,也同样见证了Python的两次逆袭和C#第一次超越C/C++。


2008年年初,Python超越Perl:


2008年10月,Python超越Visual Basic,仅次于C/C++:


同年7月,C#超越C/C++位居第四:


2008年到底发生了什么?使得这两种语言能够脱颖而出呢?


08年,汶川大地震、北京奥运会等重大事件促进网络媒体提升主流媒体价值,同时中国网民跃居世界第一,虽然受到金融危机的影响,互联网的浪潮已经是大势所趋。


Python的Web开发,只需要下载引入一些成熟的包,这些便利性是Python的优势所在,同时3.0版本在后续的发布,也吸引了一批开发者,使得Python在一年内两次攀升。


至于C#的攀升,不难理解,游戏市场和桌面应用的持续发酵,腾讯于2008年新推出的《穿越火线》等一系列游戏在催生着C#的发展。



07 Objective-C的开挂历程


2011年11月到2012年1月,Objective-C一路开挂,超越RubyMatlab居第8位。



Matlab是商业级别的数学建模软件,这个语言我们耳熟能详,那Objective-C和Ruby又是什么语言呢?


Ruby最初是由日本的Yukihiro “Matz” Matsumoto在20世纪90年代中期设计和开发的,主要用于Web应用程序开发,被Twitter、Hulu和Groupon等各大网站所使用。


Objective-C看到这个语言的标识,就知道和苹果有点关系了,它是扩充C的面向对象编程语言,主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统。


2011年10月4日,苹果发布了第五代iPhone,即iPhone 4S,这款手机采用了iOS 5系统,并与Twitter进行了整合。



Objective-C的流行归功于iPhone的成功,编写iPhone应用程序的主要编程语言是Objective-C。



08 Python的大反击!这匹黑马如何逆袭?


2013年5月,Python第一次超越C/C++成为排名第四的语言。


到了2013年12月的时候,Python已经超越C#,跃居第三。


2013年再一次见证了Python这匹“黑马”的实力,时代造就英雄,这背后是时代使然,也是必然。


12年到14年,“云计算”这个词出现在大批创业公司和巨头的耳中,大家都在做IAAS,很多著名的云计算开源平台都是基于Python开发的(如OpenStack),催生出不少的Python岗位,Python的开发者和用户普遍增多。


OpenStack链接:
https://www.openstack.org/



2014年到2015年“大众创业,万众创新”的口号响彻祖国的大江南北,什么语言最适合快速搭建原型呢?Python再一次展露头角,在2015年末成功超越php成为用户量最多的第二大语言,紧逼之前一直稳居第一的Java,在这以后,Python用户量逐渐增长。



09 小插曲:被R超越的Objective-C

2017年9月到10月间Objective-C和R语言一直争执不下。


Objective-C之前有了解,那R语言又是怎样的语言呢?


R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具,R是受S语言和Scheme语言影响发展而来,其最主要的特点是免费、开源、各种各样的模块十分齐全,在R语言中,提供了大量的第三方功能包,其内容涵盖了从统计计算到机器学习、从金融分析到生物信息、从社会网络分析到自然语言处理、从各种数据库各种语言接口到高性能计算模型,可以说功能十分齐全。


Python人数在快速增长的同时,为什么有R语言超越Objective-C这一局面呢?


2016年3月,阿尔法围棋与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜,这足以使人们意识到“人工智能”不再是概念,解决一些此领域的问题,难免需要对数据做统计,运用机器学习的算法解决问题,R语言做为优秀开源的统计工具,也是在这一时期内用户量波动攀升的原因。同样Python中大量的科学计算包,也使得用户量一度紧逼Java,Python有可能超越Java吗?别急,时间会告诉我们答案。



10 Python终得桂冠


2018年2月到5月,使用Python语言的人数不断增多,大有赶上Java的趋势。


到了2018年6月,Python已经超越Java成为用户量最多的语言。



2018年7月到8月,Python居榜首后,Java用户量不断减少,而其用户量的不断活跃增多,这其中可能是一部分Java工程师投入了Python的怀抱。



一份2017年来自Python Developers Survey的数据显示如下图:


▲来源:Python Developers Survey


Python开发者占比比较多的依次是美国、印度、中国(2017年的调查数据,仅供参考)


而到了2018年8月的时候已经成为用户量最多的编程语言:


Java的跨平台性和稳定性,一直让其成为编程界的第一把交椅,实力地位不可撼动、但其冗长的语法让很多开发者诟病,这也是Java开发者减少的原因。


Python在很多领域都能扎根,如:Web开发、金融、运维、机器学习、AI等,从来没有一个语言能涉及如此多的领域,其他因素包括:

  1. 世界科技巨头喜欢它,谷歌、Youtube、Facebook、IBM、NASA、Dropbox、雅虎、Mozilla、Quora,Instagram和Reddit只是技术领域的一些巨头,它们将Python用于各种用途,并且一直在寻找Python工程师。例如,谷歌使用Python从AI算法到App Engine Cloud。同时,99.9%的Dropbox代码采Python,包括服务器后端,桌面客户端,网站控制器逻辑,API后端和分析工具;
  2. Python广泛用于机器学习,随着数据科学的兴起,Python作为科学语言的普及程度已经飙升,有许多用Python编写的机器学习库,以及大量的工具,可以轻松地进行机器学习;
  3. Python对于初学者来说是完美的,它是初学者程序员的绝佳选择,因为它的语法简单灵活,使用Python,您可以轻松地开始使用,并立即着手构建可用的东西,早期的这种成就感是学习编码的一个非常重要的因素,近五分之四的Python开发人员将其用作主要语言;
  4. 它可能只是你需要的唯一语言,这是可能的,因为Python是一种多功能语言。根据Skill Up 2018开发人员技能报告,Python是一种脚本语言,它为从笔测试者到DevOps工程师的每个人提供了很大程度的控制—它允许他们解决问题,您可以使用Python来构建网站,开发GUI,分析数据,将其他语言“粘合”在一起,这意味着您可以使用这种语言来满足您的开发需求。

Python如此受广大开发者欢迎,那么具体Python开发者的薪酬有多少呢?会不会很诱人呢?



11 美国各州Python开发者平均薪酬大起底


到了2019年,美国哪个州Python程序员工资最高呢?daxx网站大起底,如下图所示:


▲来源:daxx.com



▲来源:daxx.com


研究显示:

  • 根据Gooroo的说法,美国平均Python开发者薪水为110,021美元。纽约和加利福尼亚拥有最高的Python开发人员薪水——相应的122,135美元和121,443美元。
  • 另一个有趣的事情是加利福尼亚州,纽约州,马萨诸塞州和弗吉尼亚州在美国拥有最多的开放Python职位。


有一个大趋势表明专门研究稀有技术的开发人员比那些知识更广泛的语言的人提供更多的工资,是不是相比Python,其他偏冷门的编程语言工资更高呢?事实并非如此,下面两个图表告诉你答案,Python是一个例外。



12 Python与其他编程语言薪酬对比


根据Gooroo的说法,Python开发人员的平均工资是每年110,021美元,这使得Python成为该国第三大收入最高的编程语言,只有Java和Ruby领先。


▲Python开发人员的薪水与其他编程语言比较图




观察上图可以发现,Python开发者的薪酬在2017到2018年之间一直水涨船高,遥遥领先,不过到了2018到2019年有下降的趋势,这也和上面Gooroo的调查一致,虽然如此,Python也居薪酬前列,Python做为现今人工智能领域的工具,其火热程度可见一斑。


以上从2004年到2018年,回顾了15年来各大语言的沉浮史,下面将对这些变化做总结,以古为镜,可以知兴废。


13 总览语言浮沉史


上面这幅图,将2001年到2018年,各种语言在TIOBE的排名绘制成了折线图,不难看出,从2004年起,Python一路披荆斩棘,走上神坛,而其他语言,Visual Basic、C#等排名有下滑。


正如《琅琊榜》中的诗句所言:“遥映人间冰雪样,暗香幽浮曲临江,遍识天下英雄路,俯首江左有梅郎。”时势造就英雄,现今AI有Python。


相关报道:
https://www.daxx.com/blog/development-trends/python-developer-salary-usa
https://www.youtube.com/watch?v=yL704C1PI4o


更多文章,推荐阅读:

Python 内存分配时的小秘密

清华大学赠大一新生的这本名著,到底好在哪里?

微软官方上线Python教程

对比 C++ 和 Python,谈谈指针与引用

告诉朋友们,我在看

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存