(Překlad slavného článku Douglase Crockforda.) JavaScript, známý také pod jmény LiveScript, JScript a ECMAScript, is je jedním ze světově nejoblíbenějších programovacích jazyků. Prakticky každý počítač na světě má nainstalován nejméně jeden interpret jazyka JavaScript. Popularita JavaScriptu vznikla z jeho role skriptovacího jazyka pro WWW stránky.
I přes tuto obrovskou rozšířenost, je tu jen malé povědomí o JavaScriptu jaku velmi hezkého dynamicky objektově orientovaného programovacího jazyku určeného zdaleka ne jen pro WWW. Proč tomu tak je a proč je tento jazyk tak pochopen?
Jméno
“Java” v jeho jméně by napovídat, že JavaScript nějak souvisí s Javou, že je to jeho podmnožina nebo odlehčená verze Javy. Matoucí jméno přispívá k tomu, že si lidé myslí, že JavaScript je interpretovaná Java. Ve skutečnosti Java je interpretovaná Java. A JavaScript je naprosto jiný jazyk.
JavaScript má je nicméně syntakticky podobný Java, stejně jako Java je podobná k jazyku C. Ale není to díky tomu podmnožina Javy, stejně jako Java není podmnožina C, kvůi podobnosti syntaxe. Vtipné je, že JavaScript je lepší pro aplikace pro které původně byla Java určena.
JavaScript nebyl dokonce ani vyvinut společností Sun Microsystems, autorem Javy. JavaScript vytvořili v Netscapu a původně se měl jmenoval LiveScript, ale toto jméno nebylo dostatečně matoucí.
“Script” nám našeptává, že to není skutečný “velký” programovací jazyk. Pravda je velmi subjektivní a záleží na úhlu pohledu. V porovnání s C, tak JavaScript vyměnil výkon za silně dynamické vlastnosti.
Lisp v kabátu C
JavaScriptová syntaxe podobná C (složené závorky, podoba příkazů jako for apod.) nás ukolébávají, že je to prostě další běžný procedurální jazyk. Chyba lávky, protože JavaScript má mnohem více společného s funkcionálními jazyky jako Lisp or Scheme, než s C nebo Javou. Má pole místo seznamů a objekty místo vlastností, funkce jsou provořadě třídy, má uzávěry (closures), není typově striktní (loose type-control).
Změna
JavaScript byl navržen k běhu uvnitř Netscape Navigatoru. Jeho úspěch z něj učinil povinnou schopnost pro každý webový prohlížeč. To si muselo vynutit jeho určitou změnu. JavaScript is vlastně takový George Reeves programovacích jazyků. Dobře se hodí pro velké množství ne-webových aplikací.
První verze JavaScriptu byly funkčně velmi chudé. Neměli prostředky pro zacházení s vyjímkami, vnitřní funkce (inner fuctions) ani dědičnost. Dnešní JavaScript je však kompletně objektově orientovaný programovací jazyk. Bohužel mnoho názoru na jeho schopnosti vychází z nepochopení.
Po Netscapu se dorozu ujala komise organizace ECMA nad dalším vývojem, jeho rozšiřováním a vypořádání se s jeho největším problémem: existencí příliš mnoha verzí vytvářející další zmatekl.
Chyby v návrhu
Žádný programovací jazyk není dokonalý. JavaScript není vyjímkou a některým věcem by bylo lepší se vyhnout. Např. příliš mnoho klíčových slov, operátor + znamená jak sčítání čísel, tak spojování řetězců simplicitním vynuceným přetypováním, nebo k chybám náchilný příkaz with. Podobné chyby v návrhu jsou příčinou častých programátorských chyb. Naštěstí mnoho těchto problémů se lze vyvarovat dobrý lint programem.
Nedokonalostí je poměrně hodně a bohužel komise ECMAScript se příliš k jejím řešením nemá, spíše se zaměřuje na vytváření nových chyb.
Příšerné implementace
Některé z dřívějších implementací JavaScriptu byly pořádně chybové a vrhaly špatné světlo na celý jazyk. Ke všemu byly tyto implementace použity v ještě horších chybových webových prohlížečích.
Příšerné knihy
Skoro všechny knihy o JavaScriptu jsou prostě příšerné. Obsahují chyby, hloupé příklady, učí špatné praktiky. Důležité vlastnosti jazyka jsou často chabě vysvětleny nebo úplně vynechány. Recenzoval jsem tucty knihy a jediná kniha, kterou můžu doporučit je JavaScript: The Definitive Guide (5. výdání) od Davida Flanagana. (Autoři, pokud jste napsali dobrou chybu, pošlete mi, prosím, váš text.)
Poznámka:
Český překlad, který vydal Computer Press je velmi zastaralé vydání a vůbec neuvažujte o tom si ho koupit. To znamená, že bohužel neexistuje kniha o JavaScriptu v češtině, která by stála za zmínku.
Příšerný standard
Oficiální specifikace jazyka je spravována a publikována organizací ECMA. Tato specifikace je mimořádně k ničemu - nesmírně nepřehledná, a velmi obtížně porozumitělná. Tento fakt mírně zbavuje viny autory knihy. Komise ECMA a TC39 by měli hluboce stydět.
Amatérismus
Většina lidí píšící JavaScript nejsou programátoři. Chybí jim vzdělání a disciplína k psaní dobrých programů. JavaScript má mnohem více možností a síly, než jakou jsou schopni využít. To celé přispělo k reputaci JavaScriptu jako jazyku vhodného maximálně pro amatéry, rozhodně ne však pro profesionální programátory. To však jednoduše není pravda.
Objektová orientovanost
Je JavaScript objektově orientovaný nebo ne? Má objekty obsahující data a metody pracující nad těmito tady. Objekty mohou obsahovat další objekty. Nemá však třídy, ale má konstruktory, které dělají, to co třídy včetně schopnosti chovat se jako proměnné a metody tříd. Nemá třídní dědičnost (class-oriented), ale má prototypovou (prototyped-oriented).
Hlavní dva pilíře vytváření objektů je dědičnost (je A) a zapouzdření (má A). JavaScript umí oboje a díky dynamické povaze exceluje zejména v zapouzdření.
Někdo argumentuje že JavaScript není skutečný objektově orientovaný jazyk, protože neposkytuje skrývání informací mezi objekty (viditelnost private, protected, public z Javy): všichni členové objektů jsou totiž veřejné.
Ale JavaScriptové objekty mohou mít soukromé proměnné a metody. Samozřejmě, je potřeba trochu námahy pro pochopení, protože JavaScript je skutečně nejnepochopenější programovací jazyk na světě.
Někdo argumentuje že JavaScript není skutečný objektově orientovaný jazyk, protože neposkytuje dědičnost. Ale JavaScript podporuje nejen klasickou dědičnost, ale dokonce i paradigmata ke znovu použití kódu.
Originál: Copyright 2001 Douglas Crockford. All Rights Reserved Wrrrldwide.
Překlad: copyright © 2009 Virtage Software, Libor Jelínek.

Casino 1237384704 says: (March 18, 2009 at 2:47 pm) Reply
Casino 1237384704…
Casino 1237384704…
Libor says: (June 10, 2009 at 12:44 pm) Reply
Czech translation is horrible!
apod says: (September 18, 2009 at 5:15 pm) Reply
apod…
Utilising a respectable management program may sure aid you to crunch most of their outstanding loans and also past indebtednesses likewise….