3 poin oleh GN⁺ 2025-05-18 | 1 komentar | Bagikan ke WhatsApp
  • Mystical adalah pendekatan unik untuk memvisualisasikan program PostScript dalam bentuk lingkaran sihir
  • Struktur pemrograman direpresentasikan dalam bentuk ring dan mencakup berbagai tipe seperti executable array, non-executable array, dan dictionary
  • Simbol khusus yang disebut sigil digunakan untuk merepresentasikan perintah, variabel, string, dan lainnya dengan cara yang khas
  • Untuk pola definisi atau deklarasi fungsi, digunakan representasi ligature khusus, dan sigil kustom pengguna juga didukung
  • Saat ini ini adalah alat untuk mengubah program PostScript menjadi gambar grafis, dan belum memiliki interpreter sendiri

Gambaran Umum Mystical

Mystical adalah proyek eksperimental yang bertujuan menjadi bahasa pemrograman yang menyerupai lingkaran sihir. Dalam praktiknya, ini adalah cara untuk merepresentasikan kode PostScript secara visual dalam bentuk lingkaran sihir, dan dalam dokumen ini metode tersebut dinamai 'Mystical'.

Struktur Ring

  • Struktur Mystical berpusat pada bentuk ring
  • Setiap ring berisi huruf dan sigil, serta memiliki garis batas dalam dan luar
  • Ring utama program dimulai dari sisi kanan (arah jam 3) dan bergerak berlawanan arah jarum jam (widdershins). Ini mencerminkan aturan sudut PostScript dan gagasan bahwa lingkaran sihir ditulis dari luar ke dalam
  • Ring turunan dimulai dari titik pertemuan pada ring induknya

Tiga jenis ring

  • Executable array: setara dengan {} di PostScript. Memiliki batas melingkar sederhana di bagian dalam dan luar serta bentuk bintang, dengan simbol awal/akhir berbasis lambang alkimia
  • Non-executable array: setara dengan [] di PostScript. Tidak memiliki bentuk bintang, menggunakan segitiga untuk awal/akhir
  • Dictionary: setara dengan <<>> di PostScript. Berbentuk poligon dengan batas luar ganda dan batas dalam tunggal. Penanda awal/akhir sama

Ketika struktur lain masuk ke dalam sebuah ring, strukturnya dihubungkan dengan titik kecil atau garis untuk menampilkan hierarki secara visual

Batasan penggunaan PostScript

  • Dalam PostScript, [ ] atau << >> bisa dipakai dengan cara yang tidak diizinkan menurut aturan Mystical, sehingga tidak disarankan
  • gsave/grestore, begin/end, dan sebagainya lebih sering digunakan untuk struktur yang tidak seimbang, sehingga diperlakukan sebagai sigil biasa

Teks dan Sigil

  • Pada tepi ring ditempatkan karakter atau sigil (simbol khusus)
  • Sigil merepresentasikan operator, variabel, kata kunci
  • /name di PostScript direpresentasikan sebagai nama atau sigil di dalam segitiga, sedangkan string () direpresentasikan sebagai bentuk gulungan

Sigil Standar

  • Banyak operator bawaan memiliki sigil unik
  • Biasanya dirancang berdasarkan inisial perintah, gambar konsep, atau bahasa visual

Contoh: dup, copy, add, mul, neg, for, forall, repeat, if, ifelse, eq, ne, ge, gt, le, lt, moveto, lineto, arc, arcn, curveto, closepath, stroke, fill, gsave, grestore, translate, scale, rotate, setmatrix, currentmatrix, setrgbcolor, currentrgbcolor, setcmykcolor, currentcmykcolor, sethsbcolor, currenthsbcolor, setgray, currentgray, dict, begin, end, def, get, put, length, dll.

Sigil Pengguna

  • Untuk fungsi atau nama baru, sigil dapat ditambahkan ke sigil_bank saat runtime
  • Perlu didesain agar muat dalam bujur sangkar 1 unit (transformasi koordinat dimungkinkan)
  • Saat memakai nstroke, efek tipografinya bisa dibuat sama seperti sigil yang sudah ada
  • Sigil untuk variabel pengguna dapat dibuat dengan berbagai cara, seperti menumpuk huruf atau memakai beragam bahasa visual
  • Nama baru berbasis operator resmi dapat digabungkan dengan sigil standar

Ligature /name { ring } def

  • Disediakan sigil khusus untuk pola yang sering dipakai dalam definisi fungsi dan sejenisnya
  • Hanya menampilkan garis penghubung di bawah segitiga nama, dan sigil def terpisah dihilangkan
  • Dapat diterapkan pada ketiga tipe ring
  • Penggunaan def lainnya diperlakukan sebagai sigil biasa
  • Hanya diterapkan di dalam executable array; tidak disediakan di dalam dictionary karena bisa menimbulkan kebingungan penggunaan

Algoritme Contoh

Gambar di bagian atas adalah contoh Quicksort

Contoh algoritme FPB Euclid (GCD) juga disediakan. Contoh tersebut memanfaatkan fungsi pengguna /arg {exch def} def

Fungsi Pembuat Gambar Mystical

Semuanya didefinisikan dalam "mystical.ps"

  • mystical: menerima array, executable array, atau dictionary, lalu memvisualisasikannya secara rekursif hingga ke struktur internalnya. Seluruh gambar diskalakan agar muat dalam lingkaran satuan
  • mystical_evoke: menerima sebuah nama, mencarinya di dictionary saat ini, lalu merendernya seperti di atas
  • mystical_evoke_label: menambahkan ligature nama-def dan menyesuaikan orientasi agar sigil nama terlihat vertikal

