Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!22.04.2024
Jupyter: спостереження
Дивлюся досить непоганий курс Андрія Карпати про програмування нейронних мереж. Що поки вразило, так це те, що курс ведеться цілком в Jupyter - інтерактивному “блокноті” для Python. Я, певно, перший раз бачу його в реальному використанні.
-
Jupyter - це REPL. Я як рубіст добре знайомий з REPL (тобто “run-eval-print loop”). Тільки в Jupyter кожний шматок коду зберігає можливість редагування та перезапуску. Так само як і в інших REPL, весь код має спільну область змінних, та хоч всі шматки можна запустити як цілу програму, але користь саме в тому, що їх можна запускати окремо. Також на відміну від REPL-консолей, в Jupyter можна зручно набрати та запустити цілий блок коду та не звертати увагу на проміжні результати.
-
Одна з перших дій Андрія — оголошення у власному класі методу repr. То є перетворенням об’єкта в рядок для зручнішого перегляду — аналог
to_s
в Ruby чиString()
в Go. Зрозумів, що я майже цього не роблю у своєму коді, а за потребою покладаюся на автоматичне відображення, або переглядаю конкретні атрибути. Скільки ж я за довгі роки надивився на всякіObject(0xdeadbeef)
. -
Взагалі, спостерігаю, що Jupyter (та й REPL взагалі) переносять увагу з коду на дані. Я звик розуміти та розробляти код алгоритмічно та абстрактно, без конкретних даних взагалі — не в останню чергу тому, що для цього код не потрібно запускати. А тут зовсім інший підхід: спочатку окремі приклади — можливо, навіть обчислені вручну — а потім вже узагальнення.
-
Нарешті, ефектно виглядає використання візуалізацій. Це ще одна перевага Jupyter над “просто REPL”. Я сам писав, що графіки спрощують розробку — але як круто, коли можливість побудувати графік з даних вбудована в середовище! Та й не тільки графік, а табличка (для записів з бази даних) або граф (для звʼязків між ними) або дерево (для складної структури) теж корисні.