Kapitola 24: Velký projekt – Inteligentní dopravní systém

Gratuluji! Dostali jste se až na konec. Už nejste jen studenti, jste začínající softwaroví inženýři. A jako inženýři víte, že napsat kód je jen polovina práce. Druhá polovina je zajistit, aby ten kód byl použitelný, udržovatelný a srozumitelný pro ostatní. V této závěrečné kapitole vytvoříme kompletní projekt: Vlastní verzi aplikace IDOS. Ale tentokrát to nebude jen o kódu. Naučíme se psát profesionální dokumentaci.

24.1 Zadání projektu: Prolog-Express

Cíl: Vytvořit systém pro vyhledávání vlakových spojení.

Požadavky:

  1. Systém musí znát mapu měst a spojů (graf).
  2. Musí umět najít spojení z bodu A do bodu B (i s přestupy).
  3. Musí umět spočítat celkovou cenu a čas jízdy.
  4. NOVINKA: Musí obsahovat kompletní uživatelskou a technickou dokumentaci.
IDOS budoucnosti
Obrázek 24.1: Futuristické rozhraní pro vyhledávání spojení.

24.2 Fáze 1: Implementace (Kód)

Zde využijeme vše, co umíme: fakta pro mapu, rekurzi pro hledání cesty a aritmetiku pro výpočty.

/**
 * Prolog-Express: Vyhledávač spojení.
 * Autor: Váš Jméno
 * Verze: 1.0
 */

% --- Databáze spojů ---
% spoj(Odkud, Kam, Cena, CasMinuty).
spoj(praha, brno, 200, 150).
spoj(brno, ostrava, 150, 60).
spoj(praha, plzen, 100, 90).
spoj(plzen, cheb, 50, 45).
spoj(brno, bratislava, 180, 90).
spoj(ostrava, kosice, 40, 30).

% Obojsměrnost (vlaky jezdí i zpět)
linka(X, Y, Cena, Cas) :- spoj(X, Y, Cena, Cas).
linka(X, Y, Cena, Cas) :- spoj(Y, X, Cena, Cas).

% --- Logika hledání ---

% cesta(Start, Cil, SeznamMest, Cena, Cas).
% Základní případ: Přímé spojení
cesta(Start, Cil, [Start, Cil], Cena, Cas) :-
    linka(Start, Cil, Cena, Cas).

% Rekurzivní krok: Přestup
cesta(Start, Cil, [Start | DalsiMesta], CelkovaCena, CelkovyCas) :-
    linka(Start, Prestup, Cena1, Cas1),
    cesta(Prestup, Cil, DalsiMesta, Cena2, Cas2),
    Start \= Cil, % Prevence cyklu (jednoduchá)
    CelkovaCena is Cena1 + Cena2,
    CelkovyCas is Cas1 + Cas2.

24.3 Fáze 2: Dokumentace – Jak to prodat

Kód bez dokumentace je jako mapa bez názvů měst. Nikdo se v něm nevyzná. Profesionální dokumentace má dvě části:

A. Uživatelská příručka (Pro cestující)

Tato část je pro lidi, kteří neumí programovat. Musí být jednoduchá a jasná.

Návod k použití aplikace Prolog-Express

1. Spuštění: Otevřete soubor vlaky.pl v programu SWI-Prolog.

2. Hledání spojení: Do konzole napište dotaz ve tvaru:
?- cesta(mesto_start, mesto_cil, Trasa, Cena, Cas).

3. Příklad: Chci jet z Prahy do Ostravy.
?- cesta(praha, ostrava, T, C, Time).
Výstup: T = [praha, brno, ostrava], C = 350, Time = 210.

B. Technická dokumentace (Pro programátory)

Tato část je pro vaše kolegy (nebo pro vás za půl roku). Popisuje, jak to funguje uvnitř. V Prologu se často používá styl komentářů podobný Javadoc (Pldoc).

/**
 * cesta(+Start, +Cil, -Trasa, -Cena, -Cas)
 *
 * Hledá vlakové spojení mezi dvěma městy.
 *
 * @param Start  Atom, název výchozího města.
 * @param Cil    Atom, název cílového města.
 * @param Trasa  Seznam atomů, posloupnost měst.
 * @param Cena   Číslo, celková cena v Kč.
 * @param Cas    Číslo, celkový čas v minutách.
 */

Klíčový koncept: Bus Factor

Proč píšeme dokumentaci? Představte si "Bus Factor": Kolik členů týmu musí srazit autobus, aby projekt zkrachoval, protože nikdo jiný neví, jak funguje? Pokud je Bus Factor 1 (ví to jen jeden člověk), je to riskantní. Dokumentace zvyšuje Bus Factor a dělá projekt nesmrtelným.

🧪 Závěrečná zkouška: Váš projekt


Závěr knihy

Gratulujeme! Prošli jste cestu od "co je to atom" až po vytvoření vlastního inteligentního systému s dokumentací. Prolog vás naučil myslet jinak. Naučil vás, že programování není jen o příkazech, ale o logice, vztazích a pravdě.

Tato kniha je jen začátek. Svět umělé inteligence je obrovský a vy teď máte klíč k jeho logickým dveřím.

Hodně štěstí při dalším studiu!