개수는 무게가 아니다: 6만 7천 개 저장소가 말하는 언어 생태계
이 글은 기계 번역이며 원어민 검수를 거치지 않았습니다. 원문 보기 →
언어 생태계를 비교할 때 가장 흔한 질문은 "어느 언어에 프로젝트가 가장 많은가"입니다. 답하기는 쉽지만 행동으로 옮기기엔 약한 질문입니다. 개수만 알려줄 뿐 무게는 알려주지 않기 때문입니다.
우리는 6만 7천 개가 넘는 고스타 GitHub 저장소를 추적하며 스타 변화를 매일 기록합니다. 이 말뭉치를 언어별로 나누면 단순 집계보다 유용한 것이 보입니다.
먼저 원본 데이터
아래 표는 페이지를 열 때마다 데이터베이스에서 직접 읽어옵니다. 스크린샷이 아닙니다:
| Language | Repos | Total stars | Median | Top repo |
|---|---|---|---|---|
| Python | 12,188 | 59.6M | 1,981 | public-apis/public-apis |
| JavaScript | 8,413 | 36M | 1,924 | affaan-m/ECC |
| TypeScript | 6,679 | 41M | 2,297 | freeCodeCamp/freeCodeCamp |
| Go | 4,135 | 21.4M | 2,278 | avelino/awesome-go |
| Java | 4,107 | 15.2M | 1,909 | krahets/hello-algo |
| C++ | 3,450 | 14.9M | 2,007 | tensorflow/tensorflow |
| C | 2,559 | 10.1M | 1,937 | torvalds/linux |
| Rust | 2,463 | 13.9M | 2,148 | ultraworkers/claw-code |
| C# | 1,897 | 6.8M | 1,998 | 2dust/v2rayN |
| Shell | 1,645 | 7.7M | 1,959 | obra/superpowers |
눈여겨볼 세 가지
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.555.5k
- 2sindresorhus/awesome😎 Awesome lists about all kinds of interesting topics [NOTE: Pull requests are temporarily disabled until I have a chance to catch up with the existing ones]523.2k
- 3public-apis/public-apisA collective list of free APIs491.5k
- 4freeCodeCamp/freeCodeCampfreeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.457.7k
- 5EbookFoundation/free-programming-books:books: Freely available programming books399.9k
- 6openclaw/openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 🦞392.8k
- 7donnemartin/system-design-primerLearn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.375.2k
- 8nilbuild/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.370.2k
- 9morluto/reaReverse engineer anything with agents, from app behavior down to native binaries.367.1k
- 10jwasham/coding-interview-universityA complete computer science study plan to become a software engineer.363.3k
학습 자료와 큐레이션 목록이 실행 가능한 소프트웨어보다 많다는 점에 주목하세요. 이런 저장소는 엄청난 스타를 모으지만 언어의 엔지니어링 생태계에 대해서는 거의 말해주지 않습니다. 프레임워크나 런타임과 한데 묶으면 비교가 왜곡됩니다.
이 데이터가 말할 수 없는 것
모든 분석은 자신의 한계를 밝혀야 합니다:
- 표본은 이미 인기 있는 프로젝트이지 GitHub 전체가 아닙니다. 여기의 중앙값은 이미 기준을 넘은 프로젝트들 사이의 중앙값이며, 사이트 전체 실제 값보다 훨씬 높습니다.
- 스타는 품질이 아니고 사용량도 아닙니다. 개발자 가시성에 가깝습니다. 실제 중요도보다 훨씬 적은 스타를 가진 핵심 라이브러리가 많습니다.
- 언어 분류는 GitHub의 주 언어 감지를 따릅니다. 파일 바이트 구성에 따라 프론트엔드 프레임워크가 뜻밖의 언어로 분류되기도 합니다.
- 생태계의 나이가 다릅니다. C와 Java는 수십 년의 축적이 있고 Rust는 훨씬 짧습니다. 총합을 직접 비교하는 것은 젊은 쪽에 불리합니다.
정리
기술 스택을 고르는 중이라면 "어느 언어에 프로젝트가 더 많은가"보다 나은 질문은 내가 필요한 특정 영역에 성숙한 선택지가 몇 개나 있는가입니다. 전체 개수는 그 질문에 놀라울 만큼 도움이 되지 않습니다.
위 표는 매일의 크롤링과 함께 자동으로 갱신됩니다. 랭킹에서 같은 데이터를 언어와 카테고리별로 직접 나눠 볼 수 있습니다.
이 글의 모든 수치는 데이터베이스에서 실시간으로 읽어오며 매일 갱신됩니다.