我今天经常查看TIOBE索引,因为我认识的大多数软件专家都经常这样做。它旨在衡量世界上编程语言的流行程度,其流行度随时间变化的图表讲述了一个简单的故事:Java和C自远古以来就一直是语言的王者。
可是等等。没那么快。竞争对手“PYPL索引”(编程语言的普遍性)说Python和Java是共同的王者,而C(令人惊讶地与C++融为一体)则排在后面。这里发生了什么?
这是怎么回事呢,这两个索引具有非常不同的方法……尽管它们的方法的共同点是两者都是很可疑的,但前提是要衡量编程语言的普及程度。TIOBE衡量搜索引擎命中的绝对数量。PYPL衡量使用语言教程的频率。
两者都是不好的措施。我们可以预期在线资源的可用性将是一个极其落后的指标;一度占主导地位的死语可能仍会拥有数百万个专门针对该死语的网页,僵尸网站和博客文章数年未读。教程搜索的频率将非常偏重于向学生全面教授的语言。这不是从业人员实际使用哪种语言的有意义的度量。
当您更仔细地看这些数字时,会有很多奇怪的异常现象。根据TIOBE的说法,过去的C语言在五个月内从其有史以来的最低评分晋升为年度编程语言。我可以买到C在嵌入式系统中的兴起。但是我也可以很容易地预见这是一个非常不完善的措施。
不过,在这两种方法中,最明显的异常是用于编写本机iOS应用程序的两种语言Objective-C和Swift的相对性能。我当然可以相信,总的来说,面对诸如Xamarin和ReactNative等跨平台替代方案的普及,他们最近的表现正在下降。但是我很难相信,在苹果公司推出Swift四年后,在我看来,Objective-C在客观上要优越得多,而Objective-C仍然更加流行/广泛使用。在日常工作中,我处理许多iOS/tvOS/watchOS应用程序,并采访了许多iOS开发人员。很少有人找到尚未从Objective-C转移到Swift的人。
但是,嘿,轶事不是数据,对吗?如果唯一可用的措施与我自己的个人经历相抵触,我可能应该得出结论,后者受选择偏见的影响。我非常愿意这样做……
…除此之外,还有另一种编程语言流行度的衡量标准。我指的是GitHub的平台上最流行的15种编程语言的年度报告。这些数字基本上是我个人经验的完美匹配……并且与TIOBE和PYPL的主张都脱节。
根据GitHub的年和年报告,相距遥远的世界上最流行的编程语言是Java。Python位居第二。Javascript。位居第三,而Ruby位居第四。这与TIOBE形成了鲜明的对比,TIOBE具有Java和C,然后是一个很大的差距,然后是Python和C++(Javascript是第八个)–以及PYPL,后者声称顺序是:Python和Java,一个巨大的差距,然后是Javascript和PHP。
显然,GitHub编号也不代表整个领域。他们的样本量非常大,但仅考虑开源项目。但是我注意到GitHub是唯一将Swift视为比Objective-C受欢迎的指标。对我来说,这使它更具说服力……但其开源选择偏见意味着它仍远未定。
这些统计数据确实很重要,而不仅仅是娱乐性的好奇心和/或行业概况。语言不是很重要,但是它们也不是无关紧要的。人们根据他们的受欢迎程度和(相关的)预期未来价值来决定学习哪种语言,有时甚至是寻找和接受的工作。因此,这三项措施如此明显,根本不同是有点令人沮丧。可悲的是,尽管如此,我们似乎仍然停留在能否给我们带来更大的收益而不是自己的喜好和适用程度上。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以