summaryrefslogtreecommitdiffhomepage
path: root/d.html.markdown
diff options
context:
space:
mode:
authorNickPapanastasiou <nickpap9411@gmail.com>2015-06-07 22:30:16 -0400
committerNickPapanastasiou <nickpap9411@gmail.com>2015-06-07 22:35:38 -0400
commitab637d83f235a1766cbfc4c8a1d84cde4a670820 (patch)
tree12f35207243903f11c4578e0704e19c1415b9a04 /d.html.markdown
parent0eb127c84c2271705fc6383a3580b336cd906736 (diff)
Prompt addition of D
Diffstat (limited to 'd.html.markdown')
-rw-r--r--d.html.markdown61
1 files changed, 61 insertions, 0 deletions
diff --git a/d.html.markdown b/d.html.markdown
new file mode 100644
index 00000000..9f322423
--- /dev/null
+++ b/d.html.markdown
@@ -0,0 +1,61 @@
+---
+language: d
+filename: learnd.d
+contributors:
+ - ["Nick Papanastasiou", "www.nickpapanastasiou.github.io"]
+lang: en
+---
+
+If you're like me and spend way to much time on the internet, odds are you've heard
+about [D](http://dlang.org/). The D programming language is a modern, general-purpose,
+multi-paradigm language with fantastic support for OOP, functional programming, metaprogramming,
+and easy concurrency and parallelism, and runs the gamut from low-level features such as
+memory management, inline assembly, and pointer arithmetic, to high-level constructs
+such as higher-order functions and generic structures and functions via templates, all with
+a pleasant syntax, and blazing fast performance!
+
+D is actively developed by Walter Bright and Andrei Alexandrescu, two super smart, really cool
+dudes. With all that out of the way, let's look at some examples!
+
+'''d
+// You know what's coming...
+import std.stdio;
+
+// args is optional
+void main(string[] args) {
+ writeln("Hello, World!");
+}
+
+// Conditionals and loops work as expected.
+import std.stdio;
+
+void main() {
+ for(int i = 0; i < 5; i++) {
+ writeln(i);
+ }
+
+ auto n = 1; // use auto for type inferred variables
+
+ while(n < 10_000) {
+ n += n;
+ }
+
+ do {
+ n -= (n / 2);
+ } while(n > 0);
+
+ // For and while are nice, but in D-land we prefer foreach
+ foreach(i; 1..int.max) { // The .. creates a continuous range
+ if(n % 2 == 0)
+ writeln(i);
+ }
+
+ foreach_reverse(i; short.max) {
+ if(n % 2 == 1)
+ writeln(i);
+ else
+ writeln("No!");
+ }
+}
+
+'''