<?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>IT blog &#187; staticky a dynamicky typované jazyky</title>
	<atom:link href="http://szj.cz/tag/staticky-a-dynamicky-typovane-jazyky/feed/" rel="self" type="application/rss+xml" />
	<link>http://szj.cz</link>
	<description>internet, linux, novinky, programování</description>
	<lastBuildDate>Sat, 12 Sep 2015 11:14:32 +0000</lastBuildDate>
	<language>cs-CZ</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.2</generator>
	<item>
		<title>Vlastnosti typových systémů</title>
		<link>http://szj.cz/vlastnosti-typovych-systemu/</link>
		<comments>http://szj.cz/vlastnosti-typovych-systemu/#comments</comments>
		<pubDate>Sat, 28 Mar 2015 10:24:38 +0000</pubDate>
		<dc:creator><![CDATA[fredomgc]]></dc:creator>
				<category><![CDATA[Programování]]></category>
		<category><![CDATA[bezpečně a nebezpečně typované jazyky]]></category>
		<category><![CDATA[silně a slabě typované jazyky]]></category>
		<category><![CDATA[staticky a dynamicky typované jazyky]]></category>
		<category><![CDATA[vlastnosti typových systémů]]></category>

		<guid isPermaLink="false">http://szj.cz/?p=941</guid>
		<description><![CDATA[K čemu v programování slouží typový systém? Jde o nástroj k porovnávání datových typů jednotlivých proměnných, které se provádí před operací v libovolném výrazu. Díky typovému systému zajistíme, že nedojde k chybě spočívající v kombinaci špatných datových typů (například když se pokusíme sečíst číslo a textový řetězec). Silně a slabě typované jazyky Typový systém může [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://szj.cz/wp-content/uploads/2015/03/vlastnosti-typovych-systemu.png"><img class="alignleft size-full wp-image-946" alt="vlastnosti-typovych-systemu" src="http://szj.cz/wp-content/uploads/2015/03/vlastnosti-typovych-systemu.png" width="128" height="128" /></a>K čemu v programování slouží <strong>typový systém</strong>? Jde o nástroj k porovnávání datových typů jednotlivých proměnných, které se provádí před operací v libovolném výrazu. Díky typovému systému zajistíme, že nedojde k chybě spočívající v kombinaci špatných datových typů (například když se pokusíme sečíst číslo a textový řetězec).</p>
<h2>Silně a slabě typované jazyky</h2>
<p>Typový systém může na problematiku nahlížet dvěma způsoby. <strong>Silně typované</strong> programovací jazyky striktně vyžadují pouze předem vymezené datové typy. Každá operace v takovém jazyce má proto určené jaké datové typy argumentů akceptuje. Do této kategorie patří např. Java nebo C.</p>
<p>Naopak tomu <strong>slabě typovaný jazyk</strong> se snaží operaci provést za každou cenu a proto přistupuje k <strong>přetypování</strong>. Vraťme se k příkladu z úvodu. Součet čísla a textového řetězce zdá se nedává smysl, ovšem co když v textu máme uložené opět číslo? Pak jazyku nic nebrání v tom, aby provedl přetypování textu na číslo a vypočítal výsledný součet. Ač se popsané chování může jevit jako jednoznačná výhoda, záleží na úhlu pohledu, někdy mohou díky této slabé kontrole datových typů vznikat hůře odhalitelné chyby. Popsaným způsobem se chová např. PHP nebo JavaScript.</p>
<h2>Staticky a dynamicky typované jazyky</h2>
<p>Programovací jazyk, který datové typy proměnných zjišťuje <strong>staticky</strong>, provádí vstupní analýzu kódu, během které je schopný odhalit datový typ každé proměnné. Napomáhá tomu mimo jiné to, že datový typ je zpravidla nutno <strong>deklarovat</strong>. Díky tomu pak překladač může lépe optimalizovat vytvářený kód (přesně totiž ví, s čím přichází do styku). Uvedené informace se vztahují k většině dnešních programovacích jazyků.</p>
<p>Existuje ovšem i jiný přístup. Co kdybychom datový typ zjistili až za běhu programu? Pak může jedna proměnná obsahovat několik naprosto rozdílných hodnot. Nemluvíme zde proto o <strong>typu proměnné</strong> (to platí pro staticky typované jazyky) ale o <strong>typu hodnoty</strong>. S uvedeným přístupem přichází např. jazyk Perl.</p>
<h2>Bezpečně a nebezpečně typované jazyky</h2>
<p>U <strong>bezpečně typovaných</strong> jazyků máme zajištěno, že pokud je operace proveditelná (tedy je splněna náležitost v podobě správných argumentů), tak vždy bude operace úspěšně dokončena. Nestane se zkrátka, že kvůli prováděné operaci aplikace spadne.</p>
<p>Naopak tomu jako už název prozrazuje <strong>nebezpečně typované</strong> jazyky dávají programátorovi šanci dostat výpočetní proces do nekonzistentního stavu. Díky existenci <strong>pointeru</strong> je poměrně jednoduché tohoto cíle dosáhnout v jazyce C nebo C++. Můžeme totiž různě přesouvat obsahy proměnných i obměňovat místa, kam v paměti ukazujeme.</p>
<pre class="brush: cpp; title: ; notranslate">
void main()
{
    int *x = 0; //nulový ukazatel (NULL pointer)
    *x = 42; //chyba, na toto nulové místo se snažíme uložit hodnotu
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://szj.cz/vlastnosti-typovych-systemu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
