Šialenstvo menom JavaScript

Kto ma pozná, vie, že neznášam JavaScript. Netajím sa tým. Nadovažok si rád robím srandu aj na adresu Javy a ešte väčšiu na adresu moderných a „progresívnych“ vývojárov webových rozhraní. Tí totiž prepadli absolutnému šialenstvu. JavaScript a jeho rôzne odnože v podobe frameworkov ako je React, Angular, Vue.js, Node.js a desiatky ďalších debilín a nezmyslov ovládli internet. Výmysly postavené na úžasnom jazyku JavaScript sa dostali úplne všade. V mene zjednotenia internetu! Nech jeden jazyk vládne všetkým! Jednoducho… celé zle!

Nie som síce dobrý programátor, ale niečo málo som si s počítačmi odkrútil. Zažil som časy, keď počítače mali pár kB operačnej pamäte a procesory operovali s výkonom v desiatke Hz. Niečo teda o tom celom viem. A preto viem aj to, že JavaScript bol vždy podradný jazyk. Preto ma prekvapuje súčasný stav a nepríčetnosť okolo tohto programovacieho jazyka.

Programujete front end pre databázy? Napíšte to v JavaScripte. Robíte CRM?! JavaScript. Spravujete repozitare? JavaScript. Tvoríte nový eshop, back end či fron end? JavaScript. Desktop aplikácia? JavaScript. Hry? Samozrejme v JavaScripte. Nech si vymyslíte čokoľvek, všade je javascript. Asi to bude skvelá a spoľahlivá vec. Opak je pravdou. Programy sa vlečú, žerú veľa RAM, zasierajú bandwitch a o horore, ktorý postihol vývojárov ani nehovorím. Ale to predsa nikoho netrápi. Hlavné je, že program je. Jeden otras vystriedal druhý. Keď už si človek začal myslieť, že sa zbavil ohavnosti menom Java, tak ju nahradila iná java…

Nárast pracovných ponúk

Trend je jasný. JavaScript je budúcnosť. Na profesii je každá tretia IT ponuka o JavaScripte. Kde tu nejaký Kubernet, Openshift, Ansible a ďalšie zázraky cloudových technológií. Samozrejme všetko s niekoľkoročnou skúsenosťou.

Úsmevné. Situácia sa od mojich školských čias vôbec nezmenila. Stále to tým kreténom v kravatách a dievčinám v nohaviach s blúzkou z HR nedošlo. Tieto „skvelé“ technológie tu s nami sú sotva pár rokov a na našich technických školách sa o tom ešte ani nezačalo hovoriť. A potom plač v médiach, že je nedostatok IT odborníkov. Holt, možno keby sa všetci neopičili po startupoch, ktoré nič nedokončia a znudení IT frajeri neustále nevymýšľali „nové“ nezmysly postavené na trendoch zo Silicon Valley, tak by mohla byť situácia lepšia.

Mnoho vývojárov naletí marketingu a prvotnému ošiaľu. Začnú sa učiť novú technológiu, ktorú naveľa presadia vedeniu vo firmách. Potom sa zrazu dostanú do slepej uličky. Nadšenie opadáva a frustrácia narastá. Firma síce má aký taký produkt, ale nemá nakoniec vývojára, čo by sa oň staral. Frajeri totiž firmu najčastejšie opustia so slovami, že vyhoreli alebo že im iná firma ponúkla viac. Samozrejme. Vyhoria lebo si naložili nezmysel. A samozrejme iná firma ponúkne viac, lebo sú v rovnakých sračkách. A tak im ani nič iné neostáva ako dať motivačný plat aby vyhorených kóderov dostali k technológii, ktorú takmer nikto neovláda a ak aj ovláda, tak už dávno nemá ružové okuliare.

Zázrak, že vôbec niečo funguje

Celé IT je postavené na vrtkavom základe. Je vôbec zázrak, že niečo funguje. Sotva sa jeden problém vyrieši, už je tu niekto s úplne novým riešením, ktoré nie je s ničím spätne kompatibilné a tak už 10x vymyslená vec sa musí znovu prepisovať a prispôsobovať novej paradigme a móde.

