D (programmeertaal)
De programmeertaal D is een objectgeoriënteerde, imperatieve, multi-paradigma systeemprogrammeertaal. De D-taal is ontstaan als een re-engineering van C++, en de ontwerpdoelen van D proberen de prestaties van gecompileerde talen te combineren met de veiligheid en expressieve kracht van moderne dynamische talen. Inheemse D-code is doorgaans even snel als equivalente C++-code, terwijl ze korter en geheugenveiliger is.
Voorbeelden
Voorbeeld 1
Dit voorbeeldprogramma drukt zijn commandoregelargumenten af. De main-functie is het beginpunt van een D-programma, en args
is een array van strings die de commandoregelargumenten voorstellen. Een string
in D is een array van karakters, voorgesteld door char[]
in D1, of immutable(char)[]
in D2.
De foreach-instructie kan over elke willekeurige verzameling itereren. In dit geval produceert het een reeks indexen (i
) en waarden (arg
) uit de array args
. De index i
en de waarde arg
hebben hun type afgeleid van het type van de array args
.
Voorbeeld 2
Het volgende toont verschillende D-mogelijkheden en D-ontwerpafwegingen in een zeer kort programma. Het doorloopt de regels van een tekstbestand met de naam words.txt
dat op elke regel een ander woord bevat, en drukt alle woorden af die anagrammen zijn van andere woorden.
signs2words is
een ingebouwde associatieve array die dstring (32-bit / char) sleutels mapt naar arrays van dstrings. Het is vergelijkbaar metdefaultdict(list)
in Python.lines(File())
levert op een luie manier lines op, met de newline. Deze moet dan worden gekopieerd metidup
om een string te verkrijgen die kan worden gebruikt voor de associatieve arraywaarden (de eigenschapidup
van arrays geeft een onveranderlijk duplicaat van de array terug, wat nodig is omdat het typedstring
eigenlijkonveranderlijk(dchar)[] is
). Ingebouwde associatieve arrays vereisen onveranderlijke sleutels.- De
~=
operator voegt een nieuwe dstring toe aan de waarden van de geassocieerde dynamische array. toLower
,join
enchomp
zijn stringfuncties die in D kunnen worden gebruikt met een methode-syntaxis. De naam van zulke functies lijkt vaak sterk op die van Python-stringmethoden. DetoLower
converteert een string naar kleine letters,join(" ") voegt
een array van strings samen tot een enkele string met een enkele spatie als scheidingsteken, enchomp
verwijdert een newline van het einde van de string als er een aanwezig is.- De
sort
is een std.algoritme functie die de array sorteert, waardoor een unieke handtekening ontstaat voor woorden die anagrammen van elkaar zijn. De methoderelease()
op de retourwaarde vansort()
is handig om de code als een enkele expressie te houden. - De tweede
foreach
itereert op de waarden van de associatieve array, en kan het typewoorden
afleiden. sleutel
wordt toegewezen aan een onveranderlijke variabele, wordt het type ervan afgeleid.- UTF-32 dchar[] wordt gebruikt in plaats van normale UTF-8 char[] anders weigert
sort() te
sorteren. Er zijn efficiëntere manieren om dit programma te schrijven, die alleen UTF-8 gebruiken.