Lompat ke isi

D (bahasa pemrograman): Perbedaan antara revisi

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Maintenance script (bicara | kontrib)
Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 29298708; atribusi sumber disertakan.
 
Maintenance script (bicara | kontrib)
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi
 
Baris 1: Baris 1:
'''D''', juga dikenal dengan '''dlang''', adalah sistem pemrograman multi-paradigma yang dibuat oleh Walter Bright pada [[Digital]] Mars dan dirilis pada 2001. Andrei Alexandrescu bergabung dengan upaya desain dan pengembangan pada 2007. Meskipun ini berasal dari rekayasa ulang dari [[C++]], D adalah bahasa yang sangat berbeda — fitur D ini juga dianggap sebagai ide yang disederhanakan dan diperluas dari C++, tetapi, D juga menarik inspirasi dari [[bahasa pemrograman tingkat tinggi]] lainnya, khususnya [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Ruby (bahasa pemrograman)|Ruby]], [[C Sharp (bahasa pemrograman)|C#]], dan [[Eiffel (bahasa pemrograman)|Eiffel]].
[[File:D_Programming_Language_logo.svg|thumb|right|280px|D Programming Language logo]]


[[Pengetikan disimpulkan]], [[Pengumpulan sampah (ilmu komputer)|manajemen memori otomatis]] dan [[gula sintaksis]] untuk [[Tipe data|tipe umum]] memungkinkan [[Pengembangan perangkat lunak|pengembangan yang lebih cepat]], sementara [[Pengecekan batas|pemeriksaan batas]] dan [[desain dengan kontrak]] menemukan ''bug'' lebih awal saat waktu penggunaan, dan [[sistem tipe]] sadar [[Konkurensi (ilmu komputer)|konkurensi]] menangkap ''bug'' pada waktu kompilasi.
'''D''', juga dikenal dengan '''dlang''', adalah sistem pemrograman multi-paradigma yang dibuat oleh Walter Bright pada [[Digital]] Mars dan dirilis pada 2001. Andrei Alexandrescu bergabung dengan upaya desain dan pengembangan pada 2007. Meskipun ini berasal dari rekayasa ulang dari [[C++]], D adalah bahasa yang sangat berbeda — fitur D ini juga dianggap sebagai ide yang disederhanakan dan diperluas dari C++,<ref>[https://dlang.org/articles/cpptod.html Programming in D for C++ Programmers - D Programming Language]. ''dlang.org''.</ref> tetapi, D juga menarik inspirasi dari [[bahasa pemrograman tingkat tinggi]] lainnya, khususnya [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[Ruby (bahasa pemrograman)|Ruby]], [[C Sharp (bahasa pemrograman)|C#]], dan [[Eiffel (bahasa pemrograman)|Eiffel]].


[[Pengetikan disimpulkan]], [[Pengumpulan sampah (ilmu komputer)|manajemen memori otomatis]] dan [[gula sintaksis]] untuk [[Tipe data|tipe umum]] memungkinkan [[Pengembangan perangkat lunak|pengembangan yang lebih cepat]], sementara [[Pengecekan batas|pemeriksaan batas]] dan [[desain dengan kontrak]] menemukan ''bug'' lebih awal saat waktu penggunaan, dan [[sistem tipe]] sadar [[Konkurensi (ilmu komputer)|konkurensi]] menangkap ''bug'' pada waktu kompilasi.<ref>Archived at [https://ghostarchive.org/varchive/youtube/20211211/RlVpPstLPEc Ghostarchive] and the [https://web.archive.org/web/20101025114033/http://www.youtube.com//watch?v=RlVpPstLPEc Wayback Machine]: [https://www.youtube.com/watch?v=RlVpPstLPEc Three Cool Things About D]. 2 August 2010.</ref>


== Sejarah Perkembangan D ==
== Sejarah Perkembangan D ==
D (bahasa pemrograman ) adalah bahasa yang dibuat oleh [[Id.wikipedia.org/Walter Bright|Walter Bright]]. D mulai dibuat pada tahun 1999 dan kemudian disebarkan ke publik pertama kali pada tahun 2001, kemudian mencapai versi 1.0 pada tahun 2007.
D (bahasa pemrograman ) adalah bahasa yang dibuat oleh [[Id.wikipedia.org/Walter Bright|Walter Bright]]. D mulai dibuat pada tahun 1999 dan kemudian disebarkan ke publik pertama kali pada tahun 2001,<ref>[http://www.digitalmars.com/d/1.0/changelog1.html Change Log - D Programming Language 1.0 - Digital Mars]. ''www.digitalmars.com''.</ref> kemudian mencapai versi 1.0 pada tahun 2007.<ref>[http://www.digitalmars.com/d/1.0/changelog2.html Change Log - D Programming Language 1.0 - Digital Mars]. ''www.digitalmars.com''.</ref>


Pada awalnya, ketika D berada pada versi 1.0, banyak [[Pemrogram|programmer]] yang merasa kurang puas dengan pustaka pemrograman phobos saat itu, komunitas D membuat pustaka pemrograman mereka sendiri yang mereka namakan Tango dan diberitakan beberapa tanggal setelah D versi 1.0 diluncurkan Tango memakai pendekatan yang berbeda dengan Phobos, dimana Tango lebih mirip dengan Pustaka pemrograman Java.
Pada awalnya, ketika D berada pada versi 1.0, banyak [[Pemrogram|programmer]] yang merasa kurang puas dengan pustaka pemrograman phobos saat itu, komunitas D membuat pustaka pemrograman mereka sendiri yang mereka namakan Tango dan diberitakan beberapa tanggal setelah D versi 1.0 diluncurkan<ref>[http://forum.dlang.org/post/[email protected] Announcing a new library]. ''forum.dlang.org''.</ref> Tango memakai pendekatan yang berbeda dengan Phobos, dimana Tango lebih mirip dengan Pustaka pemrograman Java.


Kemudian pada Juni 2007 D2 diluncurkan, dimana banyak fitur baru dimasukkan ke dalam D, seperti sistem constant, functional, contract.
Kemudian pada Juni 2007<ref>https://dlang.org/blog/2018/03/03/dmd-2-079-0-released</ref> D2 diluncurkan, dimana banyak fitur baru dimasukkan ke dalam D, seperti sistem constant, functional, contract.


Andrei Alexandrescu meluncurkan buku D yang berjudul ''The D Programming Language'' pada tanggal 12 Juni 2010.
Andrei Alexandrescu meluncurkan buku D yang berjudul ''The D Programming Language'' pada tanggal 12 Juni 2010.


=== Distribusi D ===
=== Distribusi D ===
* [https://dlang.org/dmd-windows.html DMD], compiler yang dibuat Walter Bright, pencipta D
* [https://dlang.org/dmd-windows.html DMD], compiler yang dibuat Walter Bright, pencipta D
* [https://gdcproject.org/ GDC], compiler D yang dibuat dengan backend GCC
* [https://gdcproject.org/ GDC], compiler D yang dibuat dengan backend GCC
Baris 28: Baris 28:
* Tango, dibuat oleh komunitas D, lebih popular di masa D1, namun, tidak bisa digunakan bersama dengan phobos
* Tango, dibuat oleh komunitas D, lebih popular di masa D1, namun, tidak bisa digunakan bersama dengan phobos


Pustaka pemrograman dari D2 ada 1, phobos, meskipun begitu ada projek untuk membawa Tango dari D1 ke D2
Pustaka pemrograman dari D2 ada 1, phobos, meskipun begitu ada projek untuk membawa Tango dari D1 ke D2<ref>[https://github.com/SiegeLord/Tango-D2 SiegeLord/Tango-D2]. ''GitHub''.</ref>


=== Pustaka GUI ([[Graphical User Interface]]) ===
=== Pustaka GUI ([[Graphical User Interface]]) ===
Baris 43: Baris 43:
DlangUI merupakan pustaka gratis untuk membuat aplikasi dengan GUI
DlangUI merupakan pustaka gratis untuk membuat aplikasi dengan GUI


== [[Integrated Development Environment]] ==
== [[Integrated Development Environment]]<ref>[https://wiki.dlang.org/IDEs IDEs - D Wiki]. ''wiki.dlang.org''.</ref> ==
 
* [https://wiki.dlang.org/CodeBlocks Code::Blocks].
* [https://wiki.dlang.org/CodeBlocks Code::Blocks].


Baris 50: Baris 49:
tersedia di Windows, Linux, Mac OSX, FreeBSD
tersedia di Windows, Linux, Mac OSX, FreeBSD


* [https://github.com/BBasile/Coedit Codeit]
* [https://github.com/BBasile/Coedit Codeit]  
* [https://github.com/buggins/dlangide DlangIDE]
* [https://github.com/buggins/dlangide DlangIDE]


Baris 62: Baris 61:
== Contoh-contoh ==
== Contoh-contoh ==
=== Hello World ===
=== Hello World ===
Berikut ini program '''Helo Dunia''' dalam Dlang
Berikut ini program '''Helo Dunia''' dalam Dlang<syntaxhighlight lang="d" line="1">
import std.stdio;
 
void main( string[] args )
{
    writeln( "hello world" );
}
</syntaxhighlight>


=== char [] ===
=== char [] ===
Berikut ini pengaksesan array of char, yang notabene merupakan String dalam bahasa kasarnya.
Berikut ini pengaksesan array of char, yang notabene merupakan String dalam bahasa kasarnya.
Perhatikan bahwa ini tidak diperlukan apabila kita benar-benar ingin menggunakan D. Contoh ini hanya cara saya ingin menunjukkan kemudahan dalam D, dibandingkan Anda yang sudah pernah berurusan dengan char dan pointer
Perhatikan bahwa ini tidak diperlukan apabila kita benar-benar ingin menggunakan D. Contoh ini hanya cara saya ingin menunjukkan kemudahan dalam D, dibandingkan Anda yang sudah pernah berurusan dengan char dan pointer
<syntaxhighlight lang="D">
// saya hanya ingin menggunakan fungsi writefln di pustaka std.stdio milik phobos
import std.stdio: writefln;
/*
* I can't found any of it function in phobos lib
*/
class MString
{
static public char [] midDex(char [] a, int indexA, int indexB)
{
return a[indexA .. (indexB+1)];
}
static public char [] mid(char [] a, int indexA, int dlength=0)
{
return a[indexA .. ((dlength>0)?indexA+dlength:a.length)];
}
static public char [] left(char [] a, int width)
{
return midDex(a, 0, width-1);
}
static public char [] right(char [] a, int width)
{
return midDex(a, (a.length - width), a.length-1);
}
}
/**
* perhatikan unittest, salah satu fungsionalitas dalam bahasa D. Yang bisa memberikan kepada kita
* kemampuan untuk melakukan testing terhadap salah satu bagian program yang kita miliki
*/
unittest
{
assert(MString.midDex("0123456789", 3, 6) == "3456");
assert(MString.left("0123456789", 3) == "012");
assert(MString.right("0123456789", 3) == "789");
assert(MString.mid("0123456789", 3, 2) == "34");
assert(MString.mid("abcdefghijklmn", 5, 3) == "fgh");
assert(MString.mid("abcdefghijklmn", 5) == "fghijklmn");
}


void main(char [][] args)
{
char [] a = MString.left("Aku suka kamu D?");
// perhatikan tanda ~ adalah concatenation
writefln("Ini adalah isi dari a" ~ a ~ " mudah kan:) ");
writefln("Ini adalah isi dari %s mudah kan", a); // bisa juga begini
char [] b = "Berpikirlah dengan mudah\n" ~ a ~ " cobain ini";
writefln("Asyik kan: %s", b);
}
</syntaxhighlight>


==== Konkurensi ====
==== Konkurensi ====
Konkurensi sepenuhnya diterapkan di pustaka, dan tidak memerlukan dukungan dari kompilernya. Implementasi alternatif dan metodologi penulisan kode bersamaan dimungkinkan. Penggunaan sistem pengetikan D memang membantu memastikan keamanan memori.
Konkurensi sepenuhnya diterapkan di pustaka, dan tidak memerlukan dukungan dari kompilernya. Implementasi alternatif dan metodologi penulisan kode bersamaan dimungkinkan. Penggunaan sistem pengetikan D memang membantu memastikan keamanan memori.<syntaxhighlight lang="d">
import std.stdio, std.concurrency, std.variant;
 
void foo()
{
    bool cont = true;
 
    while (cont)
    {
        receive( // Delegates digunakan untuk mencocokkan jenis pesan.
            (int msg) => writeln("int received: ", msg),
            (Tid sender) { cont = false; sender.send(-1); },
            (Variant v) => writeln("huh?") // Varian cocok dengan jenis apa pun
        );
    }
}
 
void main()
{
    auto tid = spawn(&foo); // membuat sebuah thread foo() berjalan baru
 
    foreach (i; 0 .. 10)
        tid.send(i);  // mengirim beberapa integer
 
    tid.send(1.0f);    // mengirim sebuah float
    tid.send("hello"); // mengirim sebuah string
    tid.send(thisTid); // mengirim sebuah struct (Tid)
 
    receive((int x) => writeln("Thread utama menerima pesan: ", x));
}
</syntaxhighlight>


=== Thread ===
=== Thread ===
Berikut ini tentang pemrograman Thread yang menggunakan library Phobos. Skenarionya, ini merupakan pemrograman berbasis console, di mana seorang user bisa menghentikan proses yang sedang terjadi dengan menekan tombol q atau Q di keyboard. Proses yang sedang terjadi dijalankan melalui sebuah Thread dan proses menunggu juga dilakukan dalam Thread yang dipanggil dari sebuah Thread utama di fungsi main.
Berikut ini tentang pemrograman Thread yang menggunakan library Phobos. Skenarionya, ini merupakan pemrograman berbasis console, di mana seorang user bisa menghentikan proses yang sedang terjadi dengan menekan tombol q atau Q di keyboard. Proses yang sedang terjadi dijalankan melalui sebuah Thread dan proses menunggu juga dilakukan dalam Thread yang dipanggil dari sebuah Thread utama di fungsi main.
<syntaxhighlight lang="D">
import std.thread;
import std.stdio;
import std.c.stdio;
import std.date;
// Thread proses utama ....
class mythread:Thread
{
private char [] d_name = "";
private long d_nloop = 10;
private bool d_stop = false;
this(char [] name, long nloop)
{
super();
writefln(name ~ " called");
this.d_name = name;
this.d_nloop = nloop;
}


override public int run()
{
long i = 0;
for(i=0;(i<this.d_nloop && (!d_stop));i++)
{
//writefln(d_name ~ " called again ");
}
if( d_stop )
writefln(d_name ~ " stopped by user in "
~ std.string.toString(i) ~ " times of loop");
else
writefln(d_name ~ " Finished ..." ~ std.string.toString(d_nloop));
return 0;
}
public void stopIt()
{
d_stop = true;
}
}
// thread untuk menunggu pengguna menekan q atau Q
class UserToStopAllThread: Thread
{
private bool d_stop = false;
this()
{
super();
}
override public int run()
{
while(!d_stop)
{
char ch = getch();
if(ch == 'q' || ch == 'Q')
break;
}
return 0;
}
public void stopIt()
{
d_stop = true;
}
}
// ini adalah Thread utama ....
void main(char [][] args)
{
int i = 0;
mythread a = new mythread("A", 9999999999999);
writefln("Tekan q untuk menghentikan proses ....");
UserToStopAllThread utsa = new UserToStopAllThread;
a.start();
utsa.start();
while(a.getState() == Thread.TS.RUNNING && utsa.getState() == Thread.TS.RUNNING)
{
// tunggu sampai a selesai atau user menekan tombol 'Q' or 'q'
}
if(a.getState() == Thread.TS.RUNNING) a.stopIt(); // pastikan berhenti
if(utsa.getState() == Thread.TS.RUNNING) utsa.stopIt(); // pastikan berhenti
}
</syntaxhighlight>


=== Fungsional ===
=== Fungsional ===
<syntaxhighlight lang="d" line="1">
import std.stdio;
import std.algorithm: map;


void main( string[] args )
{
    int[] arr = [ 1, 2, 3, 4, 5 ];
    arr = map!( x => x + 1 )( arr );
    writeln( arr ) //[ 2, 3, 4, 5, 6 ]
}
</syntaxhighlight>


=== Metaprogramming ===
=== Metaprogramming ===
contoh template dalam D
contoh template dalam D<syntaxhighlight lang="d">
auto add( T )( T a, T b )
{
    return a + b;
}
 
import std.stdio;https:/
 
void main( string[] args )
{
    int a = 10;
    int b = 20;
    writeln( add( a + b ) ) //30
    float x = 10.3;
    float y = 20.4;
    writeln( add( x, y ) ) //30.7
}
</syntaxhighlight>


== Pranala Berkenaan ==
== Pranala Berkenaan ==
* [https://dlang.org/ Situs utama bahasa D]
* [https://dlang.org/ Situs utama bahasa D]
* [https://code.dlang.org/ Project open source Bahasa D]
* [https://code.dlang.org/ Project open source Bahasa D]
Baris 89: Baris 284:


== Referensi ==
== Referensi ==
<references />


== Sumber dan atribusi ==


Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=D+%28bahasa+pemrograman%29&oldid=29298708 Wikipedia bahasa Indonesia], revisi 29298708 (2026-05-31T18:11:24Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.


== Sumber dan atribusi ==
<!-- WIKI_UNISSULA_PRESENTATION_V4 -->
 
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=D+%28bahasa+pemrograman%29&oldid=29298708 Wikipedia bahasa Indonesia], revisi 29298708 (2026-05-31T18:11:24Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.

Revisi terkini sejak 23 Agustus 2026 04.17

D Programming Language logo

D, juga dikenal dengan dlang, adalah sistem pemrograman multi-paradigma yang dibuat oleh Walter Bright pada Digital Mars dan dirilis pada 2001. Andrei Alexandrescu bergabung dengan upaya desain dan pengembangan pada 2007. Meskipun ini berasal dari rekayasa ulang dari C++, D adalah bahasa yang sangat berbeda — fitur D ini juga dianggap sebagai ide yang disederhanakan dan diperluas dari C++,[1] tetapi, D juga menarik inspirasi dari bahasa pemrograman tingkat tinggi lainnya, khususnya Java, Python, Ruby, C#, dan Eiffel.

Pengetikan disimpulkan, manajemen memori otomatis dan gula sintaksis untuk tipe umum memungkinkan pengembangan yang lebih cepat, sementara pemeriksaan batas dan desain dengan kontrak menemukan bug lebih awal saat waktu penggunaan, dan sistem tipe sadar konkurensi menangkap bug pada waktu kompilasi.[2]

Sejarah Perkembangan D

D (bahasa pemrograman ) adalah bahasa yang dibuat oleh Walter Bright. D mulai dibuat pada tahun 1999 dan kemudian disebarkan ke publik pertama kali pada tahun 2001,[3] kemudian mencapai versi 1.0 pada tahun 2007.[4]

Pada awalnya, ketika D berada pada versi 1.0, banyak programmer yang merasa kurang puas dengan pustaka pemrograman phobos saat itu, komunitas D membuat pustaka pemrograman mereka sendiri yang mereka namakan Tango dan diberitakan beberapa tanggal setelah D versi 1.0 diluncurkan[5] Tango memakai pendekatan yang berbeda dengan Phobos, dimana Tango lebih mirip dengan Pustaka pemrograman Java.

Kemudian pada Juni 2007[6] D2 diluncurkan, dimana banyak fitur baru dimasukkan ke dalam D, seperti sistem constant, functional, contract.

Andrei Alexandrescu meluncurkan buku D yang berjudul The D Programming Language pada tanggal 12 Juni 2010.

Distribusi D

  • DMD, compiler yang dibuat Walter Bright, pencipta D
  • GDC, compiler D yang dibuat dengan backend GCC
  • LDC, compiler D yang dibuat dengan backend LLVM

Pustaka pemograman D

Pustaka pemograman standar

Pustaka pemrograman standar adalah pustaka software yang bisa Anda gunakan langsung untuk membuat aplikasi yang Anda inginkan dengan menggunakan konsep OOP yang telah diimplementasikan oleh bahasa D.

pustaka pemrograman dari D1 ada 2, satu phobos dan satu lagi tango( dibuat oleh komunitas D ):

  • Phobos, dibuat oleh Walter Bright
  • Tango, dibuat oleh komunitas D, lebih popular di masa D1, namun, tidak bisa digunakan bersama dengan phobos

Pustaka pemrograman dari D2 ada 1, phobos, meskipun begitu ada projek untuk membawa Tango dari D1 ke D2[7]

Telah banyak pihak yang membuat pustaka ataupun menerjemahkan berbagai pustaka dari bahasa pemrograman lain. Beberapa pustaka tersebut yang populer digunakan, yaitu:

DWT merupakan salah satu pustaka grafis jendela OOP untuk Windows. DWT diterjemahkan dari SWT yang dimiliki Eclipse yang menggunakan bahasa JAVA. Aplikasi yang dikembangkan dengan pustaka ini akan memiliki antarmuka seperti aplikasi jendela pada JAVA dengan SWT. Poseidon merupakan salah satu editor untuk D yang dikembangkan dengan DWT.

DFL merupakan salah satu pustaka grafis jendela OOP untuk Windows yang memadukan pemrograman jendela dengan operasi socket, registry dan fungsi lainnya pada Windows. Dalam praktiknya, penggunaan pustakan ini benar-benar memudahkan kita seperti halnya menggunakan object Windows pada C#.

GLFW merupakan salah satu pustaka gratis untuk pemrograman Open GL. Walaupun aplikasi ini dikembangkan untuk berbagai kompiler bahasa C seperti Borland, Pelles, Visual C, tetapi pustaka ini juga memiliki dukungan terhadap bahasa pemrograman lain seperti Visual Basic, LUA, Assembler, D.

DlangUI merupakan pustaka gratis untuk membuat aplikasi dengan GUI

memiliki fungsi membuat project D, auto completion, dll tersedia di Windows, Linux, Mac OSX, FreeBSD

IDE yang ditulas dalam D, dengan menggunakan DlangUI, yang dibuat oleh pencipta yang sama

Contoh-contoh

Hello World

Berikut ini program Helo Dunia dalam Dlang<syntaxhighlight lang="d" line="1"> import std.stdio;

void main( string[] args ) {

   writeln( "hello world" );

} </syntaxhighlight>

char []

Berikut ini pengaksesan array of char, yang notabene merupakan String dalam bahasa kasarnya. Perhatikan bahwa ini tidak diperlukan apabila kita benar-benar ingin menggunakan D. Contoh ini hanya cara saya ingin menunjukkan kemudahan dalam D, dibandingkan Anda yang sudah pernah berurusan dengan char dan pointer <syntaxhighlight lang="D"> // saya hanya ingin menggunakan fungsi writefln di pustaka std.stdio milik phobos import std.stdio: writefln; /*

* I can't found any of it function in phobos lib
*/

class MString { static public char [] midDex(char [] a, int indexA, int indexB) { return a[indexA .. (indexB+1)]; }

static public char [] mid(char [] a, int indexA, int dlength=0) { return a[indexA .. ((dlength>0)?indexA+dlength:a.length)]; }

static public char [] left(char [] a, int width) { return midDex(a, 0, width-1); } static public char [] right(char [] a, int width) { return midDex(a, (a.length - width), a.length-1); } }

/**

* perhatikan unittest, salah satu fungsionalitas dalam bahasa D. Yang bisa memberikan kepada kita
* kemampuan untuk melakukan testing terhadap salah satu bagian program yang kita miliki
*/

unittest { assert(MString.midDex("0123456789", 3, 6) == "3456"); assert(MString.left("0123456789", 3) == "012"); assert(MString.right("0123456789", 3) == "789"); assert(MString.mid("0123456789", 3, 2) == "34"); assert(MString.mid("abcdefghijklmn", 5, 3) == "fgh"); assert(MString.mid("abcdefghijklmn", 5) == "fghijklmn"); }

void main(char [][] args) { char [] a = MString.left("Aku suka kamu D?"); // perhatikan tanda ~ adalah concatenation writefln("Ini adalah isi dari a" ~ a ~ " mudah kan:) "); writefln("Ini adalah isi dari %s mudah kan", a); // bisa juga begini char [] b = "Berpikirlah dengan mudah\n" ~ a ~ " cobain ini"; writefln("Asyik kan: %s", b); } </syntaxhighlight>

Konkurensi

Konkurensi sepenuhnya diterapkan di pustaka, dan tidak memerlukan dukungan dari kompilernya. Implementasi alternatif dan metodologi penulisan kode bersamaan dimungkinkan. Penggunaan sistem pengetikan D memang membantu memastikan keamanan memori.<syntaxhighlight lang="d"> import std.stdio, std.concurrency, std.variant;

void foo() {

   bool cont = true;
   while (cont)
   {
       receive( // Delegates digunakan untuk mencocokkan jenis pesan.
           (int msg) => writeln("int received: ", msg),
           (Tid sender) { cont = false; sender.send(-1); },
           (Variant v) => writeln("huh?") // Varian cocok dengan jenis apa pun
       );
   }

}

void main() {

   auto tid = spawn(&foo); // membuat sebuah thread foo() berjalan baru
   foreach (i; 0 .. 10)
       tid.send(i);   // mengirim beberapa integer
   tid.send(1.0f);    // mengirim sebuah float
   tid.send("hello"); // mengirim sebuah string
   tid.send(thisTid); // mengirim sebuah struct (Tid)
   receive((int x) => writeln("Thread utama menerima pesan: ", x));

} </syntaxhighlight>

Thread

Berikut ini tentang pemrograman Thread yang menggunakan library Phobos. Skenarionya, ini merupakan pemrograman berbasis console, di mana seorang user bisa menghentikan proses yang sedang terjadi dengan menekan tombol q atau Q di keyboard. Proses yang sedang terjadi dijalankan melalui sebuah Thread dan proses menunggu juga dilakukan dalam Thread yang dipanggil dari sebuah Thread utama di fungsi main. <syntaxhighlight lang="D"> import std.thread; import std.stdio; import std.c.stdio; import std.date; // Thread proses utama .... class mythread:Thread { private char [] d_name = ""; private long d_nloop = 10; private bool d_stop = false; this(char [] name, long nloop) { super(); writefln(name ~ " called"); this.d_name = name; this.d_nloop = nloop; }

override public int run() { long i = 0; for(i=0;(i<this.d_nloop && (!d_stop));i++) {

//writefln(d_name ~ " called again ");

} if( d_stop )

writefln(d_name ~ " stopped by user in "
~ std.string.toString(i) ~ " times of loop");

else writefln(d_name ~ " Finished ..." ~ std.string.toString(d_nloop)); return 0; }

public void stopIt() { d_stop = true; } } // thread untuk menunggu pengguna menekan q atau Q class UserToStopAllThread: Thread { private bool d_stop = false; this() { super(); }

override public int run() { while(!d_stop) { char ch = getch(); if(ch == 'q' || ch == 'Q') break; } return 0; }

public void stopIt() { d_stop = true; } } // ini adalah Thread utama .... void main(char [][] args) { int i = 0; mythread a = new mythread("A", 9999999999999);

writefln("Tekan q untuk menghentikan proses ...."); UserToStopAllThread utsa = new UserToStopAllThread; a.start(); utsa.start();

while(a.getState() == Thread.TS.RUNNING && utsa.getState() == Thread.TS.RUNNING) { // tunggu sampai a selesai atau user menekan tombol 'Q' or 'q' } if(a.getState() == Thread.TS.RUNNING) a.stopIt(); // pastikan berhenti if(utsa.getState() == Thread.TS.RUNNING) utsa.stopIt(); // pastikan berhenti } </syntaxhighlight>

Fungsional

<syntaxhighlight lang="d" line="1"> import std.stdio; import std.algorithm: map;

void main( string[] args ) {

   int[] arr = [ 1, 2, 3, 4, 5 ];
   arr = map!( x => x + 1 )( arr );
   writeln( arr ) //[ 2, 3, 4, 5, 6 ]

} </syntaxhighlight>

Metaprogramming

contoh template dalam D<syntaxhighlight lang="d"> auto add( T )( T a, T b ) {

   return a + b;

}

import std.stdio;https:/

void main( string[] args ) {

   int a = 10;
   int b = 20;
   writeln( add( a + b ) ) //30
   float x = 10.3;
   float y = 20.4;
   writeln( add( x, y ) ) //30.7

} </syntaxhighlight>

Pranala Berkenaan

Referensi

Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 29298708 (2026-05-31T18:11:24Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.