D (programovací jazyk)

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
{{{název}}}
Paradigma: multiparadigmatický: imperativní, objektově orientovaný, funkcionální, generický, paralelní
Vznikl v: 2001[1]
Vývojář: Walter Bright, Andrei Alexandrescu (od roku 2006)
Poslední verze: 2.065 / 1.073[1][2] / 24.2.2014[3]
Typová kontrola: silná, statická
Hlavní implementace: DMD (referenční implementace), GDC, LDC
Ovlivněn jazyky: C, C++, C#, Java, Eiffel, Python, Ruby
Ovlivnil jazyky: MiniD, DScript, Vala, Qore
OS: DMD: Linux, FreeBSD, Windows, Mac OS X, GDC, LDC: UN*X, Windows, Mac OS X
Licence: GPL/Artistic (DMD frontend), Boost (standardní knihovna a runtime), Dostupný kód (DMD backend), Plně open-source (LDC a GDC)[4]
Web: dlang.org

Programovací jazyk D je objektově-orientovaný, imperativní, multi-paradigmatický a systémový programovací jazyk, jehož autorem je Walter Bright z firmy Digital Mars. Vznikl jako předělávka jazyka C++, ale není to totéž. D přestavěl některé rysy C++ a je ovlivněn jazyky jako Java, C#, Eiffel a Python. Stabilní verze 1.0 byla vydána 2. ledna 2007.

Designové cíle jazyka D jsou zkombinovat výkon kompilovaných jazyků s bezpečnostní a expresivní silou moderních dynamických jazyků. Idiomatický D kód je obvykle stejně rychlý jako ekvivalentní C++ kód a přitom je kratší a paměťově bezpečný. Typová inference a automatická správa paměti umožňují rychlejší vývoj, přičemž bounds checking, design by contract, popř. typový systém připravený na paralelní programování pomáhají omezit počet chyb.

Vlastnosti[editovat | editovat zdroj]

D se poučil tam, kde má v praxi C++ problémy. I když používá mnoho konceptů jazyků C a C++, také se některých zbavuje, a tudíž není kompatibilní s C/C++ zdrojovým kódem. Přidává do funkcionality C++ implementací design by contract, unit testy, pravé moduly, garbage collection, first class pole, asociativní pole, dynamická pole, array slicing, vnořené funkce, vnořené třídy, closures a lambda funkce, anonymní funkce, interpretaci jazyka při kompilaci, lazy evaluation a redesign template syntaxe. D může být stejně jako C++ použit pro nízkoúrovňové programování díky zabudované podpoře inline assembleru. Vícenásobná dědičnost je nahrazena rozhraními podobně, jako v Javě a mixiny. Syntaxe deklarace, příkazů a výrazů je stejná, jako v C++.

Inline assembler představuje rozdíl mezi D a aplikačními jazyky jako Java a C#. Inline assembler umožňuje programátorovi vkládat kód v assembleru, což je technika používaná systémovými programátory pro přístup k nízkoúrovňovým vlastnostem procesoru. To je zapotřebí při psaní programu který bude pracovat přímo s hardwarem, jako například operační systém a ovladače zařízení.

D má zabudovanou podporu dokumentačních komentářů a podporuje automatické generování dokumentace.

Ukázka kódu[editovat | editovat zdroj]

Tento program vytiskne předané parametry. Funkce main je vstupní bod programu, a args je pole řetězců obsahující parametry příkazové řádky. Řetězec (string) je v D definovaný jako alias na immutable(char)[] (pole neměnitelných znaků).

Smyčka foreach projde postupně všechny řetězce v poli args a vypíše je pomocí funkce writefln (formátovaný výstup s odřádkováním). Jednotlivým argumentům ve foreach je automaticky přiřazen datový typ podle kontextu; i datový typ int, line typ string. i zároveň slouží jako automatický index určující kolikátým prvkem je právě iterováno.

import std.stdio : writefln;
 
void main(string[] args)
{
    foreach (i, arg; args)
        writefln("args[%d] = '%s'", i, arg);
}

Externí odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku D (programming language) na anglické Wikipedii.

  1. a b changelog
  2. http://dlang.org/changelog.html
  3. http://forum.dlang.org/post/jhfdcu$iht$1@digitalmars.com
  4. http://dlang.org/faq.html