Filsafat Pengembangan Javascript

Sebelum masuk lebih jauh ke topik mengenai bagaimana menggunakan Javascript dengan benar, terlebih dahulu kita akan membahas filsafat pengembangan Javascript. Apa maksud dari filsafat pengembangan Javascript? Pada tulisan ini kita mendeskripsikan “filsafat” sebagai pembahasan mengenai cara pikir atau pandangan mendasar terhadap satu topik. Dalam hal ini, filsafat pengembangan Javascript berarti cara pikir yang harus kita miliki atau pakai ketika kita sedang mengembangkan aplikasi Javascript.

Note

Bahasa pemrograman python memiliki filsafat pengembangan “resmi” yang diakui langsung oleh pengembangnya, yaitu The Zen of Python.

Pembahasan akan dimulai dari sejarah singkat Javascript, agar kita mengetahui kenapa Javascript dibuat dan dapat mengerti apa yang membuat Javascript, well, Javascript.

Sejarah Singkat Javascript

Awal tahun 1995, Netscape baru saja meluncurkan dukungan terhadap Java Applet dalam browser. Untuk mempermudah programmer non-Java dalam mengakses Java Applet tersebut, maka Netscape mengembangkan Javascript. Ditujukan untuk desainer dan pengembang web, Javascript dirancang untuk dapat digunakan tanpa memerlukan pengetahuan yang terlalu mendalam tentang pemrograman berorientasi objek.

Javascript, seperti namanya, merupakan bahasa pemrograman scripting. Dan seperti bahasa scripting lainnya, Javascript umumnya digunakan hanya untuk program yang tidak terlalu besar: biasanya hanya beberapa ratus baris. Ingat kembali tujuan awal Javascript: hanya untuk mengontrol program Java. Jadi memang pada dasarnya Javascript tidak dirancang untuk digunakan dalam aplikasi skala besar.

Karena tujuan yang sederhana ini, ditambah dengan tekanan yang sangat besar untuk meluncurkan sebuah bahasa secepatnya, perancangan Javascript dilakukan secara instan. Javascript dikembangkan dalam waktu yang sangat singkat, hanya 10 hari saja. Walaupun merupakan pencapaian yang sangat hebat, singkatnya waktu pengembangan Javascript ini menyebabkan Javascript memiliki banyak kekurangan. Begitupun, kekurangan-kekurangan Javascript tidak mengurangi kesuksesannya.

Meskipun dibuat dengan tujuan awal untuk mengendalikan program Java, komunitas Javascript menggunakan bahasa ini untuk tujuan lain: memanipulasi gambar dan isi dari dokkumen HTML. Singkatnya, pada akhirnya Javascript digunakan untuk satu tujuan utama: “menghidupkan” dokumen HTML dengan mengubah konten statis menjadi dinamis dan interaktif. Bersamaan dengan perkembangan Internet dan dunia web yang pesat, Javascript akhirnya menjadi bahasa utama dan satu-satunya untuk membuat HTML menjadi interaktif di dalam browser.

Di masa sekarang, 2014 dan selanjutnya, Javascript telah menjadi lingua franca dari dunia web dalam browser. Meskipun telah lahir bahasa-bahasa lain untuk pengembangan web, bahasa-bahasa tersebut biasanya dikompilasi ke Javascript. Javascript juga telah merambah ke dunia server (lihat: NodeJS), dan digunakan di luar konteks browser dan HTML. Javascript tak lagi terikat dengan HTML dan browser, dan tak lagi hanya digunakan untuk program-program kecil.

Paradigma Pemrograman Javascript

Setiap bahasa pemrograman memiliki pendekatan tersendiri untuk menyelesaikan masalah. Pendekatan atau cara pandang untuk penyelesaian masalah ini dikenal dengan istilah paradigma pemrograman. Meskipun ada sangat banyak paradigma pemrograman, hanya 5 yang populer dan banyak digunakan, yaitu imperatif, fungsional, orientasi objek, logis, dan simbolik. Java dan C# merupakan contoh bahasa pemrograman berorientasi objek. Haskell dan Scheme utamanya adalah bahasa pemrograman fungsional. C merupakan bahasa imperatif, sementara Prolog adalah bahasa Logis dan Datalog dikenal sebagai bahasa dengan paradigma simbolik. Tentu saja satu bahasa bisa mendukung lebih dari satu paradigma, tetapi biasanya ada satu paradigma yang paling menonjol dari bahasa tersebut. C# misalnya mendukung banyak fitur fungsional dan imperatif, tetapi utamanya adalah bahasa berorientasi objek.

