목록으로 돌아가기

개수는 무게가 아니다: 6만 7천 개 저장소가 말하는 언어 생태계

2분 소요데이터 분석생태계

이 글은 기계 번역이며 원어민 검수를 거치지 않았습니다. 원문 보기 →

언어 생태계를 비교할 때 가장 흔한 질문은 "어느 언어에 프로젝트가 가장 많은가"입니다. 답하기는 쉽지만 행동으로 옮기기엔 약한 질문입니다. 개수만 알려줄 뿐 무게는 알려주지 않기 때문입니다.

우리는 6만 7천 개가 넘는 고스타 GitHub 저장소를 추적하며 스타 변화를 매일 기록합니다. 이 말뭉치를 언어별로 나누면 단순 집계보다 유용한 것이 보입니다.

먼저 원본 데이터

아래 표는 페이지를 열 때마다 데이터베이스에서 직접 읽어옵니다. 스크린샷이 아닙니다:

LanguageReposTotal starsMedianTop repo
Python11,74156.5M1,998public-apis/public-apis
JavaScript8,42536.2M1,932react/react
TypeScript6,38738.3M2,283freeCodeCamp/freeCodeCamp
Java4,16815.4M1,913krahets/hello-algo
Go4,08920.7M2,295avelino/awesome-go
C++3,42914.9M2,011tensorflow/tensorflow
C2,5339.9M1,943torvalds/linux
Rust2,27812.2M2,138ultraworkers/claw-code
C#1,8996.7M1,9972dust/v2rayN
PHP1,6625.5M1,834danielmiessler/SecLists

눈여겨볼 세 가지

1. 개수 1위가 중앙값 1위는 아니다

Python은 저장소 수에서 크게 앞서며, 2위의 약 1.4배입니다. 하지만 중앙값——"이 언어의 프로젝트를 무작위로 고르면 얼마나 인기 있을까"에 답하는 지표——을 보면 Python은 Go와 TypeScript보다 뒤에 있습니다.

이는 의 신호입니다. Python은 과학 계산부터 스크래핑, 머신러닝, 자동화까지 거의 전 영역을 아우릅니다. 폭의 이면은 매우 긴 롱테일이며, 많은 프로젝트가 추적 기준선 바로 위에 머뭅니다.

2. Go의 적중률이 가장 높다

Go의 저장소 수는 Python의 약 3분의 1이지만, 중앙값은 여기 나온 어떤 언어보다도 높습니다.

설득력 있는 설명은 영역 집중입니다. Go의 인기 프로젝트는 클라우드 네이티브 인프라, DevOps, CLI 도구에 몰려 있습니다. 이 분야의 사용자는 그 자체로 개발자이고, 즉 스타를 누르는 사람들입니다. Python이 닿는 범위의 상당 부분은 GitHub을 열지 않는 사용자층입니다.

3. 총 스타와 중앙값은 다른 이야기를 한다

JavaScript는 총 스타 수가 높지만 중앙값은 상대적으로 낮습니다. 총합이 높은 것은 아주 크고 오래된 프로젝트군을 반영합니다——축적된 역사입니다. 중앙값이 낮다는 것은 최근 프로젝트 중 두각을 나타내는 비율이 작다는 뜻입니다.

TypeScript는 정반대입니다. 저장소 수는 JavaScript보다 적지만 중앙값은 높으며, 새 프로젝트가 처음부터 TypeScript를 기본으로 택하는 흐름과 일치합니다.

상위 목록의 구성

구성은 개수만큼 중요합니다. 현재 추적 중인 저장소 가운데 스타가 가장 많은 것들:

  1. 1codecrafters-io/build-your-own-x529.5k
  2. 2sindresorhus/awesome487.1k
  3. 3freeCodeCamp/freeCodeCamp452.2k
  4. 4public-apis/public-apis451.7k
  5. 5EbookFoundation/free-programming-books392.6k
  6. 6openclaw/openclaw383.6k
  7. 7nilbuild/developer-roadmap362k
  8. 8donnemartin/system-design-primer358.5k
  9. 9jwasham/coding-interview-university356.7k
  10. 10kamranahmedse/developer-roadmap310.1k

학습 자료와 큐레이션 목록이 실행 가능한 소프트웨어보다 많다는 점에 주목하세요. 이런 저장소는 엄청난 스타를 모으지만 언어의 엔지니어링 생태계에 대해서는 거의 말해주지 않습니다. 프레임워크나 런타임과 한데 묶으면 비교가 왜곡됩니다.

이 데이터가 말할 수 없는 것

모든 분석은 자신의 한계를 밝혀야 합니다:

  • 표본은 이미 인기 있는 프로젝트이지 GitHub 전체가 아닙니다. 여기의 중앙값은 이미 기준을 넘은 프로젝트들 사이의 중앙값이며, 사이트 전체 실제 값보다 훨씬 높습니다.
  • 스타는 품질이 아니고 사용량도 아닙니다. 개발자 가시성에 가깝습니다. 실제 중요도보다 훨씬 적은 스타를 가진 핵심 라이브러리가 많습니다.
  • 언어 분류는 GitHub의 주 언어 감지를 따릅니다. 파일 바이트 구성에 따라 프론트엔드 프레임워크가 뜻밖의 언어로 분류되기도 합니다.
  • 생태계의 나이가 다릅니다. C와 Java는 수십 년의 축적이 있고 Rust는 훨씬 짧습니다. 총합을 직접 비교하는 것은 젊은 쪽에 불리합니다.

정리

기술 스택을 고르는 중이라면 "어느 언어에 프로젝트가 더 많은가"보다 나은 질문은 내가 필요한 특정 영역에 성숙한 선택지가 몇 개나 있는가입니다. 전체 개수는 그 질문에 놀라울 만큼 도움이 되지 않습니다.

위 표는 매일의 크롤링과 함께 자동으로 갱신됩니다. 랭킹에서 같은 데이터를 언어와 카테고리별로 직접 나눠 볼 수 있습니다.

이 글의 모든 수치는 데이터베이스에서 실시간으로 읽어오며 매일 갱신됩니다.