Senin, 23 Juni 2025

Jam buka dan jam tutup kuil Suci Suci Sulaiman

Simulasi logika pembukaan dan penutupan Kuil Suci Sulaiman berdasarkan waktuBuka dan waktuTutup dan jam saat ini, menggunakan pendekatan berbasis objek, fungsi, dan kondisi.

/--
- Menggunakan modul atur untuk menyimpan nilai dari varibel, nilai sebagai informasi dasar. tentang kuil suci ke dalam memory.
- Semua disimpan dalam format variabel seperti :nama:, :lokasi:, :waktuBuka:, dsb.
--/
atur :nama: = "Kuil Suci Sulaiman"
atur :lokasi: = "Yerusalem"
atur :waktuBuka: = "06:00"
atur :waktuTutup: = "18:00"
atur :status: = "Tutup"

/--
- Menggunakan modul kelas.
- `punggung` berarti "inherit" nilai dari memory sebagai instance bawaan.
- Kelas ini akan memiliki properti kuil secara bawaan ketika di instalasi.
--/
kelas :kuilSuci:
  punggung :nama:, :lokasi:, :waktuBuka:, :waktuTututp:, :status:

  /--
  - Metode ini mengecek waktu :sekarang: dan membandingkan dengan jam buka-tutup.
  - Jika dalam rentang waktu buka, maka status diubah dan ditampilkan.
  --/
  metode buka():
    jika sekarang >= :waktuBuka: dan sekarang < :waktuTutup maka
      atur :status: = "Terbuka"
      tampilkan "Kuil Suci Sulaiman sekarang buka."
    jika tidak
      atur :status: = "Tutup"
      tampilkan "Kuil Suci Sulaiman sedang tutup."

-- Metode alternatif lainnya, jika ingin menutup kuil secara paksa. --
  metode tutup():
    atur :status: = "Tutup"
    tampilkan "Kuil Suci Sulaiman sedang tutup."

/--
- Membuat objek kuil dari kelas kuilSuci.
- Modul atur akan mengenali bahwa Anda membuat objek karena menggunakan (...).
--/
atur :kuil: = (kuilSuci)

-- Mneyusun ulang atribut ke dalam instace :kuil: yang ingin mengupdate manual --
atur :kuil:.nama = :nama:
atur :kuil:.waktuBuka = :waktuBuka:
atur :kuil:.waktuTutup = :waktuTutup:
atur :kuil:.status = :status:

/--
- Modul fungsi mendefinisikan fungsi bersama cekStatus
- Baris pertama: ambil waktu saat ini dalam format jam-menit (misalnya 14:23) disimpan ke :sekarang: (pakai modul waktu).
- Baris ketiga: mengeksekusi fungsiBuka() - yang berarti memanggil metode buka() dari kuil tersebut.
--/
fungsi cekStatus():
  waktu formatkustom "JJ:mm" ke :sekarang:
  fungsiBuka = :kuil:.buka
  fungsiBuka()

-- Menjalankan fungsi --
cekStatus()


Kamis, 19 Juni 2025

Contoh kode Pearl yang dihasilkan oleh AI

Contoh kode Pearl yang dihasilkan oleh AI dan dijelaskan oleh:

/-- Contoh: Program sederhana
     menggunakan modul ambil, jika, 
     ulangi, fungsi, dan kembalikan --/

-- Definisi fungsi hitungJumlah(a, b) --
fungsi hitungJumlah(a, b)
(
    ambil :hasil: dari a
    ambil :nilaiB: dari b
    ambil :jumlah: dari :hasil: 
    ambil :jumlah: dari :nilaiB:
    kembalikan :jumlah:
)

-- Inisialisasi variabel daftarAngka --
ambil :daftarAngka: dari [1, 2, 3, 4, 5]

-- Variabel penampung hasil --
ambil :total: dari 0

-- Loop untuk menjumlahkan semua angka di daftarAngka --
ulangi setiap dari :daftarAngka:
    ambil :angka: dari item
    ambil :total: dari :total:
    ambil :total: dari :total: + :angka:
selesai

