D (programmeringsspråk)
Programmeringsspråket D är ett objektorienterat, tvingande systemprogramspråk med flera paradigmiska modeller. D-språket uppstod som en omarbetning av C++, och D:s designmål är att kombinera prestanda hos kompilerade språk med säkerhet och uttrycksförmåga hos moderna dynamiska språk. Nativ D-kod är vanligtvis lika snabb som motsvarande C++-kod, samtidigt som den är kortare och minnessäker.
Exempel
Exempel 1
Detta exempelprogram skriver ut sina kommandoradsargument. Funktionen main
är ingångspunkten för ett D-program och args
är en array av strängar som representerar kommandoradsargumenten. En sträng
i D är en matris av tecken som representeras av char[]
i D1 eller immutable(char)[]
i D2.
Foreach-angivelsen kan iterera över vilken samling som helst. I det här fallet producerar det en sekvens av index (i
) och värden (arg)
från arrayen args
. Indexet i
och värdet arg
har sina typer härledda från typen av arrayen args
.
Exempel 2
Nedan visas flera av D:s möjligheter och avvägningar i fråga om D-utformning i ett mycket kort program. Det går igenom raderna i en textfil med namnet words.txt som
innehåller ett annat ord på varje rad och skriver ut alla ord som är anagram till andra ord.
signs2words
är en inbyggd associativ matris som mappar dstring-nycklar (32-bitars/char) till matriser av dstrings. Den liknardefaultdict(list)
i Python.lines(File())
ger rader på ett lamt sätt, med en ny rad. Den måste sedan kopieras medidup
för att få fram en sträng som kan användas för de associativa arrayvärdena (idup-egenskapen för arrays returnerar en oföränderlig kopia av arrayen, vilket krävs eftersom dstring-typen faktiskt äroföränderlig(dchar)[]
). Inbyggda associativa matriser kräver oföränderliga nycklar.- Operatören
~=
lägger till en ny dstring till värdena i den associerade dynamiska matrisen. toLower
,join
ochchomp
är strängfunktioner som D tillåter att man använder med en metodsyntax. Namnet på sådana funktioner är ofta mycket likt Pythons strängmetoder.ToLower
omvandlar en sträng till små bokstäver,join(" ")
sammanfogar en array av strängar till en enda sträng med ett enda mellanslag som separator ochchomp
tar bort en newline från strängens slut om en sådan finns.Sorteringen
är en std.algorithm-funktion som sorterar matrisen på plats och skapar en unik signatur för ord som är anagram av varandra. Metodenrelease()
på returvärdet avsort()
är praktisk för att hålla koden som ett enda uttryck.- Den andra
foreach-analysen
itererar på värdena i den associativa matrisen, vilket gör att den kan härledaordtypen
. nyckel
tilldelas en oföränderlig variabel, och dess typ härleds.- UTF-32 dchar[] används istället för normalt UTF-8 char[], annars vägrar
sort() att
sortera det. Det finns effektivare sätt att skriva det här programmet som bara använder UTF-8.