ID++ adalah bahasa pemrograman sederhana yang menggunakan bahasa Indonesia sebagai sintaksisnya. Tujuan utamanya adalah untuk mempermudah siapa saja, khususnya pemula, dalam belajar logika pemrograman tanpa terkendala oleh hambatan bahasa Inggris.
Dilengkapi dengan Virtual Machine (VM) Stack-based dan Bytecode Caching untuk performa runtime yang cepat dan responsif!
ID++ tersedia untuk Windows, macOS, dan Linux.
Jika Anda sudah memiliki Rust dan Cargo terpasang:
cargo install idppJalankan perintah ini di terminal:
curl -fsSL https://raw.githubusercontent.com/rillToMe/idpp/main/install.sh | shBuka PowerShell dan jalankan:
iwr https://raw.githubusercontent.com/rillToMe/idpp/main/install.ps1 | iexKunjungi halaman Releases dan unduh versi yang sesuai dengan sistem operasi Anda.
Setelah terpasang, Anda bisa menggunakan ID++ langsung di terminal.
Untuk menjalankan file:
idpp program.idpp(ID++ secara otomatis akan melakukan compile dan membuat file cache program.idppc. Pada eksekusi berikutnya, ID++ akan langsung meload cache tersebut sehingga jauh lebih cepat!)
Untuk menjalankan file tanpa cache (memaksa compile ulang):
idpp --no-cache program.idppUntuk masuk ke mode interaktif (REPL):
idppID++ kini dilengkapi dengan rak, package manager resmi untuk mengelola proyek dan dependensi modul .idpp.
cargo install --path rakrak buat nama_proyek
cd nama_proyek
rak jalanPerintah di atas akan membuat struktur berikut:
nama_proyek/
βββ rak.toml
βββ src/
βββ utama.idpp
[proyek]
nama = "nama_proyek"
versi = "0.1.0"
titik_masuk = "src/utama.idpp"
[dependensi]
# Dependensi berupa URL langsung ke file .idpp raw
matematika = "https://raw.githubusercontent.com/user/repo/main/math.idpp"| Perintah | Keterangan |
|---|---|
rak buat <nama> |
Membuat proyek baru dengan struktur standar |
rak pasang |
Mengunduh semua dependensi ke .rak_modul/ |
rak jalan |
Menjalankan program via idpp <titik_masuk> |
ID++ 1.0.0 tidak lagi menggunakan sekadar tree-walking interpreter, namun sudah beralih ke Stack-based Virtual Machine.
Alur kerja ID++ sekarang:
- Eksekusi Pertama: File
.idppβ Lexer β Parser β AST β Compiler β Bytecode β Eksekusi oleh VM. - Cache Dibuat: Bytecode kemudian disimpan sebagai file
.idppcdi folder yang sama. - Eksekusi Berikutnya: ID++ mengecek timestamp (waktu modifikasi). Jika file sumber tidak berubah, ID++ akan melewati proses Parsing & Compiling, dan langsung mengeksekusi bytecode dari cache!
Untuk pengalaman penulisan kode yang lebih baik dengan syntax highlighting, gunakan ekstensi VS Code resmi dari ID++!
- Buka folder
vscode-extension - Jalankan
npm installdannpm run package(menggunakan vsce) - Instal ekstensi:
code --install-extension idpp-language-1.0.0.vsix
ID++ membaca seperti bahasa Indonesia biasa. Akhiri setiap baris dengan titik ..
tulis "Halo Dunia!".
tulis "Nilai kamu adalah ", 100, ".".
tanya "Siapa namamu?" simpan ke nama.
simpan nama = "Budi".
simpan umur = 17.
tetap PI = 3.14. // tetap = konstanta, tidak bisa diubah
Gunakan simbol +, -, *, / untuk ekspresi:
simpan hasil = 10 + 5.
simpan selisih = 10 - 3.
simpan kali_dua = 4 * 2.
simpan bagi_tiga = 9 / 3.
simpan sisa = 10 sisa 3. // modulo
simpan pangkat = 2 pangkat 8.
| Simbol | Kata | Arti |
|---|---|---|
> |
lebih dari |
lebih besar |
< |
kurang dari |
lebih kecil |
>= |
lebih dari sama |
lebih besar atau sama |
<= |
kurang dari sama |
lebih kecil atau sama |
== |
sama dengan |
sama |
!= |
tidak sama dengan |
tidak sama |
simpan nilai = 85.
jika nilai >= 90 maka
tulis "Predikat A".
atau jika nilai >= 80 maka
tulis "Predikat B".
atau jika nilai >= 70 maka
tulis "Predikat C".
lainnya
tulis "Predikat D".
selesai.
// Loop selama kondisi terpenuhi
simpan i = 1.
selama i kurang dari sama 5 lakukan
tulis i.
tambah i dengan 1.
selesai.
// Loop N kali
ulangi 5 kali
tulis "Halo".
selesai.
// Loop untuk setiap item
simpan buah = daftar "apel", "mangga", "jeruk".
untuk setiap b dalam buah lakukan
tulis b.
selesai.
buat fungsi jumlah dengan a dan b
kembalikan a + b.
selesai.
simpan hasil = jalankan jumlah dengan 5 dan 10.
simpan angka = daftar 1, 2, 3.
tambahkan 4 ke angka.
tulis angka di 0.
simpan siswa = kamus
nama: "Budi",
umur: 17.
selesai.
tulis siswa ambil nama.
ubah siswa umur menjadi 18.
ID++ punya library HTTP bawaan. Respons berupa kamus dengan field status, ok, teks, json, header, url.
// GET - ambil data dari API
simpan resp = http ambil "https://api.example.com/users/1".
tulis "Status: ", resp ambil status.
tulis "OK: ", resp ambil ok.
simpan data = resp ambil json.
tulis "Nama: ", data ambil name.
// GET dengan query string dan header
simpan opsi = kamus
param: kamus { q: "rust", page: 1 },
header: kamus { Authorization: "Bearer token123" }.
selesai.
simpan resp = http ambil "https://api.example.com/search", opsi.
// POST - kirim data JSON
simpan payload = kamus
nama: "Budi",
umur: 17.
selesai.
simpan resp = http kirim "https://api.example.com/users", payload.
// PUT - update data
simpan resp = http ubah "https://api.example.com/users/1", payload.
// DELETE
simpan resp = http hapus "https://api.example.com/users/1".
// PATCH - update sebagian data
simpan resp = http perbarui "https://api.example.com/users/1", payload.
// Basic Auth
simpan opsi = kamus
auth: daftar "username", "password",
timeout: 10.
selesai.
simpan resp = http ambil "https://api.example.com/private", opsi.
coba
lempar "Ada masalah!".
tangkap galat
tulis "Error: ", galat, ".".
akhirnya
tulis "Selesai.".
selesai.
// Ini komentar satu baris
# Ini juga komentar satu baris
/* Ini komentar
beberapa baris */
| Fungsi | Deskripsi | Contoh Penggunaan |
|---|---|---|
panjang |
Panjang teks atau daftar | panjang "halo" |
huruf besar dari |
Ubah teks jadi kapital | huruf besar dari "halo" |
huruf kecil dari |
Ubah teks jadi huruf kecil | huruf kecil dari "HALO" |
potong |
Memotong string dari index ke index | potong "halo" dari 0 ke 2 |
ganti |
Ganti substring | ganti "budi" dari "b" ke "p" |
mengandung |
Cek ketersediaan substring | mengandung "budi" cek "ud" |
bulatkan |
Pembulatan angka | bulatkan 3.5 |
lantai |
Pembulatan ke bawah | lantai 3.9 |
langit |
Pembulatan ke atas | langit 3.1 |
mutlak |
Nilai absolut | mutlak -5 |
acak |
Angka acak 0.0 sampai 1.0 | acak |
maks |
Angka terbesar | maks 1, 2, 3 |
min |
Angka terkecil | min 1, 2, 3 |
akar |
Akar kuadrat | akar 16 |
angka dari |
Konversi teks ke integer | angka dari "10" |
teks dari |
Konversi angka ke teks | teks dari 10 |
desimal dari |
Konversi teks ke desimal | desimal dari "10.5" |
tipe dari |
Cek tipe variabel | tipe dari umur |
Kami sangat terbuka untuk kontribusi! Silakan buka Issue atau buat Pull Request di repository GitHub kami.
Proyek ini dilisensikan di bawah MIT License.