-- Cek hasil total --
jika :total: == 15 maka tampilkan "Jumlahnya benar: :total:"

-- Gunakan fungsi hitungJumlah --
ambil :hasilFungsi: dari hitungJumlah(10, 20)

-- Tampilkan hasil fungsi --
tampilkan "Hasil fungsi hitungJumlah(10, 20): :hasilFungsi:"

Penjelasan singkat kode Pearl ini:

  • Membuat fungsi hitungJumlah yang menerima 2 parameter dan mengembalikan jumlahnya.

  • Mengisi variabel daftarAngka dengan array [1, 2, 3, 4, 5].

  • Melakukan perulangan untuk menjumlahkan seluruh angka dari daftarAngka ke variabel total.

  • Mengecek jika total sama dengan 15, maka tampilkan pesan sukses.

  • Memanggil fungsi hitungJumlah dengan argumen 10 dan 20, hasilnya disimpan di hasilFungsi.

  • Menampilkan hasil fungsi.


Minggu, 15 Juni 2025

Apa Itu Pearl?

Pearl adalah bahasa pemrograman eksperimental yang saya kembangkan menggunakan JavaScript. Pearl mencoba menghadirkan cara berpikir pemrograman yang lebih alami dan penutur Bahasa Indonesia.

Pearl bukan hanya sekadar proyek iseng, tapi juga eksperimen desain bahasa - bagaimana kalau kita membuat bahasa pemrograman yang tidak perlu dengan kata "if", "while", atau "print", namun jika, ulangi, dan tampilkan?

Dibalik itu semua, Pearl adalah interpreter baris-demi-baris yang memetakan setiap instruksi berbasis token ke modul modular seperti masukan.js, jika.js, ulangi.js, dan lainnya.


Kenapa Saya Membuat Pearl?

Motivasi sederhananya:

  • Bahasa lokal, akses lebih mudah. Banyak pemula kesulitan belajar karena sintaks terasa asing. Pearl menjembatani itu.
  • Eksperimen desain. Saya ingin tahu, bagaimana pengalaman "membuat bahasa sendiri" - dari tokenizer, memory, kontrol alur, hingga REPL.
  • Modularitas. Dengan sistem modular berbasis Node.js, Pearl mudah dikembangkan, diajarkan, atau di-fork.


Contoh Kode Pearl

masukkan :nama:
tampilkan "Halo," + :nama:

Penjelasan:
:nama: adalah data nilai yang Anda masukkan untuk mencetak di tampilkan oleh :nama: itu sendiri.


Struktur Internal Pearl

Setiap baris dalam Pearl diproses dengan sistem seperti ini:

  1. Tokenizer: memecah baris menjadi token (tokenize.js)
  2. Executor: token pertama (misalnya tampilkan) dipetakan ke modul (tampilkan.js)
  3. Interpreter: modul menangani logika berdasarkan token dan memory.
Pearl menyimpan semua variabel dan objek disebuah memori bersama global yaitu memory.js dan menangani struktur data kompleks seperti:

  • Daftar (array) dan daftar bersarang
  • Dikta (object)
  • Kelas dan instance: mendukung atribut dan tipe khusus


Fitur unggulan Pearl

  • Bahasa alami: semua perintah dalam Bahasa Indonesia, beberapa sedikit persen bahasa Inggris.
  • Modular: setiap instruksi diatur di file berbeda.
  • REPL dan File Mode
  • Struktur data lengkap: list, objek, kelas
  • Akses data kompleks


Cara Menjalankan Pearl

1. Klon atau gandakan repositori:

git clone https://github.com/aflacake/pearl
cd pearl
npm install

2. Buat file .pearl

masukkan :nama:
tampilkan "Selamat datang, " + nama

3. Jalankan

node index.js nama_file_kamu.pearl

atau masuk ke REPL:

node index.js


Ingin Lihat Isi Memori?

Pearl punya perintah khusus untuk debugging:

tampilkan memory

Ini akan mencetak isi memory dengan struktur penuh cocok untuk melihat state saat runtime.


Yuk Kontribusi!

