프로그래밍 언어별 랭킹(2012년)
Ranking the popularity of programming languages(2012)
Paul Graham은 "Revenge of the Nerds"와 "Beating for average"에서 언어의 관성을 언급하면서, 익숙해지면 그 언어의 틀 속에서 자신의 생각을 가두게 되어 편견에 사로잡혀 언어의 활용을 효과적이지 못하게 된다면서, 익숙한 언어보다는 적합한 프로그래밍 언어를 선택할 줄 알아야 한다고 했죠.
즉, 최소한 몇가지 언어를 알고 자신의 업무에 적합하게 사용할 줄 알아야 한다는 말입니다.
그 다음은 최소한의 몇가지 언어를 선택해야하는데....
적어도 확률적으로 인기있는 언어 순으로 접해보고 그 언어가 가지는 장점, 특성을 파악한 다음 업무 등에 적합한 언어를 선택하면 될 것이 가장 좋아 보이죠. 그런 의미에서 재미삼아 프로그래밍 언어에 대한 최신 랭킹 정보를 공유합니다. ^^
항상 할일 많고, 시간 없는 대한 민국 개발자들을 언어의 관성과 대중성(인기)에 몰입되어, 생산성, 적합성을 무시하는 무뇌자(언어의 관성으로 인해 적절한 선택을 하지 못하는 사람)로 몬다. 넋두리... ^^
아래의 프로그래밍 언어의 랭킹 정보는 GitHub와 StackOverflow에서 데이터를 수집해서 랭킹 도표를 만들었습니다.
통계 지표의 기초 자료는 GitHub에는 등록된 프로젝트의 수로 산정된 Gihhub 랭킹 정보와 StackOverflow에는 Tag 수를 가지고 만들었고 수집 소스, 그리고 통계에 관련된 소스들을 공유해요.
1. 상위 언어별 순위
상위권에 드는 언어중에 스크립트 언어가 많죠. 이유는 프로그래밍 언어 자체의 완성도도 중요하겠지만, 빨리 배울 수 있고, 개발 생산성도 높고, 관련 오픈 소스들도 많고, 개발하는 데 편리한 도구이 있는 등이 해당되겠죠.
Python에는 pip/easy_install + PyPI, Perl은 CPAN, Ruby는 Gems, PHP는 PEAR, node에는 npm 등이 쉽게 확장 가능하고 개발에 편이성을 증대시켜주는 것들이죠.
그리고 최근에는 R, Scala, Objective-C, CoffeeScript, Lua, Clojure, Groovy 등이 많이 뜨고 있는 것도 볼 수 있네요.
위 통계 자료를 보니 TIOBE Programming Community Index for February 2012자료와 비슷하다.
2. 통계 그래프
3. 프로그래밍 언어별 랭킹 수집 소스(Python - GitHub, StackOverflow)
- GitHub
- StackOverflow
4. R 그래프 소스
어떤 프로그래밍 언어들이 상위권에 있는지 트랜드 확보차원에서 한번 보시기 바랍니다.
관련 소스 다운로드는 github.com에서 받으실 수 있습니다.
즉, 최소한 몇가지 언어를 알고 자신의 업무에 적합하게 사용할 줄 알아야 한다는 말입니다.
그 다음은 최소한의 몇가지 언어를 선택해야하는데....
적어도 확률적으로 인기있는 언어 순으로 접해보고 그 언어가 가지는 장점, 특성을 파악한 다음 업무 등에 적합한 언어를 선택하면 될 것이 가장 좋아 보이죠. 그런 의미에서 재미삼아 프로그래밍 언어에 대한 최신 랭킹 정보를 공유합니다. ^^
항상 할일 많고, 시간 없는 대한 민국 개발자들을 언어의 관성과 대중성(인기)에 몰입되어, 생산성, 적합성을 무시하는 무뇌자(언어의 관성으로 인해 적절한 선택을 하지 못하는 사람)로 몬다. 넋두리... ^^
아래의 프로그래밍 언어의 랭킹 정보는 GitHub와 StackOverflow에서 데이터를 수집해서 랭킹 도표를 만들었습니다.
통계 지표의 기초 자료는 GitHub에는 등록된 프로젝트의 수로 산정된 Gihhub 랭킹 정보와 StackOverflow에는 Tag 수를 가지고 만들었고 수집 소스, 그리고 통계에 관련된 소스들을 공유해요.
1. 상위 언어별 순위
| 순위 | GitHub | StackOverflow |
| 1 | JavaScript | C# |
| 2 | Ruby | Java |
| 3 | Python | PHP |
| 4 | Shell | JavaScript |
| 5 | Java | C++ |
| 6 | PHP | Python |
| 7 | C# | Objective-C |
| 8 | C | C |
| 9 | Perl | Ruby |
| 10 | C++ | Perl |
| 11 | Objective-C | Delphi |
상위권에 드는 언어중에 스크립트 언어가 많죠. 이유는 프로그래밍 언어 자체의 완성도도 중요하겠지만, 빨리 배울 수 있고, 개발 생산성도 높고, 관련 오픈 소스들도 많고, 개발하는 데 편리한 도구이 있는 등이 해당되겠죠.
Python에는 pip/easy_install + PyPI, Perl은 CPAN, Ruby는 Gems, PHP는 PEAR, node에는 npm 등이 쉽게 확장 가능하고 개발에 편이성을 증대시켜주는 것들이죠.
그리고 최근에는 R, Scala, Objective-C, CoffeeScript, Lua, Clojure, Groovy 등이 많이 뜨고 있는 것도 볼 수 있네요.
위 통계 자료를 보니 TIOBE Programming Community Index for February 2012자료와 비슷하다.
2. 통계 그래프
3. 프로그래밍 언어별 랭킹 수집 소스(Python - GitHub, StackOverflow)
- GitHub
#!/usr/bin/env python
import urllib, re
from multiprocessing import Pool
content = urllib.urlopen("http://github.com/languages").read()
ranks = {}
def fetch(lang):
lang = urllib.unquote(lang)
sub = urllib.urlopen("http://github.com/languages/" + lang).read()
matches = re.findall("is the #([0-9]+)", sub)
if(len(matches) > 0):
rank = matches[0]
ranks[lang] = rank
print lang,',',rank
else:
matches = re.findall("is the most popular", sub)
if(len(matches) > 0):
ranks[lang] = 1
print lang,',',1
if __name__ == '__main__':
langs = re.findall("/languages/(.+)\"", content)
p = Pool(45)
p.map(fetch, langs)
- StackOverflow
#!/usr/bin/env python
#
import urllib
import re
langs = ('ASP','ActionScript','Ada','Arc','Arduino','Assembly','AutoHotkey','Boo',
'C#','C++','C','Clojure','CoffeeScript','ColdFusion','Common Lisp',
'D','Delphi','Dylan','Eiffel','Emacs Lisp','Erlang','FORTRAN','Factor',
'Fancy','Go','Gosu','Groovy','HaXe','Haskell','Io','Ioke','Java','JavaScript',
'Lua','Matlab','Mirah','Nemerle','Nu','OCaml','Objective-C','Objective-J','PHP',
'Parrot','Perl','Prolog','Pure Data','Python','R','Racket','Rebol','Ruby','Rust',
'Scala','Scheme','Self','Shell','Smalltalk','Standard ML','SuperCollider','Tcl',
'Turing','VHDL','Vala','Verilog','VimL','Visual Basic','XQuery','ooc')
surl = 'http://stackoverflow.com/questions/tagged/'
counts = {}
HexCharacters = "0123456789abcdef"
def UrlEncode(s):
r = ''
for c in s:
o = ord(c)
if (o >= 48 and o <= 57) or \
(o >= 97 and o <= 122) or \
(o >= 65 and o <= 90) or \
o == 36 or o == 45 or o == 95 or \
o == 46 or o == 43 or o == 33 or \
o == 42 or o == 39 or o == 40 or \
o == 41 or o == 44:
r += c
else:
r += '%' + CleanCharHex(c)
return r
def CleanCharHex(c):
o = ord(c)
r = HexCharacters[o / 16]
r += HexCharacters[o % 16]
return r
for lang in langs:
enclang = UrlEncode(lang)
response = urllib.urlopen(surl + enclang).read()
message = re.search('summarycount.*>(.*)<', response)
if message!=None:
count = int(message.group(1).replace(',', ''))
else:
count = 0
counts[lang] = count
#print lang, ':', count
sorted_counts = sorted(counts.items(), key=lambda(k,v):(v,k))
sorted_counts.reverse()
for i in range(0, 68):
print sorted_counts[i][0],',',i+1
4. R 그래프 소스
if (!require(calibrate)) install.packages('calibrate')
library(calibrate)
con <-
url("http://mimul.com/pebble/default/files/blog/language_rank.csv")
rank_data <- read.csv(con,sep=",",head=TRUE)
plot(rank_data$github.rank,rank_data$so.rank,
main="programming languages popularity",
xlab="Rank On GitHub",
ylab="Rank On StackOverflow", bg="yellow", col="red")
abline(lm(github.rank ~ so.rank, data= rank_data), col= "blue")
textxy(rank_data$github.rank,rank_data$so.rank,rank_data$Language)
어떤 프로그래밍 언어들이 상위권에 있는지 트랜드 확보차원에서 한번 보시기 바랍니다.
관련 소스 다운로드는 github.com에서 받으실 수 있습니다.










