D (ohjelmointikieli)
Wikipedia
Kuva:- | |
Paradigma | olio, imperatiivinen |
Tyypitys | vahva, staattinen |
Yleinen suoritusmalli | - |
Muistinhallinta | roskienkeruu, manuaalinen |
Julkaistu | 1999 |
Kehittäjä | Walter Bright |
Viimeisin vakaa versio | - |
Viimeisin julkaisupäivä | 11. maaliskuuta, 2007 |
Viimeisin kehitysversio | 1.009 |
Merkittävimmät toteutukset | DMD, GDC |
Vaikutteet | C, C++, Java, C#, Ruby, Lisp |
Vaikuttanut | - |
Murteet | - |
Käyttöjärjestelmä | Windows, Linux, Mac OS X, FreeBSD, AIX |
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 ohjelmamoduulit, 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 tuetakaan. Lisäksi on mahdollista asentaa GDC dsss-paketinhallintajärjestelmän kautta, joka on puolestaan D-ympäristön vastine RubyGems-järjestelmälle.
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. Tammikuun 2. 2007 ilmestyneen DMD 1.00-kääntäjän myötä kääntäjä sisältää asetuksen, jolla kääntäminen voidaan pakottaa noudattamaan version 1.00 ominaisuuksia, jolloin koodin rikkoontumisen pitäisi vähentyä päivitysten johdosta.
[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. Vakiotietotyypit tarjoavat oletustoiminnallisuuden, mutta iterointi voidaan tarvittaessa erikoistaa määritellyissä luokissa.
[muokkaa] Aiheesta muualla
- Digital Mars: D programming language
- DSource, Open Source Development for the D Programming Language
- Wiki4D, The wiki for the D Programming Language