0% found this document useful (0 votes)
226 views10 pages

D (Programming Language) - Wikipedia, The Free Encyclopedia

The document discusses the D programming language. D is a compiled, multi-paradigm systems programming language that combines the performance of C++ with the expressiveness of modern dynamic languages. D supports imperative, object-oriented, metaprogramming, functional and concurrent programming paradigms and has features like garbage collection and design by contract that help reduce bugs.

Uploaded by

IoakeimTziakos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
226 views10 pages

D (Programming Language) - Wikipedia, The Free Encyclopedia

The document discusses the D programming language. D is a compiled, multi-paradigm systems programming language that combines the performance of C++ with the expressiveness of modern dynamic languages. D supports imperative, object-oriented, metaprogramming, functional and concurrent programming paradigms and has features like garbage collection and design by contract that help reduce bugs.

Uploaded by

IoakeimTziakos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

D(programminglanguage)

FromWikipedia,thefreeencyclopedia

TheDprogramminglanguageisanobjectoriented,
imperative,multiparadigmsystemprogramminglanguage
createdbyWalterBrightofDigitalMarsandreleasedin
2001.Brightwasjoinedinthedesignanddevelopment
effortin2006byAndreiAlexandrescu.Thoughit
originatedasareengineeringofC++,Disadistinct
language,havingredesignedsomecoreC++features
whilealsotakinginspirationfromotherlanguages,notably
Java,Python,Ruby,C#,andEiffel.
D'sdesigngoalsattempttocombinetheperformanceand
safetyofcompiledlanguageswiththeexpressivepowerof
moderndynamiclanguages.IdiomaticDcodeis
commonlyasfastasequivalentC++code,whilebeing
shorterandmemorysafe.[9]
Typeinference,automaticmemorymanagementand
syntacticsugarforcommontypesallowfaster
development,whileboundschecking,designbycontract
featuresandaconcurrencyawaretypesystemhelp
reducetheoccurrenceofbugs.[10]

Contents
1 Features
1.1 Programmingparadigms
1.1.1 Imperative
1.1.2 Objectoriented
1.1.3 Metaprogramming
1.1.4 Functional
1.1.5 Parallel
1.1.6 Concurrent
1.2 Memorymanagement
1.3 SafeD
1.4 Interactionwithothersystems
2 History
3 Implementations
4 Developmenttools
5 Examples
5.1 Example1
5.2 Example2
6 Seealso
7 References
8 Furtherreading
9 Externallinks

Dprogramminglanguage

Paradigm

compiled,multiparadigm:
procedural,objectoriented,
functional,generic

Designedby

WalterBright,AndreiAlexandrescu
(since2006)

Developer

DigitalMars,AndreiAlexandrescu
(since2006)

Firstappeared 2001[1]
Stablerelease 2.070.0[2]/January27,2016[3]
Typing
discipline

strong,static,inferred

OS

DMD:Unixlike(FreeBSD,Linux
etc.),Windows,OSX

License

Boost(DMDfrontend, [4]standard
andruntimelibraries),
sourceavailable(DMD
backend), [5]
Fullyopensource(LDCand
GDC)[6]

Filename
extensions

.d

Website

