Mengenal berbagai bahasa

Anda mungkin sering membaca di berbagai buku, kalimat-kalimat semacam ini: “Prolog itu bagus untuk Artificial Intelligence”, “LISP bagus untuk AI”, “Fortran bagus untuk aplikasi numerik”, “C bagus untuk pemrograman sistem”. Tapi biasanya penulisnya tidak mendeskripsikan lebih lanjut apa maksud dari kalimat-kalimat tersebut, dan apa contohnya. Bukankah semua bahasa yang turing complete itu sama saja?. Setelah lulus dari kuliah pun, banyak yang masih belum tahu: apakah pernyataan-pernyataan tersebut benar? kalau salah, yang benar seperti apa? apa contoh aplikasi di mana memprogram dengan Lisp/Prolog/Fortan akan lebih mudah atau lebih baik dari memprogram dengan bahasa lain?

Screenshot_2016-06-11-11-19-27

Ketika orang diperkenalkan pada suatu bahasa, kebanyakan caranya adalah melalui pengenalan sintaks, lalu kemudian membuat aplikasi kecil dalam bahasa tersebut. Jika Anda belajar bahasa yang paradigmanya sama atau mirip, cara ini memang akan berhasil, tapi tidak jika paradigmanya berbeda. Saya contohkan sedikit mengenai Lisp. Kebanyakan orang akan belajar mengenai apa itu atom, apa itu list, lalu operasi terhadap atom dan list (car, cdr, cons, list, dsb). Setelah itu kebanyakan akan membuat program manipulasi list sederhana. Di titik ini sebagian orang akan bertanya: di mana bagusnya Lisp, bagian mana yang membuat ini cocok untuk aplikasi AI?

Saran saya supaya bisa mengerti adalah dengan melihat beberapa program dalam suatu bahasa, sambil mencoba memikirkan: kalau ini saya tulis dalam bahasa yang saya kenal, kira-kira akan menjadi seperti apa?. Tentunya Anda harus mencari contoh yang agak realistis, jangan contoh terlalu sederhana seperti memanipulasi list. Misalnya jika Anda membaca buku Structure and Interpretation of Computer Programs, sampai ke contoh Symbolic Differentiation Anda bisa melihat bagimana mudah sekali memanipulasi simbol dalam Lisp. Bagaimana kira-kira jika Anda diminta menuliskan itu dalam Java? apa saja yang perlu Anda tulis? berapa kelas yang harus Anda buat untuk merepresentasikan parser, operator, simbol, dsb?

Bagian yang saya sebutkan di atas memang tidak langsung berhubungan dengan AI, tapi contoh tersebut memperlihatkan bagaimana mudahnya memanipulasi simbol dalam AI. Contoh manipulasi simbol yang termasuk dalam AI adalah Automated theorem proving. Kode ATP pasti perlu memanipulasi persamaan matematika secara simbolik seperti program Symbolic Differentiation tesebut.

Saya ambil contoh bahasa lain: Prolog. Ketika Anda membuat program prolog, coba pikirkan betapa sulitnya menerjemahkan program sederhana seperti “pohon keluarga” ke bahasa prosedural atau object oriented. Program sederhana yang berisi: daftar nama; nama ayah dan nama ibu dari setiap orang; dan nama adik/kakak dari setiap orang. Kemudian diberikan sepasang nama X dan Y, X harus memanggil apa ke Y (kakek, ayah, paman?). Untuk Anda yang belum pernah melihat contoh kode Prolog, silakan lihat url ini. Di bahasa dengan paradigma OOP, Anda perlu membuat tree, membuat method untuk menginsert tree, lalu melihat berbagai pola yang mungkin. Dalam Prolog, Anda cukup menyatakan apa yang dimaksud dengan “kakek”, apa yang dimaksud dengan “paman”.

Saat ini saya akan menskip pembahasan mengenai apakah benar Fortran lebih bagus untuk pemrosesan numerik, dan apakah C memang sangat bagus untuk system programming. Akan saya bahas lain waktu, tapi prinsipnya sama: apakah yang bisa saya lakukan dengan Fortran bisa saya lakukan dalam bahasa lain? jika iya apakah akan lebih baik, lebih mudah?

Setelah mengenal berbagai bahasa, Anda perlu menyadari bahwa: kita bisa memprogram sebuah aplikasi dalam berbagai bahasa. Sebuah aplikasi C atau Java atau yang lain bisa meng-embedd interpreter Prolog.Jika kita tahu ada bagian program yang terlalu rumit atau terlalu bertele-tele dinyatakan dalam bahasa C atau Java, dan mudah dilakukan dengan Prolog, maka kita bisa memanggil kode Prolog.

Secara umum: jika kita belajar bahasa X, kita bisa mengenal apa saja kelebihan bahasa tersebut, dan kemudian kita bisa menggunakan bahasa tersebut sesuai masalah yang kita hadapi. Mungkin bahasa tersebut hanya digunakan untuk bagian kecil dari program saja, tapi bisa menghemat waktu Anda, dan membuat program lebih mudah di mengerti.

One thought on “Mengenal berbagai bahasa”

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *