Proyeksi (ilmu komputer)
Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini. Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala. (April 2025) |
Dalam ilmu komputer, quaject adalah struktur data yang mirip dengan objek yang menyimpan data dan kode (atau penunjuk ke kode). Quaject diekspos sebagai antarmuka melalui callentries dan dapat menerima daftar callentries dari quaject lain untuk melakukan panggilan balik (callback) dan panggilan keluar. Quaject dikembangkan oleh Alexia Massalin pada tahun 1989 untuk kernel Synthesis, dan dinamai berdasarkan Qua! Machine, sebuah platform perangkat keras unik yang diciptakan oleh Massalin.[1] Asal-usul istilah "qua" tidak sepenuhnya jelas; Massalin dengan jenaka mengklaim bahwa itu adalah suara yang dibuat oleh koala.[2][3]
Tujuan utama dari quaject adalah untuk menyediakan abstraksi dalam mengelola kode yang memodifikasi dirinya sendiri, dengan memungkinkan pengoptimalan kode runtime berdasarkan setiap objek. Meskipun kernel Synthesis awalnya mengharuskan quaject ditulis dalam bahasa assembly yang dikembangkan sendiri untuk menghindari pembuatan kompiler yang rumit, Massalin mencatat bahwa kompilasi just-in-time (JIT) untuk bahasa pemrograman tingkat tinggi yang mendukung pembuatan kode runtime, seperti dalam Lisp atau Smalltalk, juga bisa menerapkan pendekatan ini. Namun, ia juga menekankan bahwa kompleksitas kompiler tersebut kemungkinan akan menjadi penghalang.
Quaject berbeda dari objek konvensional dalam dua cara utama:
- Injeksi dependensi: Quaject selalu menggunakan pola injeksi dependensi untuk mengelola antarmuka dengan quaject lain, dan kelanjutannya. Daftar referensi callentry ini adalah bagian dari pembuatan quaject dan dapat diperbarui selama masa aktif quaject.
- Metode unik: Setiap quaject dapat memiliki serangkaian metode yang unik, yang disesuaikan untuk perilaku spesifik quaject tersebut. Metode untuk jenis atau kelas quaject disimpan sebagai satu atau beberapa templat, bukan sebagai kode tetap. Metode bersama dapat diakses melalui tabel pointer umum, tetapi quaject individu juga dapat memiliki metode yang dibuat secara khusus untuk menyesuaikan kinerja dengan perilaku quaject tersebut.
Referensi
- ^ "Synthesis: An Efficient Implementation of Fundamental Operating System Services" (PDF).
- ^ "KHB: Synthesis: An Efficient Implementation of Fundamental Operating Systems Services [LWN.net]". lwn.net. Diakses tanggal 2025-04-27.
- ^ Poole, Gary Andrew. "Qua". Wired (dalam bahasa American English). ISSN 1059-1028. Diakses tanggal 2025-04-27.