středa 4. března 2015

Jak jsem neuměl matematiku a dnes s ní podnikám

Pamatuji si na to, jako by to bylo včera. Tehdy jsem byl v 9. třídě Základní školy a zrovna ten den se psaly přijímačky z matematiky na Střední. Před testem jsem si v celku věřil, protože mi matematika relativně šla (aspoň tedy to byl můj osobní pocit), takže test dopadl relativně v pohodě (na školu jsem se dostal), ale následný střet s realitou byl mnohem horší.

Jak to tak ale bývá, tak realita byla trochu někde jinde. Já jsem přišel z vesnické školy, takže jsem uměl jen to, kam jsme se dostali a většina informací pro mě byla naprosto nová, a to tempo ... no, při vzpomínce na to, se mi otvírá nůž v kapse.

Hlavní myšlenkou tohoto příspěvku ale měla být ještě informace, že mě baví programování (a doufám, že to je vidět), takže jsem tento předmět poctivě studoval a doma si psal své vlastní programy. Vůbec mě ale nebavilo psát programy, které měly něco konkrétního vyřešit, ale postupně jsem se začal spíše zabývat teorií, zejména vymýšlením a psaním algoritmů. Tím jsem narazil na skutečnou matematiku, kdy jsem řešil nové typy problémů, ke kterým jsem v té době ještě neměl znalosti.

A co ta matematika?

No, prošel jsem. V prváku za čtyři, ve druháku za tři a dál se chlubit radši nebudu. Musíte ale pochopit podstatu.

Vymýšlení algoritmů mi úplně změnilo nastavení mozku (nebo mám aspoň takový pocit), dokonce se domnívám, že v Booleově algebře a dvojkové soustavě zvládám přemýšlet mnohem efektivněji, než v jakémkoli "lidském" jazyce. Totiž, když dostanu nějaký nový a neznámý úkol, tak jej nejprve řeším algoritmicky a až později "klasickou tradiční metodou".

Poznámka: Díky tomuto přístupu jsem se mnohokrát setkal s názorem, že jsem bezcitný, že si o sobě myslím, že jsem stroj (robot), že svět funguje jinak, bla, bla, bla, ... No, ale jaký jazyk je k popisu světa lepší, než právě matematika a z toho odvozené algoritmy a programovací jazyky?

Co jsem tedy programoval?

Vždycky jsem chtěl napsat nějaký program, který pomůže mnoha lidem (a hlavně mě) a za který získám to nejcennější - uznání.

Začal jsem tedy přemýšlet o tom, jak spojit něco, co mě baví - přemýšlení o logických problémech, vymýšlení algoritmů, psaní kódů; s tím, co potřebuji - naučit se rychle počítat na papíru. Začal jsem tedy pracovat na matematické kalkulačce, která měla toto všechno spojovat.

Při vývoji jsem byl dlouhá léta kritizován, že něco takového vůbec nemohu zvládnout a že to je akorát ztráta času (vždyť existuje Wolfram, ne?), ale já jsem to vydržel a po mnoha nezdarech jsem vydal první verzi svého programu v podobě webového vyhledávače VikiTron (možná jste o něm jeden čas slyšeli na Google+, byl jsem s ním na Junior Internetu, prezentoval jsem ho v Googlu a tak dále).

Poznámka: Vůbec nezastírám skutečnost, že jeden z důvodů, proč můj program byl tvořen formou vyhledávače byl fakt, že jsem chtěl "trumfnout" pana Petra Hejla s jeho Hlodačem. Mistr Hejl nakonec svůj výtvor nikdy nedokončil, za získané investice si koupil vinný sklípek a pokud neumřel, tak tam spokojeně žije dodnes. Můj program neměl žádného investora, byl psán doma na koleně, celkové náklady se vešly pod 10 000 Kč a za první rok provozu získal stálých 80 uživatelů denně! Co víc, jako nadšený (v té době středoškolák) chtít.

Co dělám dnes

V současné době vyvíjím komerčně zaměřený web Mathematicator.com (který je ale jinak zdarma), běží na něm můj původní algoritmus (divím se, že jsem ještě neměl čas ho přepsat) a matematika mě opravdu začala bavit. Ale ne ta matematika, která se vyučuje ve školách (ta je opruz), ale ta, kterou umím já v takové podobě, jak ji chápu.

Stejně mám ale z něčeho strašně krásný pocit, s kterým se s vámi všemi chci podělit. Když jsem po dlouhých letech našel ve svém pokoji kopii toho přijímacího testu, tak jsem se zadíval do zadání a řekl si: "Jak jsem toto mohl nechápat?". Zkusil jsem to zadání přepsat do mé aplikace a světe div se - program našel správné řešení. V tu chvíli mi okamžitě vyletěly slzy do očí a zamyslel jsem se, co je životním cílem všech dobrých programátorů, inženýrů, vědců, Kolesologů a dalších technických profesí; je to radost z toho, že po letech zvládnete vyřešit své staré problémy tak, že je stroj bude příště eliminovat za vás bez dalšího přemýšlení. Kdybych v té době měl takovou aplikaci k dispozici (kdyby existovala), tak bych se třeba vůbec počítat neučil, protože by mi to přišlo zbytečné a opsal bych jednoduše řešení.

Jsem rád za to, že jsem si na všechno musel přijít sám. Jsem rád za to, že mě pan učitel v prváku naprosto arogantně odrazil slovy: "to stejně v životě nemůžeš dokázat, to stejně nebude nikdy fungovat", protože přesně tato slova byla tou největší motivací k tomu, abych začal.

Příště

Přemýšlím o tom, že bych tento blog znovu obnovil (jestli to udělám se zjistí až podle komentářů a počtu zhlédnutí této stránky s příspěvkem). Pokud by se tak ale nakonec stalo, tak bych rád probral hromadu věcí, které mi jako programátorovi leží na srdci a to, o čem něco vím a také vím, že se o tom každý jen mluví, ale nic neví - třeba heuristika, sémantické prohledávání textů, evoluční algoritmizace, numerické metody, hledání na základě statistiky, optimalizace pro pomalá připojení a další.

A ještě takové moudro na závěr:

Doporučuji vám dávat pozor, protože ti, co tuto školu dokončí, se tím potom budou živit, a ti, co ji neudělají, se tím budou živit hned.