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
- Digital Mars: D programming language, viralliset sivut
- DSource, D-yhteisön tuottamia projekteja
- Wiki4D, wiki D-kielelle