เว็บ
https://qiita.com เป็นเว็บเขียนบล็อกที่มีเนื้อหาเกี่ยวข้องกับคอมพิวเตอร์และการเขียนโปรแกรม มีนักเขียนโปรแกรมมากมายในญี่ปุ่นมาเขียนบทความและตามอ่าน
เว็บนี้มีระบบแท็กซึ่งแยกตามหัวข้อ เช่นภาษาต่างๆที่ใช้
เช่น บทความภาษาไพธอน เข้าไปดูได้ที่
https://qiita.com/tags/python เนื่องจากเป็นเว็บแหล่งรวมนักเขียนโปรแกรมจากทั่วญี่ปุ่น จำนวนบทความในเว็บนี้จึงสะท้อนความนิยมของแต่ละภาษาในญี่ปุ่นได้เป็นอย่างดี
นอกจากนี้ แท็กสามารถกดตามได้ จำนวนคนกดตามแท็กของภาษาต่างๆก็น่าจะเป็นตัวช่วยวัดความนิยมของภาษาได้อีกส่วนนึง
ดังนั้นจึงลองดึงข้อมูลจำนวนบทความและจำนวนคนตามแท็กของภาษาต่างๆเพื่อมาเทียบดูสักหน่อย
ผลที่ได้ออกมาตามนี้ (ข้อมูลวันที่ 28 มิ.ย. 2019)
|
จำนวนบทความ |
จำนวนคนตาม |
C |
2632 |
21745 |
C++ |
5919 |
24876 |
C# |
7428 |
23079 |
cobol |
56 |
45 |
Clojure |
619 |
550 |
CoffeeScript |
1016 |
11736 |
Delphi |
347 |
148 |
Elm |
452 |
463 |
Erlang |
524 |
446 |
Fortran |
255 |
196 |
golang |
2886 |
2025 |
Haskell |
1904 |
9497 |
Java |
12165 |
39527 |
JavaScript |
26385 |
59736 |
Julia |
570 |
620 |
Kotlin |
2576 |
2243 |
lisp |
267 |
358 |
Lua |
452 |
320 |
matlab |
369 |
360 |
Objective-C |
3946 |
17766 |
Pascal |
82 |
14 |
Perl |
1469 |
12189 |
PHP |
16170 |
37333 |
Prolog |
207 |
96 |
Python |
28671 |
55576 |
R |
2727 |
1912 |
Ruby |
21942 |
34068 |
Rust |
1298 |
1527 |
Scala |
2830 |
10363 |
Swift |
11791 |
6603 |
TypeScript |
3037 |
2325 |
VB.Net |
359 |
322 |
แผนภูมิแท่ง เรียงตามลำดับ
จะเห็นว่าภาษา python เป็นภาษาที่มีคนเขียนบทความมากที่สุด ในขณะที่ภาษา javascript มีคนตามอ่านมากที่สุด
แต่ไม่ว่าจะมองด้านไหน ๒ ภาษานี้ก็คะแนนสูสี และนำทิ้งห่างภาษาอื่นไปเยอะ ดังนั้น ๒ ภาษานี้จึงถือว่ายอดนิยมมากที่สุดในญี่ปุ่น
นอกจากนี้ภาษา java, PHP และ ruby ก็ได้รับความนิยมในลำดับต่อๆมา
ruby นั้นเป็นภาษาที่คิดโดยคนญี่ปุ่น จึงมีแนวโน้มได้รับความนิยมเป็นพิเศษที่ญี่ปุ่น
ภาษาในกลุ่ม C อย่าง C, C++, C# ก็ได้รับความนิยมมาก โดยมีคนตามจำนวนมาก แต่มีจำนวนบทความน้อย โดยเฉพาะ C แต่นั่นน่าจะเป็นเพราะคนส่วนใหญ่กดตามทั้ง C และ C++ แต่เวลาเขียนบทความมักจะแท็กแค่ C++ อย่างเดียว
ภาษา swift นั้นตรงกันข้าม คือมีคนตามน้อย แต่กลับมีคนเขียนบทความไว้มาก
นอกจากนั้นก็ตามมาด้วย perl, scala, haskell, golang, kotlin, ฯลฯ
ข้อมูลนี้ได้มาจากการเขียนโปรแกรมดึงข้อมูลอัตโนมัติโดยใช้ api ของ qiita
รายละเอียด
https://qiita.com/api/v2/docs#タグ เมื่อเข้า api ก็จะได้จำนวนคนที่ตามแท็กและจำนวนบทความออกมาเป็น json ดึงข้อมูลของแท็กภาษาต่างๆมาเทียบกันได้
การดึงข้อมูลมาสร้างตารางและเขียนแผนภูมิแท่งทำโดยโค้ดภาษาไพธอน
import requests
import matplotlib.pyplot as plt
import pandas as pd
lis_tagid = '''c c++ csharp cobol clojure coffeescript delphi elm
erlang fortran golang haskell java javascript julia
kotlin lisp lua matlab objective-c pascal perl php prolog
python r ruby rust scala swift typescript vb.net
'''.split()
phasa = []
n_follow = []
n_item = []
for tagid in lis_tagid:
r = requests.get('https://qiita.com/api/v2/tags/'+tagid)
r.raise_for_status()
khomun = r.json()
phasa.append(khomun['id'])
n_follow.append(khomun['followers_count'])
n_item.append(khomun['items_count'])
df = pd.DataFrame(index=phasa)
df['จำนวนบทความ'] = n_item
df['จำนวนคนตาม'] = n_follow
print(df)
y = range(len(phasa))
plt.figure(figsize=[6,6])
plt.axes(ylim=[min(y)-0.5,max(y)+0.5])
df.sort_values('จำนวนคนตาม',inplace=True)
plt.yticks(y,['%s: %6s'%x for x in df['จำนวนคนตาม'].iteritems()])
plt.barh(y,df['จำนวนคนตาม'],color='#882244')
plt.title(u'จำนวนคนตามอ่าน',family='Tahoma')
plt.tight_layout()
plt.figure(figsize=[6,6])
plt.axes(ylim=[min(y)-0.5,max(y)+0.5])
df.sort_values('จำนวนบทความ',inplace=True)
plt.yticks(y,['%s: %6s'%x for x in df['จำนวนบทความ'].iteritems()])
plt.barh(y,df['จำนวนบทความ'],color='#337744')
plt.title(u'จำนวนบทความ',family='Tahoma')
plt.tight_layout()
plt.show()
รายละเอียดเกี่ยวกับมอดูลที่ใช้ในนี้อ่านได้ใน
requests:
https://phyblas.hinaboshi.com/20180320 matplotlib:
https://phyblas.hinaboshi.com/saraban/numpy_matplotlib pandas:
https://phyblas.hinaboshi.com/saraban/pandas แถมทิ้งท้าย โค้ดภาษารูบีสำหรับดึงข้อมูลอย่างเดียวกันนี้มา แต่แค่บันทึกเป็นไฟล์ .csv ไว้
require "open-uri"
require "json"
require "csv"
phasa = %w!c c++ csharp cobol clojure coffeescript delphi elm
erlang fortran golang haskell java javascript julia
kotlin lisp lua matlab objective-c pascal perl php prolog
python r ruby rust scala swift typescript vb.net!
col = %w!id items_count followers_count!
CSV.open('phasanaiqiita.csv','w'){|csv|
phasa.each{|p|
data = JSON.parse(open('https://qiita.com/api/v2/tags/'+p).read)
csv << col.map{|c|data[c]}
}
}
หากเทียบดูโดยรวมแล้วลักษณะการเขียนของรูบีนั้นจะสามารถเขียนได้กระชับกว่าไพธอนอยู่เล็กน้อย