Pearl masih dalam tahap pengembangan dan terbuka untuk:

  • Saran fitur
  • Perbaikan bug
  • Kolaborasi desain sintaks
  • Pull request modul baru
Kalau kamu tertarik dengan desain bahasa, sistem interpreter, atau mengajar pemrograman lokal, dengan senang hati saya bisa berdiskusi denganmu.

Jangan ragu untuk memberi feedback, atau clone dan coba sendiri. Siapa tahu kamu dapat berkontribusi di Pearl berikutnya!

#programming #language-design #interpreter #javascript #opensource #indonesia




Rabu, 11 Juni 2025

Menciptakan Bahasa Pemrograman Sendiri: Inilah Pearl

Mengapa Pearl diciptakan?

Pearl hadir dari semangat untuk menciptakan bahasa pemrograman yang dekat dengan bahasa ibu yang menciptakan - Bahasa Indonesia. Bahasa ini kembangkan oleh seorang programmer Nazwa dengan bantuan AI, yang percaya bahwa pemrograman seharusnya bisa diakses siapa saja tanpa terkendala oleh bahasa asing atau struktur sintaksis yang rumit.

Dibanyak bahasa pemrograman, kita terbiasa dengan perintah seperti print, if, atau while yang berasal dari Bahasa Inggris. Namun bagi penutur asli Bahasa Indonesia, pendekatan ini bisa terasa asing dan membuat belajar menjadi lebih sulit.

Pearl mencoba membalik pendekatan itu.

Dengan Pearl, kamu bisa menulis kode dalam gaya yang lebih alami, naratif, dan interaktif, misalnya:

jika nilai > 70
  tampilkan "Selamat, kamu lulus"

Perintahnya jelas, mudah dimengerti, dan sesuai dengan cara kita berpikir dalam Bahasa Indonesia.

Fisolofi dibalik Pearl

Pearl bukan hanya soal mengganti kata-kata. Bahasa ini dirancang dengan tujuan utama:
  • Mempermudah proses belajar pemrograman, khususnya bagi pemula yang merasa terintimidasi oleh bahasa asing.
  • Menyerdehanakan struktur kode, agar lebih linear dan mudah diikuti.
  • Mendorong interaktivitas dan eksperimen, bukan menghafal sintaks.
  • Memberi ruang untuk kreatifitas, bukan kekakuan aturan.
Meskipun Pearl saat ini dikembangkan sebagai sarana belajar dan eksplorasi, bukan tidak mungkin di masa depan Pearl tumbuh menjadi bahasa yang digunakan dalam konteks industri dan produksi nyata. Namun, arah pertumbuhan itu akan tetap mempertahankan prinsip dasarnya: kemudahan, kejelasan, dan kedekatan dengan cara berpikir manusia - terutama penutur Bahasa Indonesia.

Membuat bahasa pemrograman sendiri adalah perjalanan yang menantang, tetapi juga sangat menyenangkan. Pearl adalah hasil dari rasa ingin tahu, cinta pada buatan negeri, dan semangat untuk membuat pemrograman lebih ramah dan bisa dinikmati siapa saja.

Bagi saya, Pearl bukan hanya tentang kode. Ia adalah wujud dari keyakinan bahwa teknologi bisa dibuat lebih manusiawi, lebih inklusif, dan lebih akrab dengan budaya kita sendiri.

Saya berharap Pearl bisa menjadi pintu masuk bagi banyak orang Indonesia untuk mengenal logika program - tanpa merasa asing atau terbebani oleh Bahasa Inggris. Dan kalau suatu hari Pearl benar-benar tumbuh besar, digunakan secara luas, atau bahkan masuk ke dunia industri, satu hal yang akan selalu dipertahankan adalah kesederhanaannya.

Sabtu, 07 Juni 2025

Merayakan Idul Adha bersama Pearl Bahasa Pemrograman cantik

