年终岁尾了,编程语言也要决出这一年的最佳语言了,会是谁呢,从 TIOBE 上来看,Java、C 和 Python 基本锁定了前三的位置,Java 江湖老大的地位,还是无人能撼动呢。

下面先来一张 TIOBE 网站的走势图,镇楼(这是个暴露年龄的词语)!

数据获取

数据获取的部分,与上一篇 DB 篇很类似,都是解析 JavaScript 代码里的变量,抽出数据即可def get_pl_data(name):

name_lower = [i.lower() for i in name]

for i in name_lower:

print("Request ", i)

if i == 'c#':

i = 'csharp'

url = 'https://www.tiobe.com/tiobe-index/' + i

res = requests.get(url).text

content = BeautifulSoup(res, "html.parser")

js = content.find_all('script')[9].string

src_text = js2xml.parse(js)

src_tree = js2xml.pretty_print(src_text)

data_tree = BeautifulSoup(src_tree, 'html.parser')

array_list = data_tree.find_all('array')

data_list = []

for array in array_list[3:]:

array_data = array.find_all('number')

data_list.append({'date': array_data[0]['value'] + '-' + array_data[1]['value'] + '-' + array_data[2]['value'],

'value': array_data[3]['value']})

save_data(i, data_list)

当然这里还是提前获取了前50名编程语言的列表,直接通过 pandas 的 read_html 方法就可以方便的获取def get_pl_list():

url = 'https://www.tiobe.com/tiobe-index/'

pl_df = pd.read_html(url)

top_20 = pl_df[0]['Programming Language'].values.tolist()

bottom_30 = pl_df[1]['Programming Language'].values.tolist()

return top_20 + bottom_30

最后再保存到 csv 中with open('pl_data.csv', 'a+', encoding='utf-8') as f:

f.write('name,value,date ')

for d in data:

try:

row = '{},{},{}'.format(name,

d['value'],

d['date'])

f.write(row)

f.write(' ')

except:

raise

如果不出意外的话,几分钟的时间里,我们就能够拿到近20年编程语言的风云数据啦!

整体排名

我们先来看看2019年,各大编程语言的总体排名,其实从上面镇楼曲线图中也是可以看出来的,但是不是特别的直观,我们转换成柱状图来看看

可以看出虽然这一年里 Python 大红大紫,但是根据 TIOBE 的统计来看,其搜索占有率还是远远低于 Java 和 C 的,不过其第三名的位置还是比较稳固的!

而 Java 和 C,这两位语言界的大佬,已经相爱相杀了多年了,直到如今也没有完全分出高低。

由谷歌力挺的 Go 语言,似乎有些放缓了前进的步伐,第15位,不太符合其天之骄子的身份呢。

而对于世界第一语言 PHP 来说,在这个微服务兴起,前后端分离盛行的时代,活着就是最好的!

五大语言指数

下面我们来分别看一看榜单的前五大语言的排名走势情况

Java 的2019

2019 年的 Java,有一种稳中取胜的感觉,作为生态最为庞大的语言,其强大的造新能力确保了江湖地位,要说企业里后端的第一语言,绝对非 Java 莫属!

C 的2019

2019 年的 C,还是有着不错的增长的,虽然在年末的两个月表现不佳,但是这也足以确保第二的位置了,相信这门“古老”的语言在未来仍然是不可忽视的力量!

Python 的2019

随着2018年人工智能的兴起,Python 已经大火了一把,而进入2019年,这种势头仍然没有减弱,凭借着简洁易懂学习曲线平滑等特点,Python 成为了更多人的首选语言。

C++ 的2019

C ++ 这一年的表现似乎不是太好,当然在嵌入式领域,它还是老大。同时作为 C 语言的超集,前途无限光明。

C# 的2019

C# 在这一年有着非常不错的增长,隐隐有超越 C++ 的趋势,估计这还是和微软逐渐拥抱开源息息相关吧,毕竟现在的微软已经是 GitHub 上的第一大开源组织了!

6-10名走势曲线

接下来我们看下榜单上6-10名编程语言的全年走势情况

可以看出,除了 .Net 语言下滑的较为明显之外,其他的语言包括 PHP、SQL、Swift 和 JS 等都变化不大,相互之间的位置也没有太大变化,大家相安无事!

11-20名走势曲线

首先是11-15名的曲线走势

在这份榜单中,各个语言的变化就比较大了,比如说 Objective-C 最高时能达到1.8%,如果保持住的话,都可以挤进前十了。而业界一致看好的 Go 语言呢,最高也有1.4%多,只不过在几经起落之后,最终定格在0.9%,不禁令人唏嘘!

再来看看16-20名的曲线走势

五大语言占比

最后,我们来看看榜首的五大语言占比情况吧

从图中不难看出,榜首的五大语言,基本占去了搜索比重的一半以上,如果再加上 .Net 和 JavaScript 两大语言,基本上程序猿的世界里,就是它们了。

当然了,语言火是一回事,薪资高不高又是另一回事了,简单的抓取了拉勾上每个语言前三页岗位的薪资情况,大家来体会下

最后还是以一个视频结束,20年语言风云榜,你值得拥有!

