ЩО ТАКЕ ПРОГРАМУВАННЯ ВЗАГАЛІ
Курс: Python для аналітиків з нуля
1. ЩО НАВЧИМОСЯ РОБИТИ
Зрозуміємо базову ідею програмування: що таке програма, як вона виконує інструкції крок за кроком, і чим написання коду відрізняється від роботи в Excel або готових програмах. Після цього модуля ви зможете пояснити колезі, коли варто писати код, а коли достатньо готового програмного забезпечення.
2. ТЕРМІНОЛОГІЯ
3. ТЕОРІЯ
3.1 Програма як послідовність інструкцій
Програма — це набір інструкцій, які комп'ютер виконує по черзі, зверху вниз. Кожна інструкція робить щось конкретне: зберегти число, обчислити суму, вивести текст на екран.
Аналогія з військового життя: бойовий наказ. Там теж є чітка послідовність: спочатку визначаємо обстановку, потім ставимо завдання підрозділам, визначаємо порядок взаємодії, організовуємо управління. Кожен пункт виконується в заданому порядку. Пропустити або переставити місцями — порушити логіку.
Програма працює так само. Якщо написано:
1. Завантажити файл з координатами
2. Для кожної координати обчислити відстань до бази
3. Знайти найближчу точкуКомп'ютер виконає саме в такому порядку. Спочатку завантажить файл. Потім пройдеться по кожній координаті. Потім знайде мінімум. Не навпаки.
3.2 Чим код відрізняється від Excel
Excel — це готовий інструмент з кнопками та формулами. Ви працюєте в межах того, що розробники Excel передбачили. Код — це можливість створити власний інструмент під конкретну задачу.
Ключова різниця: Excel підходить для роботи з даними вручну. Код — для автоматизації. Якщо ви робите щось один раз і бачите всі дані на екрані — Excel. Якщо треба обробити тисячі файлів однаково — код.
3.3 Коли писати код, коли використовувати готове ПЗ
Готове програмне забезпечення (Maltego, Palantir, i2 Analyst's Notebook) — це як укомплектований БТР. Сідаєш і їдеш. Код — як набір деталей і зварювальний апарат. Можеш зібрати що завгодно, але треба вміти.
Практичне правило: якщо задача повторюється більше 3 разів на тиждень і займає більше 15 хвилин — варто подумати про автоматизацію кодом.
3.4 Приклад: 10 файлів vs 10 000 файлів
Ситуація: є журнали радіоперехоплень у форматі CSV. Треба знайти всі записи з певної частоти за останню добу.
10 файлів (за тиждень):
- Відкриваєте кожен файл в Excel
- Ставите фільтр по колонці "частота"
- Копіюєте потрібні рядки в зведену таблицю
- Час: 20-30 хвилин, цілком прийнятно
10 000 файлів (за рік архіву):
- Вручну — кілька тижнів роботи
Помилки неминучі (втома, неуважність)- Якщо зміняться критерії — починати спочатку
- Код: 5 хвилин роботи скрипта, нуль помилок, легко змінити критерії
Той самий скрипт на Python, який обробляє 10 000 файлів:
import pandas as pd
from pathlib import Path
# Параметри пошуку
цільова_частота = 145.500
# Знайти всі CSV у папці
файли = Path('архів_перехоплень').glob('*.csv')
# Обробити кожен файл
результати = []
for файл in файли:
дані = pd.read_csv(файл)
відфільтровано = дані[дані['frequency'] == цільова_частота]
результати.append(відфільтровано)
# Об'єднати та зберегти
pd.concat(результати).to_csv('знайдено.csv')Не треба розуміти кожен рядок зараз. Головне — побачити принцип: 17 рядків коду замість тижнів ручної роботи.
3.5 Аналогія: рецепт (алгоритм) vs готова страва (програма)
Рецепт — це алгоритм. Послідовність кроків: взяти інгредієнти, порізати, змішати, варити 20 хвилин. Рецепт сам по собі не їстівний — це інструкція.
Готова страва — це результат виконання рецепта. Те, що можна їсти.
У програмуванні:
Алгоритм — послідовність кроків для розв'язання задачі (як рецепт)
Код — алгоритм, записаний мовою програмування (рецепт, записаний у кулінарній книзі)
Програма — код, який виконується комп'ютером (приготування страви)
Результат — те, що програма видає (готова страва)Важливий момент: один рецепт можна використовувати багато разів з різними інгредієнтами. Так само один скрипт можна запускати з різними вхідними даними. Написали один раз — використовуєте щодня.
4. КОД З КОМЕНТАРЯМИ
Розглянемо просту програму, яка обчислює відстань між двома точками. Це типова задача для аналітика: є координати двох об'єктів, треба знати відстань.
# Програма для обчислення відстані між двома точками
# Автор: курсант курсу Python для аналітиків
# === ВХІДНІ ДАНІ ===
# Координати першої точки (пост спостереження)
пост_широта = 48.4647 # широта в градусах
пост_довгота = 35.0462 # довгота в градусах
# Координати другої точки (об'єкт спостереження)
об_єкт_широта = 48.5012
об_єкт_довгота = 35.1234
# === ОБЧИСЛЕННЯ ===
# Знаходимо різницю координат
різниця_широти = об_єкт_широта - пост_широта
різниця_довготи = об_єкт_довгота - пост_довгота
# Обчислюємо відстань за теоремою Піфагора
# (спрощена формула для малих відстаней)
відстань_градуси = (різниця_широти**2 + різниця_довготи**2)**0.5
# Переводимо градуси в кілометри
# 1 градус широти ≈ 111 км
відстань_км = відстань_градуси * 111
# === ВИВІД РЕЗУЛЬТАТУ ===
print(f'Відстань до об\'єкта: {відстань_км:.2f} км')Результат виконання:
Відстань до об'єкта: 9.23 км5. РОЗБІР ПО РЯДКАХ
Коментарі (рядки 1-2)
# Програма для обчислення відстані між двома точкамиСимвол # означає початок коментаря. Все після нього до кінця рядка Python ігнорує. Коментарі потрібні для людей, які читатимуть код (включаючи вас через місяць).
Створення змінних (рядки 5-6)
пост_широта = 48.4647
пост_широта — ім'я змінної (коробка з наклейкою)
= — оператор присвоєння ("покласти в коробку")
48.4647 — значення (число з десятковою частиною, тип float)Важливо: = у програмуванні — це не "дорівнює" з математики. Це команда "взяти значення справа і покласти в змінну зліва".
Обчислення (рядок 14)
різниця_широти = об_єкт_широта - пост_широтаPython бере значення з двох змінних, віднімає одне від іншого, результат кладе в нову змінну. Послідовність: спочатку обчислює праву частину, потім результат присвоює змінній зліва.
Піднесення до степеня (рядок 19)
відстань_градуси = (різниця_широти**2 + різниця_довготи**2)**0.5
**2 — піднести до квадрата (у Python це не ^, а **)
**0.5 — квадратний корінь (корінь = степінь 0.5)- Дужки визначають порядок: спочатку обчислюється те, що в дужках
Вивід результату (рядок 27)
print(f'Відстань до об\'єкта: {відстань_км:.2f} км')
print() — функція виводу на екран- f'...' — f-string (форматований рядок), дозволяє вставляти значення змінних
{відстань_км} — вставити значення змінної- :.2f — форматування: 2 знаки після коми
\' — екранований апостроф (щоб Python не плутав з кінцем рядка)6. ЗАВДАННЯ 1: ЗНАЙТИ ПОМИЛКУ
У коді нижче є логічна помилка. Знайдіть її та поясніть, чому результат буде неправильним.
# Обчислення відстані між постом і об'єктом
пост_широта = 48.4647
пост_довгота = 35.0462
об_єкт_широта = 48.5012
об_єкт_довгота = 35.1234
# Обчислення
різниця = об_єкт_широта - пост_широта
відстань_градуси = різниця**2
відстань_км = відстань_градуси * 111
print(f'Відстань: {відстань_км:.2f} км')Питання:
- Що не враховано в обчисленні?
- Який результат видасть програма?
- Як виправити помилку?
Помилка: не враховано різницю довготи. Відстань обчислюється тільки по широті, ігноруючи горизонтальне зміщення.
Результат: програма видасть 0.15 км замість реальних ~9.23 км. Це відстань тільки "на північ", без врахування "на схід".
Виправлення: додати обчислення різниці довготи і використати теорему Піфагора для обох координат:
різниця_широти = об_єкт_широта - пост_широта
різниця_довготи = об_єкт_довгота - пост_довгота
відстань_градуси = (різниця_широти**2 + різниця_довготи**2)**0.57. ЗАВДАННЯ 2: ПРОМПТ ДЛЯ AI
Задача: є три пости спостереження з координатами. Треба знайти, яка пара постів найближча один до одного, і вивести відстань між ними.
Напишіть промпт для AI (Claude або ChatGPT), щоб отримати робочий код для цієї задачі.
Вимоги до промпту:
Чітко описати вхідні дані (координати трьох точок)- Пояснити що треба обчислити
- Вказати бажаний формат виводу
- Попросити коментарі до коду
Напиши код на Python для такої задачі:
8. ЗАВДАННЯ 3 (ОПЦІОНАЛЬНО): НАПИСАТИ САМОМУ
Для тих, хто хоче спробувати написати код самостійно.
Задача: є координати чотирьох кутів прямокутної зони відповідальності. Обчислити периметр цієї зони в кілометрах.
Підказки:
Периметр прямокутника = 2 × (довжина + ширина)
Довжина — відстань по широті (північ-південь)
Ширина — відстань по довготі (захід-схід)- 1 градус ≈ 111 км
Тестові дані:
# Північно-західний кут
пн_зах_широта = 48.50
пн_зах_довгота = 35.00
# Південно-східний кут
пд_сх_широта = 48.40
пд_сх_довгота = 35.15
Очікуваний результат: приблизно 55 км (довжина ~11 км, ширина ~17 км, периметр ≈ 56 км)9. РЕФЛЕКСІЯ
Чеклист: що я маю розуміти після цього модуля
Якщо більшість пунктів "Так" — ви готові до наступного модуля. Якщо є "Ні" — поверніться до відповідного розділу.
10. ЩО ДАЛІ
У наступних модулях ми:
Модуль 0.2: Розберемо, чому саме Python підходить для аналітики та OSINT (порівняємо з Excel, Maltego, Palantir)
Модуль 0.3: Навчимося правильно ставити задачі AI для генерації коду (ключовий навик для офіцера-аналітика)- Модуль 0.4: Визначимо межу між "писати самому" та "делегувати AI"
Модуль 0.5: Розберемо основні поняття програмування без синтаксису (змінні, функції, цикли — на аналогіях)Те, що ви дізнались сьогодні — фундамент. Програма як послідовність інструкцій, код як інструмент автоматизації, вибір між готовим ПЗ і написанням коду. Ці концепції залишаються незмінними незалежно від мови програмування чи конкретної задачі.
Головна думка модуля: програмування — це не магія і не талант. Це навичка, яка набувається практикою. Ваша задача як офіцера-аналітика — не стати програмістом, а навчитися керувати інструментами (включаючи AI) для автоматизації рутини.