Difference between revisions of "D"

From RogueBasin
Jump to navigation Jump to search
(Update some information and add link to bearlibterminal wrapper)
 
(One intermediate revision by one other user not shown)
Line 44: Line 44:
* ArmageddonEngine, D library for games, network applications etc. (lots of utility code) - https://github.com/CyberShadow/ae
* ArmageddonEngine, D library for games, network applications etc. (lots of utility code) - https://github.com/CyberShadow/ae
* scone - cross-platform terminal application library - http://code.dlang.org/packages/scone
* scone - cross-platform terminal application library - http://code.dlang.org/packages/scone
* [[NotEye|Necklace of the Eye]] includes sample in D.


== D Roguelikes ==
== D Roguelikes ==
Line 49: Line 50:
* {{7DRL}} [[Infection]]
* {{7DRL}} [[Infection]]
* {{Alpha}} [[Arcan Myth RL]]
* {{Alpha}} [[Arcan Myth RL]]
* {{Alpha}} [[Tetraworld]]


== Links ==
== Links ==

Latest revision as of 20:54, 6 November 2020

Introduction

D is static, compiled language influenced by C++. It was created by Walter Bright, author of the first C++ compiler to compile directly to machine code without using C as an intermediate language.[citation needed]

D has an imperative core, but is a multi-paradigm language that includes support for object-orientated, functional, and generic programming.

Advantages

  • Compiles natively with performance comparable to C++ while still being garbage collected by default.
  • Interfaces well with C libraries, without writing boilerplate or using a foreign function interface and can import headers unmodified - see https://github.com/atilaneves/dpp. Although C++ interfacing is more limited, it is available (see D Programming Language Specification: Chapter 33).
  • Has a modern module system, no need to write header files or deal with a preprocessor.
  • Syntax is familiar to C, C++, C#, Java etc programmers.
  • Supports the functional programming paradigm better than other C-like languages, with features such as closures, delegates, transitive immutability, higher order functions, anonymous functions, and the ability to write compiler enforced pure functions.
  • Supports the template metaprogramming thing, which C++ supports without really meaning to, in a way that's actually sane to use.
  • DMD builds code incredibly fast, making compile-edit-run cycles comparable to dynamic languages. Build automation tools like make, etc. can be used in the same way as they are used in C/C++ projects.
  • Knowledgeable, helpful community (including the D.learn forum for asking questions).
  • Unicode native - call the ☃.melt() function, or instantiate a 💡!T; the basic string type is UTF-8.
  • A package registry (http://code.dlang.org/)

Disadvantages

  • There aren't as many libraries available if you want pure D implementations.
  • The language is mostly stable, but still has breaking changes on rare occasions (although these are preceded by deprecation warnings)
  • Documentation sometimes abstruse or lacking examples; paucity of beginner learning resources.

Compilers/Tooling

Roguelike Libraries

D Roguelikes

Links