Archiv pro měsíc: Březen 2013

Javascript – softwarový mor 21. století

Pokud rozebereme tvorbu webových aplikací na kousky – obsah => HTML, design => CSS a chování =>Javascript, tak ta poslední část se softwarovému světu hodně nepovedla.

Pokud k takové tvorbě přijde člověk který je zvyklý na nějaké dobré vlastnosti mající kořeny v OOP paradigmatu(C++,C#, Java), tak je nemile rozčarován. Ne, opravdu prototypovou dědičnost nepovažuji za něco, co by patřilo do tohoto ranku. Co Javascript umí hodně dobře, tak věci, když to řeknu sprostě – „ojebávat„. Potřebujete za běhu přidat do objektu několik vlastností, není problém ? Potřebujete implementovat skoro klasickou dědičnost, není problém. Tímto způsobem se lze „domilovat“ k něčemu, v čem se skoro dá programovat.

Základem problému mnoha programátorů s Javascriptem, včetně mě, je základní vlastnost Javascriptu –netypovost. Máme proměnou, v tý může být text. Za chvilku tam může být číslo. Za chvilku tam může být třeba funkce. Řeknete si v čem je problém ? To si ohlídám. Bohužel to je mýlka, která přijde s větším projektem. A nepomůže vám žádné vývojové prostředí, žádný komplilátor. Jste vystrčeni na mráz chybovosti a mrznete a mrznete…dokud nezačnete jist sladkosti. Tato vlastnost má i jeden důležitý dopad. Pokud máte vývojové prostředí které zvládá doplňování kódu(codecompletion, intellisence) na základě objektu se kterým programátor aktuálně pracuje, tak v případě Javascriptu má takový nástroj velice omezené možnosti. V kontextu psaní kódu on neví s čím pracujete, tedy může víceméně jen odhadovat či prostě nabídnout vše.

Každá nemoc, má svůj lék vyvstane na mysl. Bohužel situace není tak jednoduchá. Zatím se léčí jen symptomy a to za pomoci různých udělátek, knihoven a frameworků. Třeba já osobně jsem se setkal s Qooxdoo, se které považuji vcelku za dobrý výtvor.

Dalším řešením je se Javascriptu prostě vyhnout. Tedy i když jen na první pohled. I zde se nabízí několik zajímavých způsobů :

    • Typescript od Microsoftu, řeší mnohé neduhy Javascriptu. Tady by se zdálo, že tato záležitost bude jen otázkou Visual Studia. Ale jetbrains se vytáhli a mělo by to jít zprovoznit v jejich opravdu dobrých nástrojích WebStorm i IDEA.
    • Dart od Googlu. Taktéž zajímavý projekt, mající myslím vyšší ambice, než být jen „obalovátkem“.
    • velice zajímavá možnost je použít projekty, které umí transformovat již známé jazyky na „prohlížečový“ Javascript jako třeba GWT nebo jeho bratříčka Vaadin(a).

Zdálo by se, že velmi často nejječnodušší řešení – vytrhnout kořen zla z útrob prohlížečů bude poplatné i ve světě softwarovém. Bohužel v roce 2013 nejsou ani náznaky, že by se k něčemu takovému schylovalo. Nečetl jsem žádnou informaci, že třeba Microsoft a Google, dva největší hráči, by v této otázce našli nebo hledali společné řešení.

Tento článek vystihuje postoj autora k Javascriptu a vůbec si nehraji na žádný nestranný postoj. Javascript mi zkracuje život :-), a nic jiného než pohrdání si nezaslouží. Nicméně znám i jednoho masochistu, který si v Javascriptu libuje. Také znám i jednoho programátora, který se dokáže povznést nad problémy o nichž jsem psal a vyplodit velmi pěkný technický článek, který dává na Javascript trochu jiný pohled. Ovšem pokud se na tuto strastiplnou cestu vydáte, rovnou říkám :“Já vás varoval„.