D (ohjelmointikieli)
D-ohjelmointikieli on oliosuuntautunut, imperatiivinen, moniparadigmainen järjestelmäohjelmointikieli. D-kieli on syntynyt C++:n uudelleensuunnitteluna, ja D:n suunnittelutavoitteet pyrkivät yhdistämään käännettyjen kielten suorituskyvyn ja nykyaikaisten dynaamisten kielten turvallisuuden ja ilmaisuvoiman. D-koodi on yleisesti yhtä nopeaa kuin vastaava C++-koodi, mutta samalla lyhyempää ja muistiturvallisempaa.
Esimerkkejä
Esimerkki 1
Tämä esimerkkiohjelma tulostaa komentoriviargumentit. Main-funktio on D-ohjelman aloituskohta, ja args
on joukko merkkijonoja, jotka edustavat komentoriviargumentteja. D:ssä merkkijono
on merkkijono, jota D1:ssä edustaa char[] ja
D2:ssa immutable(char)[].
foreach-lause voi iteroida mitä tahansa kokoelmaa. Tässä tapauksessa se tuottaa indeksin (i
) ja arvon (arg
) sarjan args
. Indeksin i
ja arvon arg
tyyppi on johdettu array argsin
tyypistä.
Esimerkki 2
Seuraavassa esitellään useita D-ominaisuuksia ja D-suunnittelun kompromisseja hyvin lyhyessä ohjelmassa. Se käy läpi words.txt-nimisen
tekstitiedoston rivit, joissa on eri sana jokaisella rivillä, ja tulostaa kaikki sanat, jotka ovat muiden sanojen anagrammeja.
signs2words
on sisäänrakennettu assosiatiivinen matriisi, joka yhdistää dstring-avaimet (32-bittiset / char-avaimet) dstring-matriiseihin. Se on samanlainen kuindefaultdict(list)
Pythonissa.lines(Tiedosto())
tuottaa rivit laiskasti, rivinvaihdon kanssa. Sen jälkeen se on kopioitavaidup-ominaisuudella, jotta
saadaan merkkijono, jota käytetään assosiatiivisen array-joukon arvoina (arrayjen idup-ominaisuus palauttaa muuttumattoman duplikaatin arraysta, mikä on tarpeen, koska dstring-tyyppi on itse asiassaimmutable(dchar)[]
). Sisäänrakennetut assosiatiiviset matriisit vaativat muuttumattomat avaimet.- Operaattori
~=
liittää uuden dstringin assosioituneen dynaamisen array-määritteen arvoihin. toLower
,join
jachomp
ovat merkkijonofunktioita, joita D sallii käyttää metodisyntaksin kanssa. Tällaisten funktioiden nimi on usein hyvin samankaltainen kuin Pythonin merkkijonometodien.ToLower
muuntaa merkkijonon pieneksi,join(" ")
yhdistää merkkijonojen joukon yhdeksi merkkijonoksi käyttäen erotinmerkkinä yhtä välilyöntiä, jachomp
poistaa merkkijonon lopusta rivinvaihdon, jos sellainen on olemassa.Sort
on std.algorithm-funktio, joka lajittelee joukon paikallaan ja luo ainutlaatuisen allekirjoituksen sanoille, jotka ovat toistensa anagrammeja.Sort():
n paluuarvonrelease()
-metodi on kätevä, jotta koodi pysyy yhtenä lausekkeena.- Toinen
foreach
iteroi assosiatiivisen matriisin arvoja, ja se pystyy päättelemäänsanojen
tyypin. avain
annetaan muuttumattomalle muuttujalle, sen tyyppi päätellään.- UTF-32 dchar[] käytetään normaalin UTF-8 char[]:n sijasta, muuten
sort()
kieltäytyy lajittelemasta sitä. On olemassa tehokkaampia tapoja kirjoittaa tämä ohjelma, jotka käyttävät vain UTF-8:aa.