设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

2015年8月中国版的编程语言排行榜

2015-8-17 21:44| 发布者: joejoe0332| 查看: 2063| 评论: 0|原作者: oschina|来自: oschina

摘要: 引用月经贴“TIOBE”编程语言排行榜的声明:“这个榜单本身采集的是英文世界的数据,虽然在反映趋势上有一些参考意义,但与中国的实际情况不完全符合,而且,这张采样本身也有相当大的局限性。...排名使用著名的搜索 ...

  引用月经贴“TIOBE”编程语言排行榜的声明:“这个榜单本身采集的是英文世界的数据,虽然在反映趋势上有一些参考意义,但与中国的实际情况不完全符合,而且,这张采样本身也有相当大的局限性。...排名使用著名的搜索引 擎(诸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。”


  因此,“TIOBE”排行榜反映的是英文世界里各种编程语言的“受关注程度”。通过搜索引擎去查询,并不能说明查询的人在使用这门编程语言,也有可能只是想去了解一下。所以当iPhone崛起的时候,很多人会听说 Objective-C,因此它受到很多人的关注,但不见得就有很多 Objective-C 程序员。


  我其实更想知道的是中国这片土地上各种编程语言的占用率排行榜,即什么编程语言被最广泛地使用。有这样一份排行榜,就能知道哪一门编程语言的就业机会最多;如果有持续的报告,还可以看出哪些编程语言在企业中逐渐受到关注,哪些逐渐被冷落,就能及时地跟上趋势。


  于是我爬了`51job`上针对“计算机软件”、“计算机服务”、“互联网/电子商务”和“网络游戏” 4 个行业的 “计算机软件” 和 “互联网/电子商务/网游” 岗位的前 10000 条招聘信息,从中提取出开发岗位相关的信息,并做了简单的归类,统计出各种编程语言的岗位数量。结果如下:


排名编程语言岗位数量
1java15116
2php5129
3.net3879
4javascript3878
5objective-c3651
6c++2119
7c#1454
8c949
9html701
10sql639
11asp559
12shell532
13python314
14actionscript221
15css69
16ruby59
17vb58
18cobol54
19erlang41
20lua34
21go27
22scala9
23perl7
24swift4


  对比“2015年8月 TIOBE 编程语言排行榜”的结果(如下图),就能发现 Java 无论国内外都是无可争议的王者,排在其后的是 PHP 和 .NET,相比 TIOBE 的 C 和 C++,更接近周边的实际情况:招聘时 Javaer 遍地开花,PHPer 一抓一大把,.NET 的也不少,前端和移动开发不断崛起中;Flash 开发基本已成明日黄花,热门程度还比不上 Python。



  爬虫我是用 Python 2.7 写的,源码如下(只做抛装引玉)。我简单地统计了其中招聘名称,大家可以参考这样的思路爬更多的招聘网站,统计更多的信息——例如统计每所城市各自的热门编程语言等,看看自己的技术栈最适合呆在哪所城市!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env python
# -*- coding: utf-8 -*- 
 
import urllib2, sys, re, glob, operator
 
reload(sys)
sys.setdefaultencoding('utf-8')
 
alias = {
    'java': 'java',
    'javaee': 'java',
    'javase': 'java',
    'javaweb': 'java',
    'android': 'java',
    'eclipse': 'java',
    'weblogic': 'java',
    'tomcat': 'java',
    'jvm': 'java',
    'scala': 'scala',
    'clojure': 'clojure',
    'groovy': 'groovy',
 
    'net': '.net',
    '.net': '.net',
    'dotnet': '.net',
    'c#': 'c#',
    'unity': 'c#',
    'asp': 'asp',
    'asp.net': '.net',
    'winform': '.net',
    'vb': 'vb',
    'basic': 'vb',
 
    'php': 'php',
    'python': 'python',
    'perl': 'perl',
    'ruby': 'ruby',
    'rails': 'ruby',
 
    'c++': 'c++',
    'qt': 'c++',
    'c': 'c',
    'opencv': 'c',
    'objective-c': 'objective-c',
    'ios': 'objective-c',
    'iphone': 'objective-c',
    'cocos': 'objective-c',
    'swift': 'swift',
 
    'dba': 'sql',
    'oracle': 'sql',
    'mysql': 'sql',
    'pgsql': 'sql',
    'postgresql': 'sql',
    'database': 'sql',
    'sqlserver': 'sql',
    'sql': 'sql',
 
    'web': 'javascript',
    'js': 'javascript',
    'json': 'javascript',
    'node': 'javascript',
    'nodejs': 'javascript',
    'jquery': 'javascript',
    'phonegap': 'javascript',
    'angularjs': 'javascript',
    'javascript': 'javascript',
    'html': 'html',
    'css': 'css',
 
    'flash': 'actionscript',
    'flex': 'actionscript',
    'actionscript': 'actionscript',
 
    'sh': 'shell',
    'shell': 'shell',
    'unix': 'shell',
    'linux': 'shell',
    'ubuntu': 'shell',
 
    'go': 'go',
    'golang': 'go',
    'erlang': 'erlang',
    'lua': 'lua',
    'cobol': 'cobol'
}
 
languages = {}
 
urllib2.socket.setdefaulttimeout(10)
browser = urllib2.build_opener()
browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36')]
 
url = 'http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=000000%%2C00&district=000000&funtype=0100%%2C2500&industrytype=01%%2C38%%2C32%%2C40&issuedate=8&providesalary=99&keywordtype=1&curr_page=%d&lang=c&stype=2&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=01&companysize=99&lonlat=0%%2C0&radius=-1&ord_field=0&list_type=0&fromType=14&dibiaoid=-1'
 
for i in xrange(1, 2000):
    try:
        for content in re.findall('<td class="td1".*</td>', browser.open(url % i).read().decode('gbk')):
            title = re.search('title="([^"]+)"', content) or re.search('>([^<]+)<', content)
            if title:
                for tech in re.findall('(?:c#|c\\+\\+|.net|[a-z]+)', title.group(1).lower()):
                    if alias.has_key(tech):
                        key = alias[tech]
                        languages[key] = languages.get(key, 0) + 1
    except:
        print('ignore')
 
for tech, count in sorted(languages.items(), key=operator.itemgetter(1)):
    print tech, count

酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部