D (ohjelmointikieli)

Wikipedia

Kuva:-
Paradigma olio, imperatiivinen
Tyypitys vahva, staattinen
Yleinen suoritusmalli -
Muistinhallinta roskienkeruu, manuaalinen
Julkaistu
Kehittäjä Walter Bright
Viimeisin vakaa versio -
Viimeisin julkaisupäivä 1. marraskuuta, 2006
Viimeisin kehitysversio 0.173
Merkittävimmät toteutukset DMD, GDC
Vaikutteet C, C++, Java, C#, Ruby
Vaikuttanut -
Murteet -
Käyttöjärjestelmä Windows, Linux
WWW-sivut http://www.digitalmars.com/d/
Uutisryhmä digitalmars.D (news.digitalmars.com)

(muokkaa)

D on Walter Brightin kehittämä oliopohjainen ohjelmointikieli. Se on kehitetty C/C++:n pohjalta ja siinä on uudistettu monia C++:n ominaisuuksia. Lisäksi hyödyllisiksi havaittuja ominaisuuksia on lainattu muista kielistä.

Sisällysluettelo

[muokkaa] Ominaisuudet

D:n suunnittelussa on otettu huomioon C++:n käytössä vuosien aikana kertyneitä kokemuksia. D käyttää monia C++:n konsepteja ja laajentaa toiminnallisuutta toteuttamalla kielen tasolla tuottavuutta lisääviä ominaisuuksia, joita ovat esimerkiksi sopimuspohjainen ohjelmointi, yksikkötestaus, aidot ohjelmamodulit, roskien keruu, ensimmäisen luokan oliot, kehittyneet taulukko- ja assosiatiivinen taulukko-tietotyypit, sisäluokat ja -funktiot, sulkeumat ja uudelleen suunniteltu geneerinen ohjelmointi. D mahdollistaa C++:n lailla matalan tason ohjelmoinnin, jossa apuna voidaan käyttää kääntäjän assembleria. C++:n moniperintä on korvattu tavallisella yksinkertaisella perinnällä, rajapinnoilla ja mixineillä. D:n esittelyt, lauseet ja lausekkeet muistuttavat läheisesti C++:n vastaavia.

[muokkaa] Yhteensopivuus muiden järjestelmien kanssa

D tukee täydellisesti C-kielen ABI-rajapintaa (Application Binary Interface) sekä C:n tietotyyppejä ja mahdollistaa näin suoran pääsyn C-kieliseen ohjelmakoodiin ja kirjastoihin. C:n standardikirjasto on osa standardia D-kieltä. Koska D ei vielä ole standardoitu, tarkoitetaan tällä Digital Marsin referenssi-implementaatiota ja -spesifikaatiota.

C++:n ABI ei ole tuettu, mutta D-kielestä voidaan kutsua C-kielen ABI:n kautta C++-koodia, joka on kääritty C-kielisiin funktioihin. D kuitenkin tukee täysin C++-kielistä COM (Component Object Model) koodia.

[muokkaa] Toteutukset

Nykyiset D:n toteutukset kääntävät ohjelmat suoraan natiivikoodiksi.

D:n frontendin referenssi-implementaatio on julkaistu GPL:n ja Artistic License:n alla. Implementaation tekijänoikeudet omistaa pääosin Digital Mars, muilta osin koodi on joko public domainia tai muun yhteensopivan vapaan lisenssin alla. Referenssikääntäjä DMD perustuu referenssi-implementaatioon, mutta on suljettua lähdekoodia ja toimii ainoastaan Windows- ja Linux-alustoilla. Toinen merkittävä D-kääntäjä, GDC, yhdistää D:n referenssi-implementaation vapaaseen GCC-backendiin. GDC toimii teoriassa kaikilla alustoilla, joilla GCC:kin, ja on lisäksi julkaistu vapaan GPL-lisenssin alla. GDC on käytännön syistä usein jonkin verran jäljessä virallista kääntäjää spesifikaation osalta. Molemmat kääntäjät voi asentaa paketinhallinnan kautta ainakin Gentoo Linuxille, vaikkei niitä virallisesti vielä tuetakaan.

D on yhä aktiivisen kehitystyön alla eikä välttämättä sovellu tuotantokäyttöön, sillä säännölliset muutokset saattavat rikkoa vanhaa koodia. Virallinen Digital Marsin kääntäjä on yhä beta-testausvaiheessa, mutta D:n uutisryhmässä esiteltiin vastikään vakaan 1.0-version julkaisupäiväksi 1. tammikuuta 2007.

[muokkaa] Esimerkki

Avainsanat ovat sinisellä, merkkijonot punaisella, kommentit vihreällä.

[muokkaa] Hei maailma

Tämä esimerkki kirjoittaa ruudulle sanat "Hei maailma!" ja sen jälkeen komentorivin argumentit. Jokaisen D-ohjelman suorittaminen alkaa main funktiosta, ja args on merkkijonojen taulukko, jossa komentorivin argumentit ovat.. Merkkijonoa kuvataan D:ssä kirjaintaulukkona char[]. Tällöin useiden merkkijonojen taulukko on char[][].

import std.stdio;       //tuodaan writefln() funktio
int main(char[][] args)
{
    writefln("Hei maailma!");

    foreach(int i, char[] a; args)
        writefln("args[%d] = '%s'", i, a);
    return 0;
}

foreach lausekkeella voidaan käydä läpi mikä tahansa kokoelma.


[muokkaa] Aiheesta muualla


Tämä ohjelmointia käsittelevä artikkeli on tynkä.
Voit auttaa Wikipediaa laajentamalla artikkelia.