Niekto v dobrom úmysle vymyslel objekty. Uvidel to nejaký trtko vo veľkom korporáte a začala sa éra tlačenia objektov do úplne všetkého. Aj vtedy, keď to nebolo vôbec potrebné. Potom si niekto vymyslel dizajny a začalo sa ďalšie prepisovanie. Keď už sa zase nudili a nebolo do čoho pichnúť, tak si vymysleli nové programovacie jazyky. Veď napokon každý chcel byť slávny a byť otcom nejakého vlastného jazyku. Mať vlastné kráľovstvo. Taká trochu nerd móda v IT svete. Kedysi sa pretekali „vedátori“ v tom kto koľko kníh napíše, dnes v IT svete kto koľko jazykov alebo frameworkov vymyslí…

No späť k JavaScriptu. V ranných dobách internetu bol JavaScript užitočný. Také nutné zlo. Čo to ste s ním vedeli spraviť. Nejaké klikátka, volania, farbičky, animácie a kontrola formulárov. Neskôr aj dynamické načítavanie vo forme AJAXu. Ale vždy to bol boj, ktorý sa nedal vyhrať. Kopec nezmyselných znakov, zátvoriek a komická syntax, ktorá sa snažila imitovať jazyk C. Proste otras. A zrazu je všade. Úplne všade. Pomalý, ohavný, nepresný… v tichosti prebral kontrolu nad našimi životmi. Ako sa toto mohlo stať?!

Trocha histórie

Písal sa rok 1993. Spoločnosť Netscape uverejnila svoj prehliadač. Stránky boli jednoduché a nemali žiadne aktívne prvky. To sa zmenilo v roku 1995, keď Brendan Eich vytvoril interpeter pre skriptovací jazyk. Tento jazyk sa pôvodne volal Mocha, neskôr LiveScript, ale nakoniec sa udomácnil pod názvom JavaScript. Predovšetkým preto lebo bol medzi vývojármi ošiaľ okolo programovacieho jazyka Java. Desivé a v mnohých ohľadoch signalizujúce vzostup temnoty.

Situáciu upevnila až spolupráca Netscape s Microsoftom. A všetci vedia ako Microsoft funguje. Vykradol čo mohol a potom si to vydal pod vlastným názvom. Pamätníci veľmi dobre vedia, že hovoríme o Internet Explorer. A tak sa javascript stal viacmenej štandard. V istom bode Microsoft bojoval proti JavaScriptu so svojim ActiveX, ale ten sa nakoniec a našťastie neuchytil. Každopádne JavaScript prežil vo svojej ohavnej podobe až do dnešných dní. Ba čo viac, na svojej ohavnosti nabral ešte viac…

Čo stojí za populartiou JavaScript?

Na internete koluje množstvo popularizačných článkov, ktoré vyzdvihujú JavaScript. Všetky alternatívne riešenia sú považované za príliš komplikované. Napríklad články o generátoroch statických webových stránok, sa často zmieňujú, že čokoľvek mimo javascript je exotické riešenie. Dokonca ho autori udávajú ako mínus.

Obyčajne ľudia, čo tieto články píšu nikdy neprogramovali a dostali za úlohu „vygenerovať“ PR článok o moderných technológiách. Tu je opäť vidieť akú silu majú média na tvorbe trendov. Často nezmyselných. Veď napokon prečo sa vraciame k statickým webom?! Žeby preto, že v minulosti nám niekto tlačil najsamlepší jazyk PHP? Ideálne v kombinácii s dlho presadzovanými relačnými databázmi ako je MySQL?!

Našťastie aj najpomalejší nakoniec prišli k záveru, ktorý som vravel už roky – nepotrebujeme databázy. Takmer všetko sa dá ukladať do súborov. Čo v konečnom dôsledku aj tak všetci robia, keď si zapínajú rôzne cache systémy. Celkovo sa dynamický obsah v reálnom čase preceňuje. Tak ako vtedy bola móda tlačiť „pokrok“ v podobe dynamických webov závislých na externých databázových systémoch, tak aj dnes sa tlačí JavaScript ako všeliek. Bláhové a slepé nasledovanie svetielka na konci tunela…

