<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Virtage Devblog &#187; JavaScript</title>
	<atom:link href="http://devblog.virtage.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.virtage.com</link>
	<description>Blogs and tutorials mostly on Java client-side (Java SE) and server-side (Java EE) and Ubuntu Linux.</description>
	<lastBuildDate>Sun, 05 Feb 2012 08:43:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>cs: JavaScript: Nejnepochopenější programovací jazyk světa</title>
		<link>http://devblog.virtage.com/2009/01/cs-javascript-nejnepochopenejsi-programovaci-jazyk-sveta/</link>
		<comments>http://devblog.virtage.com/2009/01/cs-javascript-nejnepochopenejsi-programovaci-jazyk-sveta/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 14:11:51 +0000</pubDate>
		<dc:creator>Libor Jelinek</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[překlady]]></category>

		<guid isPermaLink="false">http://devel.virtage.com/?p=18</guid>
		<description><![CDATA[(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 [...]]]></description>
			<content:encoded><![CDATA[	<p>(Překlad slavného článku <a href="http://javascript.crockford.com">Douglase Crockforda</a>.) 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 <span class="caps">WWW</span> stránky.</p>

	<p><span id="more-18"></span></p>

	<p>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 <span class="caps">WWW</span>. Proč tomu tak je a proč je tento jazyk tak pochopen?<br />
<h2>Jméno</h2><br />
<span style="font-style: italic;">&#8220;Java&#8221;</span> 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.</p>

	<p>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.</p>

	<p>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í.</p>

	<p><span style="font-style: italic;">&#8220;Script&#8221; </span>nám našeptává, že to není skutečný &#8220;velký&#8221; 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.<br />
<h2>Lisp v kabátu C</h2><br />
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 <a href="http://javascript.crockford.com/little.html">Lisp or Scheme</a>, 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).<br />
<h2>Změna</h2><br />
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ý <a href="http://www.amazon.com/exec/obidos/ASIN/B000KWZ7JC/wrrrldwideweb" target="amazon">George Reeves</a> programovacích jazyků. Dobře se hodí pro velké množství ne-webových aplikací.</p>

	<p>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í.</p>

	<p>Po Netscapu se dorozu ujala komise organizace <span class="caps">ECMA</span> 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.<br />
<h2>Chyby v návrhu</h2><br />
Žá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  <span style="font-family: monospace;">with</span>. 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ý <a href="http://www.crockford.com/javascript/lint.html">lint</a> programem.</p>

	<p>Nedokonalostí je poměrně hodně a bohužel komise <span class="caps">ECMAS</span>cript se příliš k jejím řešením nemá, spíše se zaměřuje na vytváření nových chyb.<br />
<h2>Příšerné implementace</h2><br />
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.<br />
<h2>Příšerné knihy</h2><br />
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 <span style="font-weight: bold;">jediná kniha, kterou můžu doporučit </span>je <a href="http://www.amazon.com/exec/obidos/ASIN/0596101996/wrrrldwideweb" target="_blank">JavaScript: The Definitive Guide (5. výdání)</a> od Davida Flanagana. (Autoři, pokud jste napsali dobrou chybu, pošlete mi, prosím, váš text.)</p>

	<p><span style="font-style: italic;">Poznámka:</span><br style="font-style: italic;" /><span style="font-style: italic;">Č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.</span><br />
<h2>Příšerný standard</h2><br />
<a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" target="ecma">Oficiální specifikace jazyka</a> je spravována a publikována organizací <a href="http://www.ecma-international.org/"><span class="caps">ECMA</span></a>. Tato specifikace je mimořádně k ničemu &#8211; nesmírně nepřehledná, a velmi obtížně porozumitělná. Tento fakt mírně zbavuje viny autory knihy. Komise <span class="caps">ECMA</span> a TC39 by měli hluboce stydět.<br />
<h2>Amatérismus</h2><br />
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.<br />
<h2>Objektová orientovanost</h2><br />
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).</p>

	<p>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í.</p>

	<p>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é.</p>

	<p>Ale <a href="http://www.crockford.com/javascript/private.html">JavaScriptové objekty <span style="font-style: italic;">mohou</span> mít soukromé proměnné a metody</a>. Samozřejmě, je potřeba trochu námahy pro pochopení, protože JavaScript je skutečně nejnepochopenější programovací jazyk na světě.</p>

	<p>Někdo argumentuje že JavaScript není skutečný objektově orientovaný jazyk, protože neposkytuje dědičnost. Ale <a href="http://javascript.crockford.com/inheritance.html">JavaScript podporuje nejen klasickou dědičnost, ale dokonce i paradigmata ke znovu použití kódu</a>.</p>

	<p><em><a href="http://javascript.crockford.com/javascript.html">Originál</a>: Copyright 2001 <a href="mailto:douglas@crockford.com">Douglas Crockford.</a> <a href="http://www.crockford.com/" target="_top">All Rights Reserved Wrrrldwide.</a></em></p>

	<p><em>Překlad: copyright © 2009 Virtage Software, Libor Jelínek.</em></p>]]></content:encoded>
			<wfw:commentRss>http://devblog.virtage.com/2009/01/cs-javascript-nejnepochopenejsi-programovaci-jazyk-sveta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