Fungsi-fungsi tersebut juga memiliki versi _unscaled. Dalam kasus ini penskalaan tidak dilakukan sehingga ring dicetak sangat besar

Masalah Tata Letak

  • Kode saat ini mengoptimalkan penempatan lingkaran turunan agar tidak bertabrakan, tetapi masih konservatif sehingga tata letaknya terlalu melebar
  • Pada gambar contoh, parsing dan penempatan dilakukan dengan mystical_get_spell, mystical_make_evocation_ligature, dan lainnya, lalu gambar dihasilkan dengan penyesuaian langsung melalui fungsi draw_sigil dan draw_link
  • Pengaturan bawaan tata letak akan ditingkatkan di masa mendatang

Mystical sebagai Bahasa Pemrograman

  • Saat ini Mystical adalah alat untuk menggambar program PostScript
  • Belum ada interpreter yang dapat menafsirkan dan mengeksekusi gambar Mystical itu sendiri
  • Manusia melihat gambar tersebut untuk memahami kode PostScript, atau menuliskannya ulang sebagai program PostScript untuk dieksekusi
  • Pembahasan sebagai bahasa akan ditunda untuk nanti

Kemungkinan Penerapan ke Bahasa Lain

  • Untuk bahasa yang hanya terdiri dari operator seperti FORTH, ada potensi besar untuk digunakan
  • Pada bahasa dengan struktur yang lebih kompleks, ada kekhawatiran jumlah ring akan menjadi terlalu banyak

unduh di github


unduh di codeberg


Halaman ini dibuat oleh Denis pada 2025-05-16

1 komentar

 
GN⁺ 2025-05-18
Komentar Hacker News
  • Kesan yang mengingatkan pada anime Jepang Dennō Coil, dengan menyebut adegan anak-anak benar-benar menggambar program di lantai hampir persis seperti yang dilakukan penulis lalu menjalankannya seperti sihir; sangat direkomendasikan
    • Berbagi kesan bahwa benar-benar menyukai karya itu; menurutnya karya tersebut sangat baik dalam menunjukkan bagaimana anak-anak menerima teknologi baru dengan cara yang berbeda dari orang dewasa, dan bahkan merupakan penggambaran visioner yang 5 tahun lebih cepat daripada google glass
    • Datang dengan pemikiran yang sama, dan memuji bahwa itu benar-benar karya yang luar biasa
  • Menyindir secara humoris situasi meneriakkan mantra atau ritual dalam game secara realistis, dengan doa: "aku telah memanggil dewi bulan merah, menyiapkan altar, dan mengisi kristal, jadi tolong kali ini mau booting"
    • Lelucon ritual tambahan untuk menyingkirkan lilin dari tumpukan kitab suci
  • Kesan bahwa ini adalah bahasa pemrograman yang akan disukai protagonis isekai dari serial blog Aphyr "Xing the technical interview", merekomendasikan bahwa ini sangat layak dimasukkan ke serial tersebut, serta membagikan tautan referensi terkait
    • Tanggapan bahwa sebelumnya tidak tahu serial itu, dan penilaian bahwa itu benar-benar lucu
  • Rekomendasi thread diskusi Reddit UFO terkait program reverse engineering Isaac dan Caret, serta komentar yang mendorong eksplorasi lebih dalam
  • Mengungkapkan bahwa karya ini sangat menakjubkan, menanyakan soal lisensi, dan berharap bahwa sebagai proyek turunan, penerapan gaya forth yang hanya menggunakan rekursi murni akan sangat cocok untuk sistem sihir di game yang sedang dikerjakan karena saat ini kurang visualisasi; menilai Mystical sebagai solusi yang menata sihir dalam game sehingga memenuhi baik cara pengguna menulisnya maupun imersi
    • Di game Noita juga ada sistem pembuatan sihir yang mirip, dengan pengenalan sistem wand yang memungkinkan penerapan pengulangan, perkalian, duplikasi, dan lain-lain secara terprogram, serta membagikan tautan Steam game tersebut
  • Mengutip sebagian dari puisi "Black Perl" yang terkenal di kalangan Perl, dan membagikan contoh bagaimana ritual sihir dan perintah pemrograman berpadu dengan sangat indah
  • Pendapat bahwa bahasa pemrograman ini sebenarnya cukup praktis; jarang ada esolang yang berfokus pada estetika namun tetap semudah ini dibaca dan digunakan, dan merasa ide semacam ini juga bisa diterapkan pada keluarga Lisp, bahasa berbasis stack, bahasa array, dan sebagainya; dengan editor terstruktur yang tepat, kodenya bisa cukup ringkas dan jelas hingga layak dipakai dalam pengembangan perangkat lunak nyata
  • Berbagi pengalaman bahwa PostScript terasa seperti bahasa yang cukup kuat untuk membentuk ulang otak hanya dengan notasi postfix, dan memuji bahwa penggabungan dengan visual estetis di sini terasa segar
    • Meminta rekomendasi bahasa lain yang serupa untuk melatih otak, serta mengungkapkan keinginan untuk mempelajari berbagai bahasa seperti ps atau lisp walau hanya sebentar
  • Berpikir bahwa pendekatan ini mungkin punya beragam kegunaan, misalnya dapat dimanfaatkan sebagai bentuk QR code yang lebih indah; decoding otomatis mungkin agak rumit, tetapi menyukai perpaduan antara rasa estetis dan logika
  • Memberikan informasi bahwa jika ingin mempelajari lebih lanjut tentang chaos magick dan dasar-dasar mantra sigil, lihat Psychonaut Field Manual