Zhrňme si, čo popularizátori JavaScript radi hovoria:

  • Javascript je jednoduchý programovací jazyk
    Čiastočne pravda. Keď chcete oživiť tlačítka na stránke tak je to jednoduché. Naučiť sa jQuery je vecou pár hodín. Avšak pri písaní „moderných“ projektov a použití frameworkov sa zložitosť závratne zmení na monštróznosť, ktorá vás vysaje a pripraví o život. Pretože nič nefunguje ako by malo. Budete potrebovať roky praxe aby ste vedeli ako problémy obchádzať. Nainštalovanie Node.js a iných technológii si žiada trpezlivosť. Je to bordel! Rakovina internetu!
  • Javascript nie je závislý na platforme
    Pravda. Toto je jeho veľká prednosť. Stačí vám webový prehliadač a môžete začať písať JavaScript.
  • Javascript je benevoletný na štýl písania kódu
    To že môžete a nemusíte písať objektovo alebo funkcionálne nie je žiadna výhoda. Skôr naopak. Zhoršuje sa čitateľnosť kódu a celkovo objektovo orientované programovanie nie je žiadna výhra. Rozhodne nie v javascripte!
  • Obrovská komunita
    To ešte neznamená, že Vám to pomôže napísať dobrý program. Napokon Donald Knut to vystihol vo svojej knihe geniálne. Ak by jeho knihu čítal každý, tak si kladie otázku, čo urobil zle. Obyčajne mainstreamová cesta a riešenia nie sú správne. Takéto riešenia totiž priťahujú pozornosť prospechárov a wannabe pózerov. Tí radi hľadajú rýchle a na oko funkčné riešenia z ktorých môžu profitovať. Dlhodobejší a širší dopad ich nezaujíma.
  • Dizajnové vzory (MV* model-view-*)
    To že je to hnus nejdem rozvádzať. Naviac nie je to podmienené jazykom, ale autorom a jeho schopnosťami a preferenciami. Moje sú čo najďalej od týchto manažérsko-korporátnych nezmyslov.
  • Štandardizácia ECMAScript
    Píšu o tom ako keby iné jazyky to nemali… To len potvrdzuje, že to musel písať len hrubý ignorant a pisálek.
  • JavaScript je rýchly
    To by ma zaujímalo v ktorom vesmíre.
  • Písanie programov v javascripte je rýchle
    To si asi mýlia s Pythonom alebo Golangom. Nehovorím, že javascript programy sú komplikované na napísanie, no rozhodne nepatria medzi tie programovacie jazyky, kde je znakov najmenej. Samozrejme v dnešnej dobe rôznych IDE by sme tento bod mohli považovať za zanedbateľný, ja však verím, že skúsení mi dajú zapravdu, že nie vždy sa dá na pomalé a komplexné IDE spoľahnúť.

Niekoľko chýb JavaScriptu

V článku od Richard Kenneth Enga sa môžete dozvedieť ako JavaScript dokáže komplikovať život. Ja pridám k tomu ešte jeden bod. JavaScript sa v každom prehliadači správa trošku odlišne. To preto, že každý prehliadač má iný ECMAScript engine. Pri jednoduchých webových aplikáciach to samozrejme nie je žiadny problém. Pre rôzne efekty vznikol jQuery, ktorý vpodstate umožnil javascript používať bez toho aby ste nemali chuť spáchať sepuku. Sú tu však aj ďalšie problémy…

JavaScript nepozná triedy

Za mňa by to nebola chyba. Nie som fanúšik OOP. Avšak JavaScript sa na OOP začalo hrať. A ak niečo v OOP považujem za podstatnú súčasť, tak sú to určite triedy.

JavaScript sa správa nepredvídateľne

Automatické konvertovanie tried nie je problémom len JavaScriptu. Ale je to problém. O to viac, ak robíte na veľkých projektoch, kde potrebujete deklarovať typy. Ale čo sa divíme, JavaScript nebol nikdy mienený ako seriózny programovací jazyk. Je to scriptovací jazyk, ktorý potrebuje interpreter v reálnom čase.

JavaScript bol primárne určený na tvorbu webov

To nie je samozrejme len nevýhoda. Je to však do veľkej miery obmedzenie, ktoré sa niektorí nepríčetní šialenci snažia prekonať. Výsledkom sú prapodivné nápady a frameworky, ktoré sú skôr odrazom šialenstva jej autorov neschopných prijať skutočnosť, že JavaScript na to nebol určený. Bola by však hlúposť nevyužiť potenciál, ktorý sa skrýva za množstvom neschopných webových vývojárov a sľubovať im možnosť písať všetko… No kto by to nebral?!

