Magik
Magik adalah bahasa pemrograman berorientasi objek yang memiliki karakteristik yaitu mendukung pewarisan berganda, "polimorfism", dan tanpa adanya deklarasi tipe data seperti pada bahasa Smalltalk dan banyak bahasa script lainnya. Dikembangkan dan dipasarkan oleh GE Energy yang berbasis pada teknologi Smallworld dan didisain khusus untuk memenuhi kebutuhan aplikasi GIS yang sangat kompleks yang dibutuhkan oleh perusahaan besar seperti penyedia tenaga listrik dan telekomunikasi.
Magik pertama kali diperkenalkan pada tahun 1990 dan terus mengalami penyempurnaan hingga saat ini sudah mencapai versi Magik VM 6.12.8 SF (Small Footprint).
Ada beberapa kemiripan Magik dengan bahasa Smalltalk yaitu dalam fitur-fitur yang disediakan maupun arsitekturnya sendiri. Magik dikompilasi menjadi serangkaian kode binari yang diterjemahkan oleh "Magik Virtual Machine". Magik Virtual Machine ini tersedia dalam berbagai platform sistem operasi termasuk Microsoft Windows, dan beberapa versi Linux dan Unix.
Bahasa Magik sendiri adalah berbasis Console (editor yang sering dipakai adalah GNU Emacs) dan kode program dapat langsung dimodifikasi meskipun aplikasi sedang berjalan. Console juga dapat digunakan untuk mengeksekusi baris perintah Magik dan melihat hasilnya.
Baris kode yang terkompilasi disimpan dalam satu file yang disebut "Image File". Selain itu image file juga menyimpan segala perubahan yang terjadi pada saat sesi tersebut terakhir disimpan.
Magik menggunakan token codice_1 untuk menandai suatu baris yang ingin dijadikan komentar.
# Ini adalah contoh cara membuat komentar dalam bahasa magik
Magik menggunakan operator codice_2 yang menandakan pemberian suatu penugasan:
Untuk mendefinisikan objek atau kelas di dalam Magik digunakan kata "exemplars". Magik mensupport pewarisan berganda, and "mixins"(suatu function yang tidak ada datanya). Instan baru dapat dibuat dengan cara meng-cloning instan yang sudah ada.
Exemplars baru dapat dibuat menggunakan baris perintah codice_3, sebagai contoh:
Baris perintah di atas dapat diartikan bahwa kita membuat suatu kelas baru dengan nama :objek_ku yang memiliki dua buah field yaitu :slot_a yang berisi nilai 34 dan :slot_b yang berisi kata "hallo" dan kelas ini mewarisi dari dua buah exemplars yang sudah ada yaitu :objek_a dan :objek_b.
Magik seperti bahasa yang lain juga menggunakan binari operator (codice_4, codice_5, codice_6, codice_7, codice_8, codice_9) untuk perbandingan.
Operator codice_10 and codice_11 juga dipakai sebagai perbandingan dan biasanya digunakan untuk membandingkan antara dua buah instan objek.
Contoh:
Methods didefinisikan dalam exemplars menggunakan baris perintah codice_12 dan codice_13:
Methods bisa dijadikan private (tidak untuk digunakan oleh public) dengan menggunakan baris perintah codice_14. Private methods ini hanya dapat dipanggil dengan baris perintah codice_15, codice_16 and codice_17.
Iterasi dalam Magik menggunakan baris perintah codice_18, codice_19, codice_20 and codice_21.
Magik juga mensupport penggunaan fungsi namanya procedure. Procedure juga merupakan objek dan dideklarasikan menggunakan baris perintah codice_22 and codice_23.
Karena Magik awalnya dikembangkan di Inggris, method-method yang ada di dalam Smallworld Core menggunakan ejaan "British" bukan "American". Contohnya: