2. (PHP XOR JS) OR (PHP AND JS) ?

Ilustrační obrázek k článku: (PHP XOR JS) OR (PHP AND JS) ?
V tomto článku vyřešíme otázku, zda náš převodník psát v PHP, JavaScriptu (JS) nebo snad obojím? Výsledek Vás určitě překvapí.

Zásadní otázka zní: Kde budeme tento převodník používat? Na serveru (uvažujme PHP), nebo na klientovi (v JavaScriptu)?

Odpověď je podobná jako třeba u tvorby obrázků, grafů... Někdy jej potřebujeme vygenerovat staticky ze serverových dat, jindy dynamicky na klientovi. A i při generování scény nastávají oba případy. Rozhodně ale nechceme kód psát 2x. Potřebujeme tedy nějak vyřešit přenositelnost mezi serverem a klientem. Stejně jako by se nám u kreslení hodilo, kdyby příkazy pro vykreslení grafu nebo obrázku na JS canvas byly shodné s těmi z PHP knihovny GD. Ale nejsou – a tak si vývojář musí buď vytvořit vlastní mezivrstvu, nebo napsat dva různé výstupy. Což je to, čemu se chceme vyhnout.

Některé přístupy, jak řešit přenositelnost mezi PHP a JS:



Možností, jak problém uchopit, je tedy spousta. My ale zkusíme úplně jiný přístup: napsat takový kód, který bude fungovat jak na serveru v PHP, tak v prohlížeči v JS, a přitom vracet stejné výsledky.

Každý zkušený fullstack vývojář vám okamžitě vyjmenuje důvody, proč to nejde:

Problémy při psaní kódu společného pro PHP i JS:

My ale tyto překážky nebereme jako důvod, proč to nejde. Naopak – jsou to pro nás kreativní výzvy, které nás povedou k novým přístupům a řešením. Ukážeme si, jak dosáhnout toho, co se zdá nemožné.

Opravdu si ukážeme, jak napsat takový kód, který lze spustit jak na PHP serveru, tak v prohlížeči!

K čemu je takový kód dobrý?

Co to jsou izomorfní aplikace?

Izomorfní webové aplikace používají stejný kód na serveru i v prohlížeči.

Mezi PHP vývojáři (ke kterým se počítám) se ale příliš nepoužívají. Viz např. zde. Proč? Logicky: v prohlížeči běží jen JS, takže psát takové aplikace v PHP zdánlivě nejde.

Já si ale myslím, že výhody sdíleného kódu jsou nezanedbatelné – viz např. zde – a že pravidla lze změnit. Izomorfní aplikace podle mě mohou vznikat i s PHP na serveru.

Podle mě je užitečné znát jazyk nebo styl psaní, který umožní sdílení kódu mezi klientem a serverem. Někdy totiž nastanou úkoly, které potřebujeme řešit na obou stranách, ale nechceme psát dvě různé verze. Typicky třeba:


Nicméně i pro toho, kdo zůstane stále u původního PHP či JS jsou tyto konstrukce zajímavé, protože je samozřejmě může použít i jen v jednom z těchto jazyků a tím rozšířit své programátorské schopnosti.


Řez krychlí, čisté CSS bez JS

Pokusil se už někdo o něco podobného?

Snaze napsat kód, který lze spustit ve více jazycích, se říká polyglotní programování. Většina příkladů z Wikipedie je ale spíše hra s parserem než použitelný kód. Zdrojáky bývají zmatené a končí u "Hello, world".

Já budu chtít čistý, přehledný kód. A nejen pro ukázku. Půjdu dál – cílem jsou plnohodnotné programy s funkcionalitou, na kterou si někteří netroufnou ani ve svém hlavním jazyce.

Tohle přece není možné

Programovat tímhle způsobem je samozřejmě vzpoura proti konvencím a výzva všem autoritám, které "vědí", jak se má správně programovat. Je to čistá provokace – ale právě díky ní vznikají nové cesty a formy.

Zároveň jde o návrat ke kořenům, kdy bylo programování považováno za umění, ne za průmyslovou výrobu software s těžkopádnou architekturou a zbytečnými objekty. Ukážeme si místo toho syrové minimalistické obraty a zjednodušení až na dřeň. A spolu s tím i mikrokonstrukce, které připomínají ambigramy (obraz, který při otočení o 180° zobrazí něco zcela jiného) nebo Escherovy perspektivní hříčky. Jen my nebudeme měnit obrázek – budeme střídat PHP a JS.

Tohle je PUNK a SURREALISMUS ve zdrojovém kódu. A tento blog je jeho manifestem. Chcete být součástí vzpoury? Přihlaste se k odběru a těšte se na další kapitoly.

Jaké poučení si můžeme vzít z této kapitoly?

Pamatujte: první krok ke kreativitě je překonat přesvědčení, že něco nejde. A když to překonáte, otevře se vám svět nových možností.

Nenaslouchejte hlasům, že něco nejde.
Předchozí   Následující