Selamat hari raya Idul Adha bagi yang merayakannya, semoga allah membalas atas pengorbanan "hewan" kita dan diterima amal ibadah kurban kita oleh-Nya. Kali ini dengan Idul Adha kita membahas tata cara menggambar kanvas dengan bahasa pemrograman Pearl menggambar kambing dalam rangka memperingati hari raya Idul Adha, Idul Adha adalah dimana hari pengorbanan kambing, domba, sapi dan kerbau untuk dipersembahkan kepada Allah dan atas nama-Nya, dari kisah Nabi Ibrahim sendiri ingin mengorbankan anaknya bernama Ismail namun Tuhan menggantinya dengan sebuah kambing yang terjerembab di semak-semak untuk dikorbankan.

Kode spesial untuk kurban hari raya (hanya kambing saja):


gambar buat-kanvas 400 300

gambar warna "lightgray"
gambar kotak 150 150 100 60
gambar lingkaran 175 140 20

gambar warna "gray"
gambar kotak 155 210 10 40
gambar kotak 185 210 10 40
gambar kotak 215 210 10 40
gambar kotak 245 210 10 40

gambar warna "black"
gambar garis 170 130 160 110
gambar garis 180 130 190 110

gambar warna "black"
gambar lingkaran 170 135 3
gambar lingkaran 180 135 3

gambar warna "lightgray"
gambar kotak 160 140 5 10
gambar kotak 190 140 5 10

gambar warna "black"
gambar huruf "bold 18px Arial"
gambar teks "Selamat Hari Idul Adha" 140 270

gambar simpan "anak_kambing.png"

Demikian tutorial ini, selamat hari raya Idul Adha!


Jumat, 06 Juni 2025

Membahas gambar untuk grafis Pearl

Pearl meriliskan bentuk visualnya dalam penorehan seni karya pengguna dengan kanvas warna putih sebagai warna bawaan. Perilisan pertama ini mencangkup penggambaran garis, lingkaran, persegi dan lainnya. Perilisan Peark ini terinspirasi dari versi alpha 0 dengan supportnya dengan HTML, namun sekarang tidak karena penetuan sekarang Pearl adalah backend bukan frontend yang memfokuskan pada alur kerja bukan grafis, meski begitu Pearl sendiri bisa dalam bentuk grafis, bagaimanapun masih dalam tahap pengembangan dini.

CLI untuk Windows, Linux, dan Mac OS

Pearl setelah meriliskan executabel mendukung di ketiga panggung peranti seperti Windows, Linux, dan MacOS. Pearl mengeluarkan CLI mendukung pada tiga perangkat Windows, Linux, dan MacOS untuk proses pengiriman paket lebih cepat (paket saat ini) tanpa perlu menunggu paket perilisan tag terlebih dahulu. Maksud dari ini adalah untuk efisiensi penjalanan terkesan lebih cepat dan mudah dengan CLI. CLI memerlukan PATH perizinan pada setiap perangkat, bahkan paling khusus adalah Windows. Cek pembaruan file masa kininya di https://github.com/aflacake/pearl.

Kuntungan penggunaan CLI selain kestabilan adalah: waktu yang las untuk ritme teks, teks tidaklah menjadikan grafis yang berat, cpu dan ram tidak meninggi penggunaannya.

Jadi membahas grafis sebelumnya yaitu HTML sebagai teman dekat Pearl. Pearl tidaklah bisa dirender di HTML itulah mengapa bahasa pemrograman ini disebut backend developer bukan ke ranah frontend developer lagi. Sebelumnya di versi alpha atau 0 masih bisa karena itu bukanlah perilisan publik maka dianggap sudah out-to-date. Dan versi seutuhnya stabil berada pada 1.0.0 dan seterusnya.

Jadi nafas di Pearl adalah backend bukan frontend lagi. Namun ada modul grafis bentuk untuk itu maka dengan perintah "gambar" bisa menggambar sesuatu bentuk seperti lingkaran, persegi, dan lainnya.

Postingan lainnya

Jam buka dan jam tutup kuil Suci Suci Sulaiman

Simulasi logika pembukaan dan penutupan Kuil Suci Sulaiman berdasarkan waktuBuka dan waktuTutup dan jam saat ini, menggunakan pendekatan ber...