V poslednom článku som sa zastrájala, že vám idem v dohľadnej dobe vysvetľovať pojem "framework" a priblížiť svet technológií. Ja svoje sľuby plním. Ak toto bude čítať nejaký programátor, nech mi odpustí ten kuchynský žargón, ale tento blog je primárne určený pre ženy a kde najčastejšie nájdete ženy? No predsa v kuchyni. ;-)
Článok začnem definíciou z Wikipedie, podľa ktorej je framework "softwarová štruktúra, ktorá slúži ako podpora pri programovaní a vývoji a organizácii iných softwarových projektov. Môže obsahovať podporné programy, knižnice API, podporu pre návrhové vzory alebo doporučené postupy pri vývoji".
Moje vysvetlenie frameworku
Vieme, že základom pre prípravu toho najjednoduchšieho koláča sú ingrediencie ako vajíčka, múka, cukor v nejakých pomeroch, ktoré by ste v každom ohľade mali dodržiavať, aby sa vám koláč podaril. Každá tá surovina má svoju funkciu vo vzťahu k tým ostatným a pri jej spracovaní sa musí dodržiavať nejaká postupnosť. Vajce drží celú hmotu pohromade ako také lepidlo a robí koláč ľahkým (pričom z bielka sa robí sneh a primiešava sa nakoniec), múka vytvára objem a zahusťuje,... Samozrejme, existujú aj koláče s inými typickými prísadami ako napríklad olej, mlieko, maslo, kypriaci prášok, kakao, ovocie a mnoho iných. Nemôžete povedať, že bez nich koláč nepripravíte, ale keď sa rozhodnete nejakú použiť, mali by ste pridať také množstvo, aby to bolo v rozumných medziach, čiže v rámci nejakých konvencii. Nikto predsa nemá rád gumené koláče, ktoré nemôže ani požuť, alebo koláče ťažké ako kameň.
Receptúry na tie najlepšie koláče sa dedia z pokolenia na pokolenie. Chápte ich ako také frameworky. Každá tá receptúra má nejaký základ (vajíčka, múka, cukor) a potom nejaké suroviny navyše, ktoré tomu koláču dodávajú nejaké funkcie (jablká ho robia šťavnatým, oriešky ľahším, kypriaci prášok do pečiva nadýchanejším), ale ešte vždy máme možnosť k tomu pridať niečo, čo bežne nedávame (príchute, horiace sviečky, marcipánové ozdoby...).
Tak si teraz predstavte, že ste amatérska cukrárka a dostanete objednávku na tri druhy báboviek z piškótového cesta. Niekto by vzal tri rôzne recepty, rôzne mištičky a behal po celej kuchyni s tyčovým mixérom, dookola ho umýval a upiekol by od základu každú jednu bábovku zvlášť. Všetko teda bude robiť trojmo, aby napokon všetky chutili dosť podobne. Niekto sebavedomejší by možno ani nehľadal recepty, len pridával suroviny od oka a riskoval, že niečoho bude priveľa, niečoho príliš málo a tak. Ale potrebujeme to? Sú predsa osvedčené univerzálne postupy, s ktorými sa vám bábovka vždy podarí bez ohľadu na to, ako sa ju rozhodnete dochutiť. Kroky majú nejaké poradie a sú navrhnuté tak, aby vám nezaberali kopu času. Načo si teda komplikovať si prácu a skúšať, či sa to dá urobiť inak? Načo mať stovky receptov pre to isté?
Prečo by sme mali / mohli používať frameworky
Šikovnejšia žienka použije jeden jednoduchý a osvedčený recept, urobí cesto v jednej veľkej mise, rozdelí ho na tretiny, pričom do jednej primieša kakao a do druhej hrozienka. Recept má písaný v prehľadnej forme (asi odstavce), v nejakej zrozumiteľnej reči, žiadne litánie ani odborná terminológia. Nemusí ten recept pol hodiny študovať, aby ho pochopila. Ušetrí veľa času a veľa námahy. Má teda jeden recept ako jeden framework, ktorý jej uľahčí prípravu celého základu a len si ho prispôsobuje. Vieme, že bábovka má byť sladká, ľahká, kyprá... to sú atribúty, ktoré chce úplne každý. Čiže nesnažíme sa nanútiť klientovi niečo, čo už máme vytvorené a kde sú zložky, ktoré si neobjednal, ale vychádzame z potrieb bežnej praxe. Na chute klienta už stačí napasovať výsledný produkt pridaním toho, čo tam chcel mať. Chcel čokoládové kúsky? Kandizované čerešne? OK. Tak mu ich tam dáme.
A presne takto nejako sa "pečú" weby, ktoré si ako zákazníci objednávame. Netreba za tým hľadať zložitú štruktúru. Funkčný základ webov bude úplne rovnaký. Aj spôsob, akým sú pospájané jednotlivé funkčné časti a ako majú pracovať.
Ako framework uľahčuje prácu
Vysvetlím to opäť na príklade.
Dajme tomu, že máme objednávku na tri weby a všade sa bude niečo písať a zverejňovať. Jeden bude online zbierkou kuchárskych receptov, druhý bude školskou nástenkou, tretí sociálnou sieťou. Všade ako registrovaný hosť napíšem text, kliknem na tlačidlo "zverejniť" a text bude online. Jediné, v čom sa weby budú odlišovať, budú nejaké tie prídavné funkcie (zdieľanie príspevkov, pridávanie smajlíkov, fotiek) a potom sa budú líšiť nejakým dizajnom (jeden chce menu vpravo, druhý vľavo, tretí hore). Načo by ste písali každý web od piky a vymýšľali, akým spôsobom vyvoláte zverejnenie textu? To je predsa jedno. Princíp môže byť rovnaký. Načo budete vymýšľať, ako by sa dal pridať obrázok? Však aj to môžu mať všetky tri weby úplne rovnaké. Aj návštevník ocení, ak to nebude nejaká zložitá "klikačka", ale úplne bežný postup, ktorý pozná z iných webov. Programátor má teda tri možnosti.
- Urobí všetky tri weby od základov.
- Použije niektorý z kódov, ktoré už kedysi dávno napísal, kde má veľa funkcionalít, niektoré povyhadzuje, niektoré doprogramuje a celé to napasuje podľa žiadostí klienta.
- Použije svoj alebo nejaký bežne dostupný framework, "ukuchtí" si v ňom celé základy funkčného webu a napokon doprogramuje už len tie časti aplikácie, ktoré budú daný web odlišovať, aby splnil požiadavky zákazníka.
Ktoré riešenie sa vám pozdáva najviac? Mne to tretie, lebo celý web sa mi robiť nechce a nemám na to čas. Nemusím mať tiež k dispozícii práve taký kód, ktorý zákazníkovi bude vyhovovať a na ktorom sa veľa nenarobím.
Mohla by som ísť po tom druhom riešení a takticky klientovi nanútiť všetky funkcie starého webu a nerobiť takmer nič, no automaticky vyvolám podozrenie. Skôr ako k tejto taktike pristúpim, môžem si položiť otázku. Urobím to aj s bábovkou? Však čo ak je môj zákazník alergický na oriešky a ja mám zhodou okolností len taký recept, kde je kakao i oriešky? Poviem mu, aby si dal kúsok bábovky a zajedol to tabletkou potláčajúcou alergickú reakciu? Navrhnem, aby si na svojom webe zdieľanie príspevkov cez Facebook nevšímal, keď si vyslovene nepraje žiadnu spojitosť s Facebookom? Pokiaľ by som mala pracným spôsobom prenikať do niečoho starého a vyhadzovať z toho polovicu vecí, to si rovno môžem spraviť nový web. Koniec koncov, vždy sa v tom starom môže nájsť niečo, čo zabudnem prepísať a bude trapas. Zákazníkovi DM drogérie sa niekde na webe objaví nápis "Drogéria Teta". Hanba na sto rokov. :-D
Vytváranie obsahu vo frameworku má však oproti pečeniu koláča aj jednu super výhodu, lebo tieto programátorské technológie sú už o niečo ďalej než tie naše kuchynské praktiky. Nepotrebujete kuchárku. Vy len dáte rozkazy a on vám to "upečie" sám podľa definovaných pravidiel a v nejakom programovacom jazyku (napr. Ruby), čiže v nejakej forme, štruktúre, terminológii, aby ste do toho mohli kedykoľvek zasiahnuť a vykonať zmeny.
Uznajte, že so správnym a jednoduchým receptom v zrozumiteľnej forme + znalosťou ingrediencií (čo sa s čím mieša, v akom poradí, akým spôsobom, čo sa dá nahradiť) je každá žena hviezdou domácnosti. Podstatou celého programovania vo frameworku Ruby on Rails je to isté. Znalosť postupu, akým podnietite vytvorenie základov webu aj s jeho funkciami, znalosť jednotlivých komponentov a prepojení + znalosť jazyka.
Lenže pozor, lebo vy predsa nechcete vytvárať weby navzájom si podobné ako vajce vajcu. Aby ste mohli pridávať funkcie, budete musieť naučiť jazyk HTML, ktorému dodáte nejaký štýl (CSS) a s ich pomocou si personalizujete web presne podľa potrieb. Nie je to ľahké. Veď upiecť dobrý koláč tiež vyžaduje nejaký cvik. Už musíte tú svoju rúru poznať a vedieť, z ktorej strany vám tá potvora pripeká koláče. My ženy sme však povestné svojou všestrannosťou a schopnosťou vidieť súvislosti a venovať sa viacerým veciam naraz. Toto je pre dobrého programátora absolútne MUST.
Zdá sa vám to aj tak ťažké? Nezúfajte. Však ak sa aj nenaučíte kódiť, môžete zvládnuť aspoň základy personalizácie webov. Nie je až takou vedou vylepšiť si web či blog. S trochou snahy to zvládnete.
Zverejnenie komentára
Ďakujem za to, že ste si našli čas, prečítali článok a zanechali komentár k tejto téme. Vážim si to. ♥ Ostatných poprosím, aby mi sem nevkladali odkazy na Giveaway ani odkazy do e-shopov. Reklamy tu nechcem. Ďakujem.