Diciptakan di tahun 1999, dan belum juga bergaung sampai tahun 2003: D Language. Mirip C++, dan memang merupakan satu alternatif lagi untuk memperbaiki C dan C++, dalam arti memberikan kekuatan baru atas C, dan memberikan kesederhanaan buat C++. Tapi sengaja nggak dibikin 100% portabel dengan dua bahasa itu. Penciptanya belajar bahwa C++ jadi rumit justru karena pernah mau 100% portabel dengan C, dulunya. Udah rumit, akhirnya nggak portabel juga dengan C99.
Anyway, kerumitan C++ justru mengasyikkan, terutama kalau kita lagi punya waktu. Kalau ada pihak2 yang bener2 merasa C++ itu provoking dan frustrating, feel happy-lah bahwa masih ada alternatif bahasa serupa C++ yang nggak harus lekat dengan VM (kayak C# dan Java) , nggak berasa beginner (kayak Basic dan Java), bukan scripting (kayak Perl atau Ruby), masih punya template (tapi lebih simpel daripada C++).
Gini kalimat pembuka di websitenya: It seems to me that most of the “new” programming languages fall into one of two categories: Those from academia with radical new paradigms and those from large corporations with a focus on RAD and the web. Maybe its time for a new language born out of practical experience implementing compilers.
Contoh program D:
import std.stdio;
void main(char[][] args)
{
writefln("Hello World, Reloaded");
// auto type inference and built-in foreach
foreach (argc, argv; args)
{
// Object Oriented Programming
CmdLin cl = new CmdLin(argc, argv);
// Improved typesafe printf
writefln(cl.argnum, cl.suffix, " arg: %s", cl.argv);
// Automatic or explicit memory management
delete cl;
}
// Nested structs and classes
struct specs
{
// all members automatically initialized
int count, allocated;
}
// Nested functions can refer to outer
// variables like args
specs argspecs()
{
specs* s = new specs;
// no need for '->'
s.count = args.length; // get length of array with .length
s.allocated = typeof(args).sizeof; // built-in native type properties
foreach (argv; args)
s.allocated += argv.length * typeof(argv[0]).sizeof;
return *s;
}
// built-in string and common string operations
writefln("argc = %d, " ~ "allocated = %d",
argspecs().count, argspecs().allocated);
}
class CmdLin
{
private int _argc;
private char[] _argv;
public:
this(int argc, char[] argv) // constructor
{
_argc = argc;
_argv = argv;
}
int argnum()
{
return _argc + 1;
}
char[] argv()
{
return _argv;
}
char[] suffix()
{
char[] suffix = "th";
switch (_argc)
{
case 0:
suffix = "st";
break;
case 1:
suffix = "nd";
break;
case 2:
suffix = "rd";
break;
default:
break;
}
return suffix;
}
}
“Great, just what I need.. another D in programming.” — Segfault



Pada binatang berdarah dingin, metabolisme tubuh harus diatur sesuai dengan suhu lingkungan di sekitarnya. Cengkerik misalnya, mengeluarkan suara kerikan dengan frekuensi sebanding dengan suhu udara di sekitarnya. Ini frekuensi kerikan, bukan frekuensi suara yang dihitung dalam Hertz itu. Kita namai saja kekerapan deh.
