개수는 무게가 아니다: 6만 7천 개 저장소가 말하는 언어 생태계
이 글은 기계 번역이며 원어민 검수를 거치지 않았습니다. 원문 보기 →
언어 생태계를 비교할 때 가장 흔한 질문은 "어느 언어에 프로젝트가 가장 많은가"입니다. 답하기는 쉽지만 행동으로 옮기기엔 약한 질문입니다. 개수만 알려줄 뿐 무게는 알려주지 않기 때문입니다.
우리는 6만 7천 개가 넘는 고스타 GitHub 저장소를 추적하며 스타 변화를 매일 기록합니다. 이 말뭉치를 언어별로 나누면 단순 집계보다 유용한 것이 보입니다.
먼저 원본 데이터
아래 표는 페이지를 열 때마다 데이터베이스에서 직접 읽어옵니다. 스크린샷이 아닙니다:
| Language | Repos | Total stars | Median | Top repo |
|---|---|---|---|---|
| Python | 11,741 | 56.5M | 1,998 | public-apis/public-apis |
| JavaScript | 8,425 | 36.2M | 1,932 | react/react |
| TypeScript | 6,387 | 38.3M | 2,283 | freeCodeCamp/freeCodeCamp |
| Java | 4,168 | 15.4M | 1,913 | krahets/hello-algo |
| Go | 4,089 | 20.7M | 2,295 | avelino/awesome-go |
| C++ | 3,429 | 14.9M | 2,011 | tensorflow/tensorflow |
| C | 2,533 | 9.9M | 1,943 | torvalds/linux |
| Rust | 2,278 | 12.2M | 2,138 | ultraworkers/claw-code |
| C# | 1,899 | 6.7M | 1,997 | 2dust/v2rayN |
| PHP | 1,662 | 5.5M | 1,834 | danielmiessler/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를 기본으로 택하는 흐름과 일치합니다.
상위 목록의 구성
구성은 개수만큼 중요합니다. 현재 추적 중인 저장소 가운데 스타가 가장 많은 것들:
- 1codecrafters-io/build-your-own-xMaster programming by recreating your favorite technologies from scratch.529.5k
- 2sindresorhus/awesome😎 Awesome lists about all kinds of interesting topics487.1k
- 3freeCodeCamp/freeCodeCampfreeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.452.2k
- 4public-apis/public-apisA collective list of free APIs451.7k
- 5EbookFoundation/free-programming-books:books: Freely available programming books392.6k
- 6openclaw/openclawYour own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞 383.6k
- 7nilbuild/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.362k
- 8donnemartin/system-design-primerLearn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.358.5k
- 9jwasham/coding-interview-universityA complete computer science study plan to become a software engineer.356.7k
- 10kamranahmedse/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.310.1k
학습 자료와 큐레이션 목록이 실행 가능한 소프트웨어보다 많다는 점에 주목하세요. 이런 저장소는 엄청난 스타를 모으지만 언어의 엔지니어링 생태계에 대해서는 거의 말해주지 않습니다. 프레임워크나 런타임과 한데 묶으면 비교가 왜곡됩니다.
이 데이터가 말할 수 없는 것
모든 분석은 자신의 한계를 밝혀야 합니다:
- 표본은 이미 인기 있는 프로젝트이지 GitHub 전체가 아닙니다. 여기의 중앙값은 이미 기준을 넘은 프로젝트들 사이의 중앙값이며, 사이트 전체 실제 값보다 훨씬 높습니다.
- 스타는 품질이 아니고 사용량도 아닙니다. 개발자 가시성에 가깝습니다. 실제 중요도보다 훨씬 적은 스타를 가진 핵심 라이브러리가 많습니다.
- 언어 분류는 GitHub의 주 언어 감지를 따릅니다. 파일 바이트 구성에 따라 프론트엔드 프레임워크가 뜻밖의 언어로 분류되기도 합니다.
- 생태계의 나이가 다릅니다. C와 Java는 수십 년의 축적이 있고 Rust는 훨씬 짧습니다. 총합을 직접 비교하는 것은 젊은 쪽에 불리합니다.
정리
기술 스택을 고르는 중이라면 "어느 언어에 프로젝트가 더 많은가"보다 나은 질문은 내가 필요한 특정 영역에 성숙한 선택지가 몇 개나 있는가입니다. 전체 개수는 그 질문에 놀라울 만큼 도움이 되지 않습니다.
위 표는 매일의 크롤링과 함께 자동으로 갱신됩니다. 랭킹에서 같은 데이터를 언어와 카테고리별로 직접 나눠 볼 수 있습니다.
이 글의 모든 수치는 데이터베이스에서 실시간으로 읽어오며 매일 갱신됩니다.