Mengetahui dan mengerti paradigma pemrograman dari sebuah bahasa dapat disamakan dengan mengerti kegunaan utama dari sebuah alat kerajinan. Dengan mengerti kenapa sebuah alat dibuat, kita dapat menggunakan alat tersebut sesuai dengan tujuannya, dan bekerja dengan efektif. Bayangkan jika anda diminta untuk memasang paku dengan menggunakan pahat. Tentu saja anda bisa tetap memasang paku tersebut, misalnya dengan mengetuknya menggunakan gagang pahat tersebut. Tetapi hasilnya adalah, paku tidak masuk dengan lurus dan tangan anda sakit. Seorang pengrajin yang baik tentunya akan mencari palu ketika diminta untuk memasang paku. Dengan mengetahui dan mengerti paradigma pemrograman dari sebuah bahasa, kita dapat memanfaatkan paradigma tersebut sesuai dengan keperluan. Jika sebuah bahasa mendukung tiga paradigma, maka kita harus tahu kapan waktu untuk menggunakan masing-masing paradigma tersebut dengan baik. Kita dapat menghemat ratusan baris dan menghasilkan kode yang mudah dirawat dengan memanfaatkan pengetahuan akan hal ini.

Pertanyaan yang paling penting, tentunya, adalah apa saja paradigma pemrograman yang didukung oleh Javascript? Javascript mendukung tiga paradigma pemrograman utama, yaitu imperatif, fungsional, dan berorientasi objek.

Javascript merupakan bahasa pemrograman imperatif, seperti layaknya C. Hal ini berarti Javascript dapat menjalankan perintah program baris demi baris, dengan masing-masing baris berisi satu atau lebih perintah. Dapat dikatakan bahwa kita mendeskripsikan bagaimana menyelesaikan masalah kepada Javascript ketika menulis program Javascript. Pada setiap langkah dalam program imparatif, umumnya kita akan mengubah keadaan (state) program ataupun data.

Javascript juga merupakan bahasa pemrograman fungsional, yang mana kita memandang struktur dan elemen-elemen dalam program sebagai fungsi matematis yang tidak memiliki keadaan (state) dan data yang dapat berubah (mutable data). Pemrograman fungsional, seperti namanya, berfokus pada fungsi. Fungsi merupakan nilai kelas pertama pada paradigma ini, yang berarti fungsi diperlakukan sama seperti nilai-nilai lain seperti variabel dan kelas. Fungsi dapat disimpan di dalam variabel, dikirimkan sebagai parameter dari fungsi lain, dan dapat mengembalikan fungsi baru. Pemrograman fungsional juga menekankan pada fungsi rekursif, yaitu fungsi yang memanggil dirinya sendiri, serta fungsi murni atau fungsi yang tidak memiliki efek samping. Efek samping di sini artinya fungsi mempengaruhi atau dipengaruhi oleh hal-hal di luar fungsi tersebut seperti nilai variabel di luar fungsi. Dengan tidak memiliki efek samping, sebuah fungsi akan selalu memberikan hasil yang sama jika dipanggil dengan argumen yang nilainya sama.

Selain imparatif dan fungsional, Javascript juga mendukung pemrograman berorientasi objek. Pada pemrograman berorientasi objek, kita mendeskripsikan segala sesuatu yang terlibat dalam program kita sebagai “objek”. Sebuah objek memiliki data (atribut yang mendeskripsikan objek tersebut) serta operasi-operasi yang dapat dilakukan terhadap objek tersebut. Perlu diingat bahwa meskipun kebanyakan bahasa berorientasi objek mengadopsi pendekatan kelas (class-based), Javascript menggunakan pendekatan yang berbeda, yaitu pendekatan prototipe (prototype-based). Pembahasan mendetail mengenai hal ini akan dilakukan pada bagian selanjutnya dari buku ini.

Dari ketiga paradigma yang didukung oleh Javascript, paradigma imparatif merupakan paradigma yang paling sederhana dan mudah dimengerti. Hampir semua bahasa pemrograman yang ada, dari Pascal sampai ke C# mendukung paradigma ini. Jika anda pernah menulis program yang menjalankan baris demi baris kode secara berurutan, anda telah menulis program dengan paradigma imparatif. Pembahasan tentang paradigma imparatif tidak akan dilakukan, dan kita akan berfokus kepada dua aspek dari Javascript yang jarang dibahas: paradigma fungsional dan imparatif. Empat bab selanjutnya dari buku ini akan membahas kedua hal tersebut secara mendalam.