后台回复“PL”获取完整的数据抓取和可视化代码!

作者:周萝卜,Python 学习者。爱好爬虫、数据分析及可视化等,个人公众号《萝卜大杂烩》,期待与你相遇~”

风云编程python-二十年编程语言风云,哪款是你的爱豆?相关推荐

  1. 风云编程python怎么样_二十年编程语言风云,哪款是你的爱豆?

    简介:2020了,编程语言也要决出2019年的最佳语言了,会是谁呢,从 TIOBE 上来看,Java.C 和 Python 基本锁定了前三的位置,Java 江湖老大的地位,还是无人能撼动呢. 下面先来 ...

  2. 风云编程python怎么样_二十年编程语言风云,看Python如何一步步往上爬!

    作者 | 周萝卜 来源 | 萝卜大杂烩 年终岁尾了,编程语言也要决出这一年的最佳语言了,会是谁呢,从 TIOBE 上来看,Java.C 和 Python 基本锁定了前三的位置,Java 江湖老大的地位 ...

  3. 二十年编程语言风云,哪款是你的爱豆?

    2021年已经完结,这一年 Python 语言再次强势出击,最终拿下了年度语言的桂冠,而 C 语言也成功反超 Java 成为第二名,Java 略有下滑,但还是保住了前三 下面先来一张 TIOBE 网站 ...

  4. 2022年了,二十年编程语言风云,哪款是你的爱豆?

    2021年已经完结,这一年 Python 语言再次强势出击,最终拿下了年度语言的桂冠,而 C 语言也成功反超 Java 成为第二名,Java 略有下滑,但还是保住了前三 下面先来一张 TIOBE 网站 ...

  5. 风云编程python基础语法(1)

    未完待续,持续更新中... 99**2 = 99^2 一.print()函数 二.数据类型 三.条件判断 四.input()函数 五.列表和字典+元组 列表list 1.格式:roommates=[' ...

  6. 风云编程python基础语法(8)|| 完结

    目录 十八.思维课-用编程能力解决实际问题 流程图​ 产品设计 如何提需求 如何设计解决方案 练习 (1)"不知道吃什么" (2)滚动的广告牌 十九. 目标 ​阶段1.0:输入固定 ...

  7. 风云编程python基础语法(3)

    目录​​​​​​​ 九.编程学习的两大瓶颈 1.知识学完就忘 2.缺乏解题能力 练习:九九乘法表 十.函数 1.函数的定义 2.定义和调用函数 3.参数的类型 4.return语句 5.变量作用域 练 ...

  8. 风云编程python基础语法(6)

    目录 十五.编码与文件 编码 二进制 编码表 encode和decode 文件读写 读取文件 写入文件 小结 练习 统计成绩 默写古诗 十六.模块 什么是模块 使用自己的模块 import语句 fro ...

  9. 风云编程python基础语法(7)

    目录 十七.发邮件 目标 版本1.0:发一封最简单的邮件 smtplib模块 email模块 代码结构 可能出现的错误 版本2.0:给自己发完整的邮件 丰富邮件头 丰富正文内容 版本3.0:群发一封完 ...

  10. 风云编程python基础语法(5)

    目录 十四.角色属性克制 目标 版本1.0:类的封装,打包函数 版本2.0:类的继承和实例化,让三种角色属性不同 版本3.0:为类添加克制关系的类方法 版本4.0:角色类型之间的配合 版本5.0:优化 ...

最新文章

  1. 单片机 解释型 c语言脚本,解释型单片机应用程序的研究.pdf
  2. java递归方法调用自己_java – 同步方法调用自身递归 这破了吗
  3. 自然语言处理中的语言模型预训练方法
  4. TypeScript 交叉类型(intersection type)
  5. All Flags in April
  6. 常用加密算法的Java实现(一)
  7. matlab背景点状,基于MATLAB的点状目标检测
  8. [转]MySQL5.6.22 安装
  9. 云服务器安装python_腾讯云服务器安装PYTHON3.6.3
  10. 中标麒麟运行java_中标麒麟系统上安装java、eclipse指南
  11. Error: The method ‘DioHttpHeaders.add‘ has fewer named arguments than those of overridden method
  12. 初识Kinect之二
  13. The JSP specification requires that an attribute name is preceded by whitesp
  14. ar和nm命令的使用
  15. C++错误 C1189
  16. wo-27s管理员账户和密码_某数据监测与分析系统可被撞库出登录密码
  17. mysql koa2的分页查询_koa2 快速实现注册、登录+分页(一)
  18. 信捷PLc的C语言大小排序筛选,信捷PLC顺序控制怎么写
  19. MFC在查找预编译头时遇到意外的文件结尾
  20. ConcurrentHashMap 的理解

热门文章

  1. nodejs配置摘要
  2. 2018-11-23随笔
  3. 如何获取启动页activity
  4. relative和absolute的区别
  5. Android 开发学习随笔
  6. iOS基本UI控件总结
  7. 分布式架构高可用架构篇_04_Keepalived+Nginx实现高可用Web负载均衡
  8. A-Grade Browser By Yahoo
  9. WPF and Silverlight 学习笔记(十八):WPF样式(Style)与模板(Template)
  10. oracle SQL性能优化