~/VibeHandbook

Языки

python.org

Python

Что это

Python — это высокоуровневый язык с динамической типизацией, ценимый за читаемость и обширную экосистему. Он работает повсюду, читается почти как псевдокод и является общепринятым языком науки о данных, машинного обучения, скриптинга и бэкенд-сервисов.

Сильные стороны

  • Мягкая кривая обучения и знаменитый своей читаемостью синтаксис.
  • Огромная экосистема библиотек (PyPI) — numpy, pandas, requests, FastAPI и почти каждый AI/ML-фреймворк.
  • Превосходен для связующего кода, автоматизации, прототипирования и работы с данными.
  • Сильная культура REPL и блокнотов для интерактивного исследования.

Компромиссы

  • Медленный на чистых CPU-нагрузках; GIL ограничивает настоящую многопоточность.
  • Динамическая типизация ловит ошибки типов только во время выполнения, если только вы не добавите аннотации типов плюс проверяющий инструмент вроде mypy или pyright.
  • Управление зависимостями и окружениями (pip, venv, poetry, uv) — постоянный источник трений.
  • Упаковка и поставка автономного бинарного файла неудобна.

Когда обращаться

Обращайтесь к Python, когда хотите двигаться быстро: конвейеры данных, обучение и инференс ML-моделей, скрипты автоматизации, внутренние инструменты и веб-API, где скорость разработки важнее чистой скорости выполнения. Это самый безопасный выбор по умолчанию для всего, что связано с ИИ или данными.

Соответствие вайб-кодингу

ИИ-ассистенты исключительно сильны в Python — это наиболее представленный язык в их обучающих данных, поэтому сгенерированный код обычно идиоматичен и запускаем. Чтобы хорошо управлять ИИ, называйте точные библиотеки и версии, которые хотите (например, «использовать FastAPI и Pydantic v2»), просите аннотации типов, чтобы и вы, и модель оставались на твёрдой почве, и запрашивайте requirements.txt или pyproject.toml заранее, чтобы избежать расхождения версий. Скажите ассистенту добавить небольшой тест или запускаемый блок if __name__ == "__main__", чтобы вы могли проверять каждый шаг, прежде чем двигаться дальше.

from collections import Counter

def top_words(text: str, n: int = 3) -> list[tuple[str, int]]:
    words = (w.lower() for w in text.split())
    return Counter(words).most_common(n)

print(top_words("the cat the dog the bird"))  # [('the', 3), ('cat', 1), ('dog', 1)]