Skip to content

hexqnt/langrank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌟 LangRank

CI

LangRank — утилита на Rust, которая собирает свежие рейтинги популярности языков программирования (TIOBE, PYPL, Languish), объединяет их с данными Benchmarks Game и вычисляет итоговое ранжирование по методу Шульце.

LangRank poster

🎨 Визуализация итогового рейтинга

📋 Содержание

📚 О проекте

Приложение ориентировано на быструю сверку разных метрик популярности языков. Оно:

  1. Подтягивает сводки рейтингов TIOBE, PYPL и Languish.
  2. Нормализует названия языков и объединяет показатели.
  3. Скачивает CSV Benchmarks Game и извлекает медианное время выполнения задач.
  4. Строит итоговую таблицу по методу Шульце, учитывая популярность и производительность.

🛠️ Сборка и запуск

# Запуск с выводом топ-10 в терминале
cargo run --release

# Подробный вывод с полным Schulze-ранжированием
cargo run --release -- --full-output

💾 Сохранение выгрузок

Каждый флаг можно передать без пути — в этом случае используется значение по умолчанию.

# Сохраняем комбинированные рейтинги и Schulze-таблицу
cargo run --release -- \
  --save-rankings data/output/rankings.csv \
  --save-schulze

# Сохраняем CSV Benchmarks Game в кастомный путь
cargo run --release -- --save-benchmarks data/raw/alldata.csv

🖼️ HTML-отчёт

LangRank умеет генерировать красивую HTML-страницу с итоговой таблицей, которую можно раздавать статически через nginx. Если включён --full-output, в отчёт попадёт полная таблица, иначе — топ‑10.

# Сохранить HTML-отчёт (по умолчанию data/output/report.html)
cargo run --release -- --save-html

# Сохранить HTML-отчёт в кастомный путь
cargo run --release -- --save-html report.html

# Полная таблица в HTML
cargo run --release -- --save-html report.html --full-output

🧮 Алгоритм Шульце

LangRank строит четыре «бюллетеня» предпочтений: по позициям в TIOBE, PYPL, Languish и по скорости выполнения задач. Затем для каждого языка вычисляется количество побед над конкурентами в матрице сильнейших путей Шульце. При равенстве используется комбинированный счёт: доли рейтингов + обратная величина медианного времени.

🤖 Автодополнение команд

Утилита умеет генерировать скрипты автодополнения для популярных оболочек:

# Сгенерировать и установить автодополнение для Bash
cargo run -- completions bash --install

# Вывести скрипт для fish в stdout
cargo run -- completions fish

🌐 Источники данных

🧱 Статическая сборка

Для сборки статического бинарника под Linux/musl используйте скрипт:

./build_musl.sh

Он запускает официальный контейнер clux/muslrust:nightly и собирает релизную версию.