Filsafat Pengembangan Javascript

Berangkat dari sejarah dan paradigmanya, kita dapat melihat bahwa Javascript merupakan sebuah bahasa yang berevolusi. Evolusi ini terkadang bahkan bergerak menjauh dari tujuan awal pencipta Javascript. Javascript dirancang untuk mengendalikan program Java, tetapi berakhir sebagai penunjang interaktifitas dokumen HTML. Pada awal pengembangan Javascript dirancang dengan tujuan sederhana, tetapi pada masa sekarang Javascript digunakan untuk berbagai jenis program, termasuk program yang besar dan kompleks.

Melihat fenomena ini, tentunya kita bertanya-tanya. Bagaimana mungkin sebuah bahasa yang dirancang dalam sepuluh hari, dengan tujuan sederhana, mampu bertahan ketika digunakan untuk tujuan yang lebih besar? Javascript dapat dipandang layaknya sebuah palu kecil yang entah bagaimana dapat membangun gedung pencakar langit. Jika menemukan kejadian palu-pembangun-pencakar-langit ini tentunya semua orang akan heran, dan bertanya “bagaimana bisa?”.

Jawaban dari pertanyaan di atas adalah bahwa sebenarnya Javascript merupakan sebuah bahasa yang sangat ekspresif dengan fitur-fitur memukau. Walaupun dirancang dengan tujuan sederhana, Javascript memiliki fitur-fitur yang memungkinkan kemampuan ekspresi yang sangat luas. Fitur-fitur pemrograman fungsional dan pendekatan orientasi objek yang berbeda dari biasanya milik Javascript memungkinkan kita untuk melakukan hal-hal yang luar biasa. Kesederhanaan sebuah bahasa bukan tolak ukur kemampuan ekspresinya. Contoh saja Scheme, sebuah bahasa yang dapat dipelajari dalam waktu singkat karena kesederhanaannya. Walaupun merupakan bahasa yang sangat sederhana, Scheme sangat banyak digunakan sebagai bahasa pengenalan dalam kuliah desain aplikasi, serta untuk pengembangan aplikasi kompleks seperti Google App Inventor.

Inspirasi utama dari Javascript adalah bahasa pemrograman Self dan Scheme. Untuk dapat memaksimalkan penggunaan Javascript, kita dapat mengambil pelajaran dari kedua bahasa ini. Dari Scheme kita dapat mempelajari bagaimana pemanfaatan kekuatan pemrograman fungsional dapat membantu kita dalam menuliskan kode program yang sederhana tetapi sangat berguna. Melalui Self kita bisa melilhat kehebatan dari pemrograman berorientasi objek yang berbasis prototype. Detil bagaimana kita memanfaatkan kedua hal tersebut dapat dibaca pada bab-bab berikutnya.

Javascript dibangun untuk membuat program sederhana. Kita dapat memainkan tujuan perancangan ini ketika mengembangkan sebuah apilkasi yang besar dan kompeks. Daripada memaksakan Javascript untuk membuat program kompleks (yang biasanya berakhir buruk), kita lebih baik membangun aplikasi yang besar dan kompleks dengan menggabung-gabungkan aplikasi kecil dan sederhana. Prinsip penggabungan kode sederhana menjadi kompleks ini secara umum tidak hanya tepat untuk digunakan oleh Javascript, tetapi juga untuk bahasa pemrograman lain pada umumnya.

Secara singkat, kita dapat melihat filsafat pengembangan Javascript dalam poin-poin berikut:

  1. Javascript mendukung paradigma pemrograman imparatif, fungsional, dan orientasi objek. Pelajari dan gunakan masing-masing paradigma ketika dibutuhkan; jangan gunakan sebuah paradigma hanya karena paradigma tersebut tersedia.
  2. Javascript memiliki model pemrograman fungsional yang sangat ekspresif. Manfaatkan model ini semaksimal mungkin.
  3. Pemrograman berorientasi objek (PBO) pada Javascript memiliki perbedaan dari PBO pada umumnya. Pelajari perbedaannya, dan pergunakan PBO dengan benar pada Javascript.
  4. Perlakukan program Javascript yang kompleks sebagai program-program kecil yang saling berinteraksi.

Dengan mengikuti empat prinsip dasar di atas ketika mengembangkan kode Javascript diharapkan kita dapat menghasilkan kode Javascript yang baik dan optimal.

comments powered by Disqus
Kembali ke bertzzie.com