D (bahasa pemrograman): Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan
Tag: Suntingan perangkat seluler Suntingan peramban seluler
Losstreak (bicara | kontrib)
kTidak ada ringkasan suntingan
 
(9 revisi perantara oleh 7 pengguna tidak ditampilkan)
Baris 1:
{{rapikan|topik=Cekteknologi informasi}}
{{paragraf Cek}}
'''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 sebagai rekayasa ulang dari [[C++]], D adalah bahasa yang sangat berbeda — fitur D dapat dianggap sebagai ide yang disederhanakan dan diperluas dari C++,<ref>{{Cite web|title=Programming in D for C++ Programmers - D Programming Language|url=https://dlang.org/articles/cpptod.html|website=dlang.org|access-date=2022-04-05}}</ref> Namun, 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]].
{{rapikan|topik=Cek informasi}}
 
[[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]{{cbignore}} and the [https://web.archive.org/web/20101025114033/http://www.youtube.com//watch?v=RlVpPstLPEc Wayback Machine]{{cbignore}}: {{Cite AV media|url=https://www.youtube.com/watch?v=RlVpPstLPEc|title=Three Cool Things About D|date=2 August 2010|people=Andrei Alexandrescu}}{{cbignore}}</ref>
 
{{Infobox programming language
| name = Bahasa pemrograman D
| logo = D Programming Language logo.svg
| logo size = 120px
| paradigm = [[Bahasa pemrograman multi-paradigma|Multi-paradigma]]: [[pemrograman fungsional|fungsional]], [[pemrograman imperatif|imperatif]], [[pemrograman berorientasi objek|berorientasi objek]]
| released = {{start date and age|df=y|2001|12|08}}<ref name="D1 changelog1" />
| designer = [[Walter Bright]], [[Andrei Alexandrescu]] (sejak 2007)
| developer = [[D Language Foundation]]
| typing = [[Pengetikan yang disimpulkan|Disimpulkan]], [[pengetikan statis|statis]], [[pengetikan yang kuat|kuat]]
| implementations = [https://github.com/dlang/dmd DMD] ([[implementasi referensi]]), [https://gcc.gnu.org/ GCC],
[https://gdcproject.org/ GDC],
[https://github.com/ldc-developers/ldc LDC], [https://github.com/SDC-Developers/SDC SDC]
| dialects =
| influenced = [[Genie (bahasa pemrograman)|Genie]], MiniD, [[Qore (bahasa pemrograman)|Qore]], [[Swift (bahasa pemrograman)|Swift]],<ref name="Swift - Getting the location of a caller">{{cite web |url=https://developer.apple.com/swift/blog/?id=15 |title=Building assert() in Swift, Part 2: __FILE__ and __LINE__ |access-date=25 September 2014}}</ref> [[Vala (bahasa pemrograman)|Vala]], [[C++11]], [[C++14]], [[C++17]], [[C++20]], [[Go (bahasa pemrograman)|Go]], [[C Sharp (bahasa pemrograman)|C#]], dan lainnya.
| license = [[Boost Software License|Boost]]<ref name="D-frontend-license" /><ref name="boost-backend">{{cite web |url=https://forum.dlang.org/post/oc8acc$1ei9$1@digitalmars.com |title=dmd Backend converted to Boost License |date=7 April 2017 |access-date=9 April 2017}}</ref><ref>{{cite web |url=http://dlang.org/faq.html |title=D 2.0 FAQ |access-date=11 August 2015}}</ref>
<!--GDC: [[GNU General Public License#Version 3|GPLv3+]];<br />
LDC: GPLv2+, partially [[BSD licenses|BSD]]
| wikibooks = D Programming
| caption =
| file_ext = .d<ref>{{cite web |url= https://fileinfo.com/extension/d |title=D Programming Language - Fileinfo.com |access-date=15 November 2020}} {{citation needed|date=September 2020}}</ref><ref>{{cite web |url= https://dlang.org/dmd-windows.html |title=D Programming Language - dlang.org |access-date=15 November 2020}} {{citation needed|date=September 2020}}</ref><!-- DO NOT ADD .di HERE. It is not part of the language, it is part of the implementation. -->| latest release version = {{wikidata|property|reference|edit|P348}}
| latest release date = {{start date|{{wikidata|qualifier|P348|P577}}}}
| influenced_by = [[BASIC]],<ref>{{cite web |url=https://news.ycombinator.com/item?id=33846139 |title=On: Show HN: A nice C string API |date=December 3, 2022 |access-date=4 December 2022 |website=[[Hacker News]]}}</ref> [[C (bahasa pemrograman)|C]], [[C++]], [[C Sharp (bahasa pemrograman)|C#]], [[Eiffel (bahasa pemrograman)|Eiffel]],<ref>{{cite book |last1=Alexandrescu |first1=Andrei |title=The D programming language |url=https://archive.org/details/dprogramminglang00alex |url-access=limited |date=2010 |publisher=Addison-Wesley |location=Upper Saddle River, New Jersey |isbn=978-0321635365 |page=[https://archive.org/details/dprogramminglang00alex/page/n341 314] |edition=First}}</ref> [[Java (bahasa pemrograman)|Java]], [[Python (bahasa pemrograman)|Python]]
| operating_system = [[FreeBSD]], [[Linux]], [[macOS]], [[Microsoft Windows|Windows]]
}}
 
== Sejarah Perkembangan D ==
D( (bahasa pemrograman ) adalah bahasa yang dibuat oleh [[wiki-indonesia.club/Walter Bright|Walter Bright]]. D mulai dibuat pada tahun 1999 dan disebarkan ke publik pertama kali pada tahun 2001,<ref>{{Cite web|url=http://www.digitalmars.com/d/1.0/changelog1.html|title=Change Log - D Programming Language 1.0 - Digital Mars|website=www.digitalmars.com|language=en-US|access-date=2018-06-17}}</ref>, kemudian mencapai versi 1.0 pada tahun 2007.<ref>{{Cite web|url=http://www.digitalmars.com/d/1.0/changelog2.html|title=Change Log - D Programming Language 1.0 - Digital Mars|website=www.digitalmars.com|language=en-US|access-date=2018-06-17}}</ref>.
 
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<ref>{{Cite web|url=http://forum.dlang.org/post/en9ou4$23hr$1@digitaldaemon.com|title=Announcing a new library|website=forum.dlang.org|language=en-US|access-date=2018-06-17}}</ref> Tango memakai pendekatan yang berbeda dengan Phobos, dimana Tango lebih mirip dengan Pustaka pemrograman Java.
 
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.
Baris 48 ⟶ 75:
tersedia di Windows, Linux, Mac OSX, FreeBSD
 
* [https://github.com/BBasile/Coedit Codeit] {{Webarchive|url=https://web.archive.org/web/20170303233646/https://github.com/BBasile/Coedit |date=2017-03-03 }}
* [https://github.com/buggins/dlangide DlangIDE]
 
Baris 72 ⟶ 99:
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
<sourcesyntaxhighlight lang="D">
// saya hanya ingin menggunakan fungsi writefln di pustaka std.stdio milik phobos
import std.stdio: writefln;
Baris 123 ⟶ 150:
writefln("Asyik kan: %s", b);
}
</syntaxhighlight>
</source>
 
==== 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.
<sourcesyntaxhighlight lang="D">
import std.thread;
import std.stdio;
Baris 209 ⟶ 269:
if(utsa.getState() == Thread.TS.RUNNING) utsa.stopIt(); // pastikan berhenti
}
</syntaxhighlight>
</source>
 
=== FunctionalFungsional ===
<syntaxhighlight lang="d" line="1">
import std.stdio;
Baris 252 ⟶ 312:
== Referensi ==
{{reflist}}
{{Authority control}}
 
[[Kategori:Bahasa pemrograman sistem]]