Jumat, 23 Oktober 2026
11:55 WIB
TERKINI
Bandar Lampung Dorong Gaya Hidup Sehat, Pemkot Bandar Lampung Dukung Jalan Sehat Akbar di Panjang Bandar Lampung Peringatan Petugas Diabaikan, Pemotor Tewas Tertabrak Kereta Babaranjang di Bandar Lampung Lampung Selatan Kolom Abu Anak Krakatau Capai 500 Meter, Warga Lampung Selatan Diimbau Waspada Pesawaran Unila Dampingi Orkes Gambus Al-Anwar: Tradisi Bertemu Teknologi Modern Bandar Lampung Kualitas Udara Bandar Lampung: Kelompok Sensitif Diminta Tetap Waspada Bandar Lampung Jejak Multidisiplin Anshori Djausal Terekam dalam Pameran Kayu Ara di Lampung Tuba Barat Tulangbawang Barat Unggul dalam Penanggulangan TBC, Lampaui Target Provinsi Bandar Lampung Prioritas Keselamatan Terabaikan: Akses Rumah Aman Korban KDRT di Lampung Lampung Tengah Gerebek Dua Lokasi, Polres Lampung Tengah Tangkap Pengedar Sabu 7,40 Gram Pemprov Lampung Kolaborasi Pemprov Padamkan Kebakaran TPA Bandarjaya, Tol Bakter Terganggu Asap Tebal Bandar Lampung Dorong Gaya Hidup Sehat, Pemkot Bandar Lampung Dukung Jalan Sehat Akbar di Panjang Bandar Lampung Peringatan Petugas Diabaikan, Pemotor Tewas Tertabrak Kereta Babaranjang di Bandar Lampung Lampung Selatan Kolom Abu Anak Krakatau Capai 500 Meter, Warga Lampung Selatan Diimbau Waspada Pesawaran Unila Dampingi Orkes Gambus Al-Anwar: Tradisi Bertemu Teknologi Modern Bandar Lampung Kualitas Udara Bandar Lampung: Kelompok Sensitif Diminta Tetap Waspada Bandar Lampung Jejak Multidisiplin Anshori Djausal Terekam dalam Pameran Kayu Ara di Lampung Tuba Barat Tulangbawang Barat Unggul dalam Penanggulangan TBC, Lampaui Target Provinsi Bandar Lampung Prioritas Keselamatan Terabaikan: Akses Rumah Aman Korban KDRT di Lampung Lampung Tengah Gerebek Dua Lokasi, Polres Lampung Tengah Tangkap Pengedar Sabu 7,40 Gram Pemprov Lampung Kolaborasi Pemprov Padamkan Kebakaran TPA Bandarjaya, Tol Bakter Terganggu Asap Tebal
D (bahasa pemrograman)

D (bahasa pemrograman)

Bagikan:
Artikel ini perlu dirapikan agar memenuhi standar Wikipedia. Silakan kembangkan artikel ini semampu Anda. Merapikan artikel dapat dilakukan dengan wikifikasi atau membagi artikel ke paragraf-paragraf. Jika sudah dirapikan, silakan hapus templat ini. (Pelajari cara dan kapan saatnya untuk menghapus pesan templat ini)

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]

Bahasa pemrograman D
120px-D_Programming_Language_logo.svg.png?utm_source=id.wikipedia.org&utm_campaign=parser&utm_content=thumbnail
ParadigmaMulti-paradigma: fungsional, imperatif, berorientasi objek
Dirancang olehWalter Bright, Andrei Alexandrescu (sejak 2007)
PengembangD Language Foundation
Pertama kali munculDesember 8, 2001;24 tahun lalu (2001-12-08)[3]
Rilis stabil
2.112.1[4] Sunting di Wikidata / 5 Agustus 2026 (5 Agustus 2026)
Tata tertib penjenisanDisimpulkan, statis, kuat
SOFreeBSD, Linux, macOS, Windows
LisensiBoost[5][6][7]
Situs webdlang.org
Pelaksanaan utama
DMD (implementasi referensi), GCC,

GDC,

LDC, SDC
Dipengaruhi oleh
BASIC,[8] C, C++, C#, Eiffel,[9] Java, Python
Memengaruhi
Genie, MiniD, Qore, Swift,[10] Vala, C++11, C++14, C++17, C++20, Go, C#, dan lainnya.

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,[11] kemudian mencapai versi 1.0 pada tahun 2007.[12]

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[13] Tango memakai pendekatan yang berbeda dengan Phobos, dimana Tango lebih mirip dengan Pustaka pemrograman Java.

Kemudian pada Juni 2007[14] 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[15]

Pustaka GUI (Graphical User Interface)

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

Integrated Development Environment[16]

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

importstd.stdio;

voidmain(string[]args)
{
writeln("hello world");
}

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