dlang.org(http://dlang.org)
Majorimplementations

DMD(referenceimplementation),GDC,LDC
Influencedby
C,C++,C#,Eiffel, [7]Java,Python,Ruby
Influenced
MiniD,DScript,Vala,Qore,Swift, [8]Genie
DProgrammingatWikibooks

9 Externallinks

Features
DisdesignedwithlessonslearnedfrompracticalC++usageratherthanfromatheoreticalperspective.Even
thoughitusesmanyC/C++conceptsitalsodiscardssome,andassuchisnotcompatiblewithC/C++source
code.DhashoweverbeenconstrainedinitsdesignbytherulethatanycodethatislegalinbothCandD
shouldbehavethesame.ItaddstothefunctionalityofC++byalsoimplementingdesignbycontract,unittesting,
truemodules,garbagecollection,firstclassarrays,associativearrays,dynamicarrays,arrayslicing,nested
functions,innerclasses,closures,anonymousfunctions,compiletimefunctionexecution,lazyevaluationandhas
areengineeredtemplatesyntax.DretainsC++'sabilitytodolowlevelcoding,andaddstoitwithsupportfor
anintegratedinlineassembler.C++multipleinheritanceisreplacedbyJavastylesingleinheritancewith
interfacesandmixins.D'sdeclaration,statementandexpressionsyntaxcloselymatchesthatofC++.
TheinlineassemblertypifiesthedifferencesbetweenDandapplicationlanguageslikeJavaandC#.Aninline
assemblerletsprogrammersentermachinespecificassemblycodewithinstandardDcode,amethodoftenused
bysystemprogrammerstoaccessthelowlevelfeaturesoftheprocessorneededtorunprogramsthatinterface
directlywiththeunderlyinghardware,suchasoperatingsystemsanddevicedrivers.
Dhasbuiltinsupportfordocumentationcomments,allowingautomaticdocumentationgeneration.

Programmingparadigms
Dsupportsfivemainprogrammingparadigmsimperative,objectoriented,metaprogramming,functionaland
concurrent(actormodel).
Imperative
ImperativeprogramminginDisalmostidenticaltoC.Functions,data,statements,declarationsandexpressions
workjustasinC,andtheCruntimelibrarycanbeaccesseddirectly.SomenotabledifferencesbetweenDand
CintheareaofimperativeprogrammingincludeD'sforeachloopconstruct,whichallowsloopingovera
collection,andnestedfunctions,whicharefunctionsthataredeclaredinsideofanotherandmayaccessthe
enclosingfunction'slocalvariables.
Objectoriented
ObjectorientedprogramminginDisbasedonasingleinheritancehierarchy,withallclassesderivedfromclass
Object.Ddoesnotsupportmultipleinheritanceinstead,itusesJavastyleinterfaces,whicharecomparableto
C++pureabstractclasses,andmixins,whichallowseparatingcommonfunctionalityoutoftheinheritance
hierarchy.Dalsoallowsdefiningstaticandfinal(nonvirtual)methodsininterfaces.
Metaprogramming
Metaprogrammingissupportedbyacombinationoftemplates,compiletimefunctionexecution,tuples,and
stringmixins.ThefollowingexamplesdemonstratesomeofD'scompiletimefeatures.
TemplatesinDcanbewritteninamoreimperativestylecomparedtoC++functionalstylefortemplates.Thisis
aregularfunctionthatcalculatesthefactorialofanumber:

ulong factorial(ulong n)
{
if (n<2)
return 1;
else
return n * factorial(n-1);
}

Here,theuseofstatic if,D'scompiletimeconditionalconstruct,isdemonstratedtoconstructatemplate
thatperformsthesamecalculationusingcodethatissimilartothatofthefunctionabove:
template Factorial(ulong n)
{
static if (n<2)
enum Factorial = 1;
else
enum Factorial = n * Factorial!(n-1);
}

Inthefollowingtwoexamples,thetemplateandfunctiondefinedaboveareusedtocomputefactorials.The
typesofconstantsneednotbespecifiedexplicitlyasthecompilerinferstheirtypesfromtherighthandsidesof
assignments:
enum fact_7 = Factorial!(7);

Thisisanexampleofcompiletimefunctionexecution.Ordinaryfunctionsmaybeusedinconstant,compiletime
expressionsprovidedtheymeetcertaincriteria:
enum fact_9 = factorial(9);

Thestd.string.formatfunctionperformsprintflikedataformatting(alsoatcompiletime,through
CTFE),andthe"msg"pragmadisplaystheresultatcompiletime:
import std.string : format;
pragma(msg, format("7! = %s", fact_7));
pragma(msg, format("9! = %s", fact_9));

Stringmixins,combinedwithcompiletimefunctionexecution,allowgeneratingDcodeusingstringoperationsat
compiletime.ThiscanbeusedtoparsedomainspecificlanguagestoDcode,whichwillbecompiledaspartof
theprogram:
import FooToD; // hypothetical module which contains a function that parses Foo source code
// and returns equivalent D code
void main()
{
mixin(fooToD(import("example.foo")));
}

Functional
Dsupportsfunctionalprogrammingfeaturessuchasfunctionliterals,closures,recursivelyimmutableobjectsand
theuseofhigherorderfunctions.Therearetwosyntaxesforanonymousfunctions,includingamultiple
statementformanda"shorthand"singleexpressionnotation:[11]

int function(int) g;
g = (x) { return x * x; }; // longhand
g = (x) => x * x;
// shorthand

Therearetwobuiltintypesforfunctionliterals,function,whichissimplyapointertoastackallocated
function,anddelegate,whichalsoincludesapointertothesurroundingenvironment.Typeinferencecanbe
usedwithananonymousfunction,inwhichcasethecompilercreatesadelegateunlessitcanprovethatan
environmentpointerisnotnecessary.Likewise,toimplementaclosure,thecompilerplacesenclosedlocal
variablesontheheaponlyifnecessary(forexample,ifaclosureisreturnedbyanotherfunction,andexitsthat
function'sscope).Whenusingtypeinference,thecompilerwillalsoaddattributessuchaspureandnothrowto
afunction'stype,ifitcanprovethattheyapply.
Otherfunctionalfeaturessuchascurryingandcommonhigherorderfunctionssuchasmap,filter,andreduce
areavailablethroughthestandardlibrarymodulesstd.functionalandstd.algorithm.
import std.stdio, std.algorithm, std.range;
void main()
{
int[] a1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
int[] a2 = [6, 7, 8, 9];
// must be immutable to allow access from inside a pure function
immutable pivot = 5;
int mySum(int a, int b) pure nothrow // pure function
{
if (b <= pivot) // ref to enclosing-scope
return a + b;
else
return a;
}
// passing a delegate (closure)
auto result = reduce!mySum(chain(a1, a2));
writeln("Result: ", result); // Result: 15

// passing a delegate literal


result = reduce!((a, b) => (b <= pivot) ? a + b : a)(chain(a1, a2));
writeln("Result: ", result); // Result: 15

Alternatively,theabovefunctioncompositionscanbeexpressedusingUniformFunctionCallSyntax(UFCS)
formorenaturallefttorightreading:
auto result = a1.chain(a2).reduce!mySum();
writeln("Result: ", result);
result = a1.chain(a2).reduce!((a, b) => (b <= pivot) ? a + b : a)();
writeln("Result: ", result);

Parallel
import std.stdio : writeln;
import std.range : iota;
import std.parallelism : parallel;
void main()
{
foreach (i; iota(10).parallel) {
// The body of the foreach loop is executed in parallel for each i
writeln("processing ", i);
}

Concurrent
import std.stdio, std.concurrency, std.variant;
void foo()
{
bool cont = true;

while (cont)
{
receive( // delegates are used to match the message type
(int msg) => writeln("int received: ", msg),
(Tid sender) { cont = false; sender.send(-1); },
(Variant v) => writeln("huh?") // Variant matches any type
);
}

void main()
{
auto tid = spawn(&foo); // spawn a new thread running foo()
foreach (i; 0 .. 10)
tid.send(i);
//
tid.send(1.0f);
//
tid.send("hello"); //
tid.send(thisTid); //
}

send
send
send
send

some integers
a float
a string
a struct (Tid)

receive((int x) => writeln("Main thread received message: ", x));

Memorymanagement
Memoryisusuallymanagedwithgarbagecollection,butspecificobjectscanbefinalizedimmediatelywhenthey
gooutofscope.Explicitmemorymanagementispossibleusingtheoverloadedoperatorsnewanddelete,and
bysimplycallingC'smallocandfreedirectly.Garbagecollectioncanbecontrolled:programmerscanaddand
excludememoryrangesfrombeingobservedbythecollector,candisableandenablethecollectorandforcea
generationalorafullcollectioncycle.[12]Themanualgivesmanyexamplesofhowtoimplementdifferenthighly
optimizedmemorymanagementschemesforwhengarbagecollectionisinadequateinaprogram.[13]

SafeD
SafeD[14]isthenamegiventothesubsetofDthatcanbeguaranteedtobememorysafe(nowritestomemory
thatwerenotallocatedorthathavealreadybeenrecycled).Functionsmarked@safearecheckedatcompile
timetoensurethattheydonotuseanyfeaturesthatcouldresultincorruptionofmemory,suchaspointer
arithmeticanduncheckedcasts,andanyotherfunctionscalledmustalsobemarkedas@safeor@trusted.
Functionscanbemarked@trustedforthecaseswherethecompilercannotdistinguishbetweensafeuseofa
featurethatisdisabledinSafeDandapotentialcaseofmemorycorruption.

Interactionwithothersystems
C'sapplicationbinaryinterface(ABI)issupportedaswellasallofC'sfundamentalandderivedtypes,enabling
directaccesstoexistingCcodeandlibraries.DbindingsareavailableformanypopularClibraries.C's
standardlibraryispartofstandardD.

BecauseC++doesnothaveasinglestandardABI,DcanonlyfullyaccessC++codethatiswrittentotheC
ABI.TheDparserunderstandsanextern(C++)callingconventionforlimitedlinkingtoC++objects.
OnMicrosoftWindows,DcanaccessComponentObjectModel(COM)code.

History
WalterBrightdecidedtostartworkingonanewlanguagein1999.DwasfirstreleasedinDecember2001,[1]
andreachedversion1.0inJanuary2007.[15]Thefirstversionofthelanguage(D1)concentratedonthe
imperative,objectorientedandmetaprogrammingparadigms,[16]similartoC++.
DissatisfiedwithPhobos,D'sofficialruntimeandstandardlibrary,membersoftheDcommunitycreatedan
alternativeruntimeandstandardlibrarynamedTango.ThefirstpublicTangoannouncementcamewithindaysof
D1.0'srelease.[17]Tangoadoptedadifferentprogrammingstyle,embracingOOPandhighmodularity.Beinga
communityledproject,Tangowasmoreopentocontributions,whichallowedittoprogressfasterthanthe
officialstandardlibrary.Atthattime,TangoandPhoboswereincompatibleduetodifferentruntimesupport
APIs(thegarbagecollector,threadingsupport,etc.).Thismadeitimpossibletousebothlibrariesinthesame
project.Theexistenceoftwolibraries,bothwidelyinuse,hasledtosignificantdisputeduetosomepackages
usingPhobosandothersusingTango.[18]
InJune2007,thefirstversionofD2wasreleased.[2]ThebeginningofD2'sdevelopmentsignalledthe
stabilizationofD1thefirstversionofthelanguagehasbeenplacedinmaintenance,onlyreceivingcorrections
andimplementationbugfixes.D2wastointroducebreakingchangestothelanguage,beginningwithitsfirst
experimentalconstsystem.D2lateraddednumerousotherlanguagefeatures,suchasclosures,purity,and
supportforthefunctionalandconcurrentprogrammingparadigms.D2alsosolvedstandardlibraryproblemsby
separatingtheruntimefromthestandardlibrary.ThecompletionofaD2TangoportwasannouncedinFebruary
2012.[19]
ThereleaseofAndreiAlexandrescu'sbookTheDProgrammingLanguageonJune12,2010markedthe
stabilizationofD2,whichtodayiscommonlyreferredtoasjust"D".
InJanuary2011,Ddevelopmentmovedfromabugtracker/patchsubmissionbasistoGitHub.Thishasledto
asignificantincreaseincontributionstothecompiler,runtimeandstandardlibrary.[20]
InDecember2011,AndreiAlexandrescuannouncedthatD1,thefirstversionofthelanguage,wouldbe
discontinuedonDecember31,2012.[21]ThefinalD1release,Dv1.076,wasonDecember31,2012.[22]

Implementations
MostcurrentDimplementationscompiledirectlyintomachinecodeforefficientexecution.
DMDTheDigitalMarsDcompileristheofficialDcompilerbyWalterBright.Thefrontendis
licensedundertheBoostSoftwareLicense.[4]Thebackendsourcecodeisavailablebutnotunderan
opensourcelicense,[5]becauseitwaspartiallydevelopedatSymantecandcannotberelicensedasopen
source.[23]
GDCAfrontendfortheGCCbackend,builtusingtheopenDMDcompilersourcecode.[24]
LDCAcompilerbasedontheDMDfrontendthatusesLLVMasitscompilerbackend.Thefirst
releasequalityversionwaspublishedonJanuary9,2009.[25]Itsupportsversion2.0.[26]

DCompilerfor.NETAbackendfortheDprogramminglanguage2.0compiler.[27][28]Itcompiles
thecodetoCommonIntermediateLanguage(CIL)bytecoderatherthantomachinecode.TheCILcan
thenberunviaaCommonLanguageInfrastructure(CLR)virtualmachine.
SDCADcompilerusingacustomfrontendandLLVMasitscompilerbackend.ItiswritteninD
andusesaschedulertohandlesymbolresolutioninordertoelegantlyhandlethecompiletimefeaturesof
D.Thiscompilercurrentlysupportsalimitedsubsetofthelanguage.[29][30]

Developmenttools
Editorsandintegrateddevelopmentenvironments(IDEs)supportingDincludeEclipse,MicrosoftVisualStudio,
SlickEdit,Emacs,vim,SciTE,Smultron,TextMate,MonoDevelop,Zeus,[31]andGeanyamongothers.[32]
EclipsepluginsforDinclude:DDT,[33]andDescent(deadproject).[34]
VisualStudiointegrationisprovidedbyVisualD.[35]
Vimsupportsbothsyntaxhighlightingandcodecompletion(throughpatchedCtags).
AbundleisavailableforTextMate,andtheCode::BlocksIDEincludespartialsupportforthelanguage.
However,standardIDEfeaturessuchascodecompletionorrefactoringarenotyetavailable,though
theydoworkpartiallyinCode::Blocks(duetoD'ssimilaritytoC).
ApluginforXcode3isavailable,DforXcode,toenableDbasedprojectsanddevelopment.[36]
AnAddInforMonoDevelopisavailable,namedMonoD.[37]
KDevelop(aswellasitstexteditorbackend,Kate)autocompletionpluginisavailable.[38]
OpensourceDIDEsforWindowsexist,somewritteninD,suchasPoseidon,[39]DIDE,[40]andEntice
Designer.[41]
DapplicationscanbedebuggedusinganyC/C++debugger,likeGDBorWinDbg,althoughsupportforvarious
Dspecificlanguagefeaturesisextremelylimited.OnWindows,DprogramscanbedebuggedusingDdbg
(http://ddbg.mainia.de/),orMicrosoftdebuggingtools(WinDBGandVisualStudio),afterhavingconvertedthe
debuginformationusingcv2pdb(http://dsource.org/projects/cv2pdb).TheZeroBUGS
(http://zerobugs.codeplex.com/)debuggerforLinuxhasexperimentalsupportfortheDlanguage.Ddbgcanbe
usedwithvariousIDEsorfromthecommandlineZeroBUGShasitsowngraphicaluserinterface(GUI).

Examples
Example1
Thisexampleprogramprintsitscommandlinearguments.ThemainfunctionistheentrypointofaDprogram,
andargsisanarrayofstringsrepresentingthecommandlinearguments.AstringinDisanarrayof
characters,representedbychar[]inD1,orimmutable(char)[]inD2.
1
2
3
4
5
6
7

import std.stdio: writefln;


void main(string[] args)
{
foreach (i, arg; args)
writefln("args[%d] = '%s'", i, arg);
}

Theforeachstatementcaniterateoveranycollection.Inthiscase,itisproducingasequenceofindexes(i)
andvalues(arg)fromthearrayargs.Theindexiandthevaluearghavetheirtypesinferredfromthetypeof
thearrayargs.

Example2
ThefollowingshowsseveralDcapabilitiesandDdesigntradeoffsinaveryshortprogram.Ititeratesoverthe
linesofatextfilenamedwords.txt,whichcontainsadifferentwordoneachline,andprintsallthewordsthat
areanagramsofotherwords.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

import std.stdio, std.algorithm, std.range, std.string;


void main()
{
dstring[][dstring] signs2words;
foreach(dchar[] w; lines(File("words.txt")))
{
w = w.chomp().toLower();
immutable key = w.dup.sort().release().idup;
signs2words[key] ~= w.idup;
}

foreach(words; signs2words)
if(words.length > 1)
writefln(words.join(" "));

1.signs2wordsisabuiltinassociativearraythatmapsdstring(32bit/char)keystoarraysofdstrings.It
issimilartodefaultdict(list)inPython.
2.lines(File())yieldslineslazily,withthenewline.Ithastothenbecopiedwithiduptoobtainastring
tobeusedfortheassociativearrayvalues(theiduppropertyofarraysreturnsanimmutableduplicateof
thearray,whichisrequiredsincethedstringtypeisactuallyimmutable(dchar)[]).Builtin
associativearraysrequireimmutablekeys.
3.The~=operatorappendsanewdstringtothevaluesoftheassociatedynamicarray.
4.toLower,joinandchomparestringfunctionsthatDallowstousewithamethodsyntax.Thenameof
suchfunctionsisoftenverysimilartoPythonstringmethods.ThetoLowerconvertsastringtolower
case,join("")joinsanarrayofstringsintoasinglestringusingasinglespaceasseparator,andchomp
removesanewlinefromtheendofthestringifoneispresent.
5.Thesortisanstd.algorithmfunctionthatsortsthearrayinplace,creatingauniquesignatureforwords
thatareanagramsofeachother.Therelease()methodonthereturnvalueofsort()ishandytokeep
thecodeasasingleexpression.
6.Thesecondforeachiteratesonthevaluesoftheassociativearray,it'sabletoinferthetypeofwords.
7.keyisassignedtoanimmutablevariable,itstypeisinferred.
8.UTF32dchar[]isusedinsteadofnormalUTF8char[]otherwisesort()refusestosortit.There
aremoreefficientwaystowritethisprogram,thatusejustUTF8.

Seealso
Ddoc
Gtk+DSupport

References

1."DChangeLogtoNov72005".DProgramming
Language1.0.DigitalMars.Retrieved1December
2011.
2."Changelog".DProgrammingLanguage2.0.
DigitalMars.Retrieved27January2016.
3."ReleaseD2.070.0".Retrieved27January2016.
4."dmdfrontendnowswitchedtoBoostlicense".
RetrievedSeptember9,2014.
5."readme.txt".DMDsourcecode.GitHub.Retrieved
March5,2012.
6."D2.0FAQ".Retrieved11August2015.
7.Alexandrescu,Andrei(2010).TheDprogramming
language(Firsted.).UpperSaddleRiver,NJ:
AddisonWesley.p.314.ISBN0321635361.
8."Buildingassert()inSwift,Part2:__FILE__and
__LINE__".RetrievedSeptember25,2014.
9.Bright,Walter.DprogrammingLanguage
Specification(ebooked.).7227:DigitalMars(via
Amazon).MemorySafetyhasanentirechapter,
withrecipes.It'samajorthemeofthelanguage.
Failurestoreachthisstandardaredefects.
10.AndreiAlexandrescu(August2,2010).ThreeCool
ThingsAboutD.
11."Expressions".DigitalMars.Retrieved
December27,2012.
12."std.gc".DProgrammingLanguage1.0.Digital
Mars.Retrieved6July2010.
13."MemoryManagement".DProgramming
Language2.0.DigitalMars.RetrievedFebruary17,
2012.
14.BartoszMilewski."SafeDDProgramming
Language".Retrieved17July2014.
15."DChangeLog".DProgrammingLanguage1.0.
DigitalMars.Retrieved11January2012.
16."Intro".DProgrammingLanguage1.0.Digital
Mars.Retrieved1December2011.
17."Announcinganewlibrary".Retrieved15February
2012.
18."Wiki4DStandardLib".Retrieved6July2010.
19."TangoforD2:Allusermodulesported".Retrieved
16February2012.
20.WalterBright."Re:GitHubordsource?".Retrieved
15February2012.

21.AndreiAlexandrescu."D1tobediscontinuedon
December31,2012".Retrieved31January2014.
22."DChangeLog".DProgrammingLanguage1.0.
DigitalMars.Retrieved31January2014.
23."RedditcommentbyWalterBright".Retrieved
September9,2014.
24."gdcprojecthomepage".Retrieved14October
2012.
25."LLVMDcompilerprojectonDSource".Retrieved
3July2010.
26."BuildInstructionsPhobosDruntimeTrunkldcD
ProgrammingLanguageTrac".Retrieved
11August2015.
27."D.NETprojectonCodePlex".Retrieved3July
2010.
28.JonathanAllen(15May2009)."Sourceforthe
D.NETCompilerisNowAvailable".InfoQ.
Retrieved6July2010.
29."DConf2014:SDC,aDCompilerasaLibraryby
AmaurySechet".Retrieved8January2014.
30."deadalnix/SDC".Retrieved8January2014.
31."Wiki4D:EditorSupport/ZeusForWindows".
Retrieved11August2015.
32."Wiki4DEditorSupport".Retrieved3July2010.
33."GoogleProjectHosting".Retrieved11August
2015.
34."descent".Retrieved11August2015.
35."VisualD".Retrieved11August2015.
36."MichelFortinDforXcode".Retrieved
11August2015.
37."MonoDDSupportforMonoDevelop".
Retrieved11August2015.
38."Dav1dde/lumen".GitHub.Retrieved11August
2015.
39."poseidon".Retrieved11August2015.
40."MonoDDSupportforMonoDevelop".
Retrieved11August2015.
41."EnticeDesignerDprogramming.comTheD
programminglanguage".Retrieved11August
2015.

Furtherreading
Alexandrescu,Andrei(January4,2010).TheDProgrammingLanguage(1ed.).AddisonWesley
Professional.ISBN9780321635365.
Alexandrescu,Andrei(June15,2009)."TheCaseforD".Dr.Dobb'sJournal.
Bright,Walter(April8,2014)."HowICametoWriteD".Dr.Dobb'sJournal.
ehreli,Ali(February1,2012)."ProgramminginD".(distributedunderCCBYNCSAlicense).This
bookprovidesabasiclevelintroduction.
Metz,Cade(July7,2014)."TheNextBigProgrammingLanguageYouveNeverHeardOf".Wired.
Ruppe,Adam(May2014).DCookbook(1ed.).PACKTPublishing.ISBN9781783287215.

Externallinks
Officialwebsite(http://dlang.org)
DigitalMars(http://www.digitalmars.com)
DProgrammingLanguage(https://github.com/D
ProgrammingLanguage)onGitHub
Retrievedfrom"https://en.wikipedia.org/w/index.php?
title=D_(programming_language)&oldid=706454897"

Wikibookshasabookon
thetopicof:ABeginner's
GuidetoD
Wikibookshasabookon
thetopicof:D
Programming

Categories: Cprogramminglanguagefamily Classbasedprogramminglanguages


Multiparadigmprogramminglanguages Systemsprogramminglanguages
Programminglanguagescreatedin2001 Staticallytypedprogramminglanguages
Freecompilersandinterpreters Proceduralprogramminglanguages
Objectorientedprogramminglanguages Crossplatformsoftware Highlevelprogramminglanguages
Thispagewaslastmodifiedon23February2016,at12:10.
TextisavailableundertheCreativeCommonsAttributionShareAlikeLicenseadditionaltermsmay
apply.Byusingthissite,youagreetotheTermsofUseandPrivacyPolicy.Wikipediaisaregistered
trademarkoftheWikimediaFoundation,Inc.,anonprofitorganization.

You might also like