JavaScript sa ťažko číta

Horšie sa čítajú už len vzorce v Exceli! Je to proste tak.

Debugovanie JavaScript

Hľadanie chýb v JavaScripte je často krát hotové peklo. Kto neskúsil nevie. Ak skúsi, tak zistí 😉

JavaScript je pomalý

To najlepšie na koniec. Rýchlosť.

Podľa mňa hneď po spoľahlivosti asi najpodstatnejšia vec. JavaScript fanúšikovia síce radi tvrdia, že Nodejs prekoná Python a Ruby. Tie sa však nikdy nesnažili o výkon a presadenie sa v kritickej infraštruktúre. Keď tento argument neobstojí, tak dodajú, že ide len o mikrosekundy pri porovnaní s jazykom C. Nuž mikrosekunda k mikrosekunde s desiatkou tisíc dopytov a sme na iných číslach. Ale prečo sa trápiť, že?

Nech si fanúšikovia hovoria čo chcú, moja skúsenosť je v tomto smere jasná. Keď vidím, že je nejaká appka napísana v Electrone, hneď to mažem. Pomalé, nestabilné a nekonzistentné. Ani zadarmo. Snažil som sa tomu dať šancu, ale vždy sa mi to vypomstilo.

Dokonca mám pravideľne chuť skoncovať s WordPressom kvôli gutenbergu, ktorý stojí na Reacte. Aj keď úmysel fajn, ale hodnotenia užívateľov gutenberg editora na wordpress.org mi dáva zapravdu. A síce rozsiahle možnosti využívania REST API a pod. znejú lákavo, využiteľnosť širokou verejnosťou je minimálna. Viac zaváži, že gutenberg nič nedokáže a viac stojí v ceste ako naopak. Je naviac často pomalý a problematický. Nehovorím, že TinyMCE bolo lepšia voľba, ale minimálne nestála užívateľom až tak v ceste.

Prečo je JavaScript všade?

Moja otázka zostáva. Prečo?! Pri všetkých tých odborníkoch na IT, čo dneska univerzity pľujú, mi zastáva rozum. Väčšina dnešného IT stojí na stračej nôžke. Budem sa opakovať; je zázrak, že vôbec niečo funguje. Na druhú stranu komercia a kapitalizmus tlačí IT do záhuby. Takže sa niet čomu čudovať. Za všetkým hľadajte kravaťáka, čo namiesto vízie vidí čísla. A čísla hýbu svetom a JavaScript sa stal obeťou tohto pohybu. Áno, čítate dobre – obeťou.

Dovolím si povedať, že za rozsiahlym rozšírením a popularizáciou je podpora od veľkých spoločností. Tie samozrejme neboli vždy veľké. Ide totiž o malé garážové firmičky, ktoré sú zázračne miliardové biznisy. Lenže v garáži sa nedá hrať veľké divadlo. Čo nás vedie ku kompromisom. Ak ste rychlokvasený programátor s túžbou vyrobiť úspešný startup, tak veľa možností nemáte. JavaScript je často prvý programovací jazyk s ktorým sa stretnete, keď tvoríte prvý web. Naviac väčšina startupov sú len weby, ktoré sa potom snažia tváriť ako appky. Avašak dôležitý je výsledok! A tak garážový rychlokvasený developeri robia ramená a určujú trendy. K tomu im pomáhajú injekcie hladných akcionárov a angel investorov, ktorým je úplne jedno ako appka vyzerá, ale to či dokáže priniesť zisky vytvorením finančnej bubliny. A tak tieto garážové firmičky priťahujú pozornosť pomocou dobrých platov, čo ide ruka v ruke s motiváciou širokej verejnosti. Davová psychóza je na svete!

Ak to teda myslíte s IT vážne a nie ste prospechár, ktorému ide len o peniaze, tak sa na JavaScript pozerajte triezvo. Používajte ho vtedy keď to má zmysel. Nesnažte sa nahradiť programovacie jazyky, ktoré boli vytvorené k špecifickému účelu len preto, že existuje riešenie v jazyku, ktorý poznáte z čias programovania webových stránok. Je to samozrejme tiež cesta. Ale rozhodne nie najlepšia.


Publikovaný

v

od