// saya hanya ingin menggunakan fungsi writefln di pustaka std.stdio milik phobos
importstd.stdio:writefln;
/*
 * I can't found any of it function in phobos lib
 */
classMString
{
staticpublicchar[]midDex(char[]a,intindexA,intindexB)
{
returna[indexA..(indexB+1)];
}

staticpublicchar[]mid(char[]a,intindexA,intdlength=0)
{
returna[indexA..((dlength>0)?indexA+dlength:a.length)];
}

staticpublicchar[]left(char[]a,intwidth)
{
returnmidDex(a,0,width-1);
}
staticpublicchar[]right(char[]a,intwidth)
{
returnmidDex(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");
}

voidmain(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);
}

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.

importstd.stdio,std.concurrency,std.variant;

voidfoo()
{
boolcont=true;

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

voidmain()
{
autotid=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((intx)=>writeln("Thread utama menerima pesan: ",x));
}

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.

importstd.thread;
importstd.stdio;
importstd.c.stdio;
importstd.date;
// Thread proses utama ....
classmythread:Thread
{
privatechar[]d_name="";
privatelongd_nloop=10;
privateboold_stop=false;
this(char[]name,longnloop)
{
super();
writefln(name~" called");
this.d_name=name;
this.d_nloop=nloop;
}

overridepublicintrun()
{
longi=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));
return0;
}

publicvoidstopIt()
{
d_stop=true;
}
}
// thread untuk menunggu pengguna menekan q atau Q
classUserToStopAllThread:Thread
{
privateboold_stop=false;
this()
{
super();
}

overridepublicintrun()
{
while(!d_stop)
{
charch=getch();
if(ch=='q'||ch=='Q')
break;
}
return0;
}

publicvoidstopIt()
{
d_stop=true;
}
}
// ini adalah Thread utama ....
voidmain(char[][]args)
{
inti=0;
mythreada=newmythread("A",9999999999999);

writefln("Tekan q untuk menghentikan proses ....");
UserToStopAllThreadutsa=newUserToStopAllThread;
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
}

Fungsional

importstd.stdio;
importstd.algorithm:map;

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

Metaprogramming

contoh template dalam D

autoadd(T)(Ta,Tb)
{
returna+b;
}

importstd.stdio;https:/

voidmain(string[]args)
{
inta=10;
intb=20;
writeln(add(a+b))//30
floatx=10.3;
floaty=20.4;
writeln(add(x,y))//30.7
}

Pranala Berkenaan

Referensi

  1. ↑ "Programming in D for C++ Programmers - D Programming Language". dlang.org. Diakses tanggal 2022-04-05.
  2. ↑ Archived at Ghostarchive and the Wayback Machine: Andrei Alexandrescu (2 Agustus 2010). Three Cool Things About D.{{cite AV media}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  3. ↑ "D Change Log to Nov 7 2005". D Programming Language 1.0. Digital Mars. Diakses tanggal 1 Desember 2011.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  4. ↑ "Change Log: 2.112.1". 5 Agustus 2026.
  5. ↑ "dmd front end now switched to Boost license". Diakses tanggal 9 September 2014.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  6. ↑ "dmd Backend converted to Boost License". 7 April 2017. Diakses tanggal 9 April 2017.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  7. ↑ "D 2.0 FAQ". Diakses tanggal 11 Agustus 2015.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  8. ↑ "On: Show HN: A nice C string API". Hacker News. Desember 3, 2022. Diakses tanggal 4 Desember 2022.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  9. ↑ Alexandrescu, Andrei (2010). The D programming language (Edisi First). Upper Saddle River, New Jersey: Addison-Wesley. hlm. 314. ISBN 978-0321635365.
  10. ↑ "Building assert() in Swift, Part 2: __FILE__ and __LINE__". Diakses tanggal 25 September 2014.{{cite web}}: Pemeliharaan CS1: Tanggal diterjemahkan otomatis (link)
  11. ↑ "Change Log - D Programming Language 1.0 - Digital Mars". www.digitalmars.com (dalam bahasa American English). Diakses tanggal 2018-06-17.
  12. ↑ "Change Log - D Programming Language 1.0 - Digital Mars". www.digitalmars.com (dalam bahasa American English). Diakses tanggal 2018-06-17.
  13. ↑ "Announcing a new library". forum.dlang.org (dalam bahasa American English). Diakses tanggal 2018-06-17.
  14. ↑ https://dlang.org/blog/2018/03/03/dmd-2-079-0-released
  15. ↑ "SiegeLord/Tango-D2". GitHub (dalam bahasa Inggris). Diakses tanggal 2018-06-17.
  16. ↑ "IDEs - D Wiki". wiki.dlang.org (dalam bahasa Inggris). Diakses tanggal 2018-06-18.
Konten disalin dari Wikipedia Bahasa Indonesia (lisensi CC BY-SA) Lihat versi asli di Wikipedia

Rekomendasi Pilihan