4 poin oleh GN⁺ 2024-04-25 | 1 komentar | Bagikan ke WhatsApp

Pengenalan bahasa pemrograman Piet

  • Piet adalah bahasa pemrograman untuk menulis program yang tampak seperti gambar abstrak
  • Namanya diambil dari Piet Mondrian, pelopor seni abstrak geometris

Prinsip perancangan bahasa Piet

  • Kode program berbentuk seperti seni abstrak

Warna yang digunakan di Piet

  • Piet menggunakan 20 warna unik
    • Siklus hue: merah -> kuning -> hijau -> sian -> biru -> magenta -> merah
    • Siklus kecerahan: terang -> normal -> gelap -> terang
  • Putih dan hitam tidak termasuk dalam kedua siklus tersebut
  • Warna tambahan (oranye, cokelat, dll.) boleh digunakan, tetapi efeknya bergantung pada implementasi
    • Dalam kasus paling sederhana, diperlakukan sama seperti putih

Codel

  • Unit dasar kode Piet adalah blok warna
    • Terdiri dari satu atau lebih codel berwarna sama yang saling bersebelahan
    • Blok warna yang hanya bersebelahan secara diagonal tidak dianggap berkelanjutan
    • Bentuknya tidak dibatasi dan dapat memiliki "lubang" di dalamnya dengan warna lain

Stack

  • Piet menggunakan stack untuk menyimpan semua nilai data
  • Nilai data hanya berupa bilangan bulat, tetapi dapat dibaca atau dikeluarkan sebagai nilai karakter Unicode
  • Secara konseptual stack memiliki kedalaman tak terbatas, tetapi implementasi dapat menyediakan ukuran maksimum yang terbatas

Eksekusi program

  • Interpreter Piet mulai berjalan dari blok warna yang mencakup codel kiri atas program
  • Sambil mempertahankan Direction Pointer (DP) dan Codel Chooser (CC), ia berpindah antarbblok warna sesuai aturan berikut:
    • Cari sisi blok warna saat ini yang paling jauh ke arah DP
    • Pada sisi tersebut, cari codel yang paling jauh ke arah CC
    • Dari codel itu, pindah ke blok warna yang bersebelahan pada arah DP
  • Proses di atas diulang sampai program berakhir

Elemen sintaks

Angka

  • Setiap blok warna selain hitam dan putih merepresentasikan bilangan bulat yang sama dengan jumlah codel pada blok tersebut
  • Hanya bilangan positif yang dapat direpresentasikan, tetapi bilangan negatif dapat dibuat dengan operator
  • Interpreter tidak otomatis melakukan push ke stack ketika menemui angka

Blok hitam dan tepi

  • Blok hitam dan tepi program membatasi alur program
  • Jika mencoba berpindah ke blok hitam atau ke tepi, CC ditoggle dan DP diputar searah jarum jam
  • Jika setelah 8 kali percobaan masih tidak bisa berpindah, program berakhir

Blok putih

  • Blok putih adalah area "bebas" yang dapat dilalui interpreter tanpa batasan apa pun
  • Interpreter "meluncur" melalui codel putih ke arah DP hingga mencapai blok non-putih
  • Tidak ada perintah yang dijalankan meskipun berpindah ke warna baru dengan melintasi blok putih
  • Jika jalur di dalam blok putih terlacak ulang sepenuhnya, program berakhir

Perintah

  • Didefinisikan oleh perubahan warna saat interpreter berpindah dari satu blok warna ke blok warna lain
  • Perintah yang dijalankan ditentukan oleh jumlah langkah pada siklus hue dan siklus kecerahan
  • Jika berpindah melintasi blok putih, tidak ada perintah yang dijalankan
  • Perintah utama:
    • push, pop, add, subtract, multiply, divide, mod, not, greater
    • pointer, switch, duplicate, roll
    • in(number), in(char), out(number), out(char)

Pendapat GN⁺

  • Piet adalah bahasa pemrograman yang menarik secara visual dan menunjukkan perpaduan unik antara seni abstrak dan pemrograman
  • Namun, dari sisi kepraktisan tampaknya ada keterbatasan. Menulis program yang kompleks kemungkinan tidak akan mudah
  • Bahasa ini tampaknya terutama dapat dimanfaatkan untuk eksperimen desain bahasa pemrograman, teka-teki, atau pembuatan karya seni
  • Untuk bahasa pemrograman visual, Blockly dari Google atau Scratch dari MIT bisa menjadi alternatif yang lebih praktis
  • Bagaimanapun juga, Piet terasa sebagai bahasa yang terlalu deep, sehingga tampaknya sulit digunakan oleh pemula nyata untuk belajar pemrograman

1 komentar

 
GN⁺ 2024-04-25
Komentar Hacker News
  • Program terakhir di halaman contoh bahasa Piet benar-benar mengejutkan. Seseorang (bernama Piet) melihat sebuah karya yang mengingatkannya pada bahasa Piet lalu mencoba menjalankannya, dan ternyata benar-benar berfungsi. Ini adalah pertama kalinya dalam sejarah seorang seniman grafis secara tidak sengaja menggambar program yang bisa dieksekusi.

  • Piet adalah eksperimen terobosan di antara bahasa pemrograman esoterik, tetapi masih kurang dalam mencapai tujuan agar hasilnya tampak seperti lukisan Mondrian kecuali jika pengembangnya sengaja melakukannya. Akan menarik bila struktur bahasanya sendiri dirancang agar apa yang ditulis secara alami terlihat seperti lukisan Mondrian.

  • Ini memunculkan pertanyaan, "Seperti apa bentuk algoritma?" Mungkinkah membuat sesuatu di dunia nyata seperti novel Hermann Hesse 'The Glass Bead Game' (Magister Ludi)? Sebagai orang yang berorientasi visual, saya ingin berpikir demikian, dan saya memang pernah mencoba menggunakan alat semacam itu, tetapi jawaban-jawaban yang ambigu membuat sulit menyeimbangkan daya ekspresi visual dan modularitas.

  • Hal seperti ini terasa seperti akan muncul dalam thriller kriminal: membingungkan protagonis/penyelidik, lalu seseorang menyadari bahwa itu sebenarnya kode. Dulu kita mengira kode QR sudah cukup berguna...

  • Menemukan Piet adalah momen istimewa yang penuh rasa kagum, kebingungan, dan keheranan. Hal itu terekam dalam percakapan saya dengan teman saya, Oz, di sebuah podcast CS.

  • Seseorang membuat quine dalam Piet. Gambarnya rusak, tetapi ada salinannya di CodeGolf.

  • Di universitas ada mata kuliah kecil tentang bahasa pemrograman esoterik, dan masing-masing dari kami memilih satu bahasa untuk dimainkan. Saya memilih Piet; itu menyenangkan, tetapi sejujurnya aplikasi contoh kecilnya tidak terlalu memuaskan secara estetis. Sepertinya harus menjadi ahli untuk membuat seni dengan Piet.

  • Saya menemukan ini saat kuliah dan menulis program sederhana sampai larut malam; itu benar-benar pengalaman yang menyenangkan. Saya merekomendasikan orang-orang untuk setidaknya mencobanya sekali!

  • Halaman contohnya menakjubkan. Kita bisa melihat kanvasnya berkembang menjadi semakin rumit dan indah.

  • Keren sekali! Saya penasaran apakah mungkin mengumpulkan karya-karya Piet lalu membuat program yang mengembalikan teks tertentu. Semacam generator kode Piet. Sepertinya itu akan menjadi hadiah cetak yang keren!