Changes

Jump to: navigation, search

D (Programming Language)

5,908 bytes added, 13:05, 30 November 2019
Created page with "'''Home * Programming * Languages * D-Programming Language''' '''D''',<br/> a programming language developed by [https://en.wikipedia.org/wiki/Walter_Br..."
'''[[Main Page|Home]] * [[Programming]] * [[Languages]] * D-Programming Language'''

'''D''',<br/>
a programming language developed by [https://en.wikipedia.org/wiki/Walter_Bright Walter Bright] from [https://en.wikipedia.org/wiki/Digital_Mars Digital Mars] <ref>[http://bitwisemag.co.uk/copy/programming/d/interview/d_programming_language.html The D Programming Language - Walter Bright Interview] by [http://bitwisemag.co.uk/copy/bios/bio_huw_collingbourne.html Huw Collingbourne] and [http://bitwisemag.co.uk/copy/bios/bio_dermot_hogan.html Dermot Hogan], [http://www.bitwisemag.com/index.html Bitwise Magazine]</ref>
<ref>[https://www.computerworld.com/article/3475025/the-a-z-of-programming-languages-d.html The A-Z of Programming Languages: D - Walter Bright talks about D and his desire to improve on systems programming language], [[Computerworld]]</ref>.
The first stable version was released 2007. Walter Bright designed many other compilers as the first native compiler, the [https://en.wikipedia.org/wiki/Zortech Zortech] [[Cpp|C++]] compiler, the [https://en.wikipedia.org/wiki/Symantec Symantec] C++ compiler, and the Digital Mars C++ Compiler and many [[C]] compilers (as the [https://en.wikipedia.org/wiki/Datalight Datalight] C compiler).
[https://en.wikipedia.org/wiki/Andrei_Alexandrescu Andrej Alexandrescu] joined the design and development effort in 2007. D is a distinct language and has redesigned some core C++ features, while also sharing characteristics from [[Java]], [[Python]], [[Ruby]], [[C sharp|C#]], and [https://en.wikipedia.org/wiki/Eiffel_(programming_language) Eiffel] <ref>[https://en.wikipedia.org/wiki/D_(programming_language) D (programming language) from Wikipedia]</ref>.
D is in the Top 20 of the [https://en.wikipedia.org/wiki/TIOBE_index TIOBE index] <ref>[https://www.tiobe.com/tiobe-index// TIOBE Software: Tiobe Index]</ref> .

=Design Principles=
The design principles have been to write a compiler for a language that:
* is '''fast''' without any compromise
* has a '''clean syntax''' free of the [[Cpp|C++]] quirks
* has all '''modern concepts''' of [https://en.wikipedia.org/wiki/Interpreted_language interpreted languages]. In fact D has some [[Ruby]] + [[Python]] elements that make '''programming fun'''.
* is '''easy''' to learn for [[C]] and C++ programmers

=Native Features=
* Easy string handling
* Static and dynamic [[Array|arrays]] + [[Hash Table|hashes]]
* [https://en.wikipedia.org/wiki/Function_overloading Overloading], default parameters, varargs
* Direct [[C]] access and debugger support
* [https://en.wikipedia.org/wiki/Design_by_contract Contract programming]
* Subset of constructs for easy [https://en.wikipedia.org/wiki/Functional_programming functional programming]
* Nested functions (as Macros)
* Classes and inheritance and Modules/Mixins and templates
* Advanced testing features as contract programming and class invariants
* [[Thread]] and [https://en.wikipedia.org/wiki/Fiber_%28computer_science%29 fiber] support (actors in work)
* [https://en.wikipedia.org/wiki/Exception_handling Exception handling]
* Automatic or explicit [https://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29 garbage collection]: use internal GC or [https://en.wikipedia.org/wiki/Malloc free / malloc] as you like.
* [https://en.wikipedia.org/wiki/Closure_%28computer_science%29 Closures]
* and more...

=Suitable for Chess Programming=
D might be a competitive choice for chess programming because:
* The performance / '''speed''' is comparable to C / C++
* It has '''ulong''' (8 bytes) and is very data-type rich

Althought it looks like D has advantages over C/C++ in terms if a modern language, two possible problems might be worth to know
* [[Bit-Twiddling|Bit-twiddling]] optimizations
* Impact of [https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) Garbage collection] on predictable results

=D Engines=
* [[:Category:D-Proglanguage|Chess Engines written in D]]

=Publications=
* [https://en.wikipedia.org/wiki/Andrei_Alexandrescu Andrej Alexandrescu] ('''2010'''). ''[https://www.oreilly.com/library/view/the-d-programming/9780321659538/ The D Programming Language]''. [https://en.wikipedia.org/wiki/Addison-Wesley Addison-Wesley] Professional <ref>The D Programming Language with Andrei Alexandrescu, [https://en.wikipedia.org/wiki/YouTube YouTube] Video<br/>{{#evu:https://www.youtube.com/watch?v=QXJB7TXhbHc|alignment=left|valignment=top}}</ref>

=Forum Posts=
* [http://www.digitalmars.com/d/archives/digitalmars/D/gdc_and_the_Computer_Language_Benchmarks_Game_55053.html#N55053 digitalmars.D - gdc and the Computer Language Benchmarks Game] by [[Guido Schimmels]], [http://dlang.org/index.html digitalmars.D], June 28, 2007
* [http://talkchess.com/forum/viewtopic.php?topic_view=threads&p=414767&t=39683 Re: c vs c++] by [[Brian Haskin]], [[CCC]], July 14, 2011
* [http://programmers.stackexchange.com/questions/97207/what-does-c-do-better-than-d programming languages - What does C++ do better than D? - Programmers - Stack Exchange]

=External Links=
* [https://dlang.org/ Home - D Programming Language]
* [https://en.wikipedia.org/wiki/D_programming_language D from Wikipedia]
* [http://www.prowiki.org/wiki4d/wiki.cgi Wiki4D: FrontPage]
* [https://digitalmars.com/d/2.0/index.html ntro - D Programming Language 2.0 - Digital Mars]
* [https://gdcproject.org/ GDC - D Programming Language for GCC]
* [https://github.com/D-Programming-GDC D-Programming-GDC · GitHub]
* [https://dconf.org/2019/index.html DConf 2019] Day 1 [https://dconf.org/2019/talks/bright.html Keynote]: Allocating Memory with the D Programming Language - [https://en.wikipedia.org/wiki/Walter_Bright Walter Bright], [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: {{#evu:https://www.youtube.com/watch?v=_PB6Hdi4R7M|alignment=left|valignment=top}}

=References=
<references />
'''[[Languages|Up one Level]]'''

Navigation menu