Istilah-Istilah Pada Bahasa Pemrograman Untuk Pemula

Dalam dunia pemrograman komputer, ada banyak sekali jargon atau istilah yang dapat membuat pemula yang baru belajar mengalami kebingungan. Berikut ini beberapa istilah yang dapat membantu Anda memahami bahasa pemrograman yang sedang Anda pelajari.

  • Dynamic typing
Suatu saat Anda sedang mengobrol dengan teman sesama pemrogram dan dia berkata, “Ah, saya malas pakai JavaScript soalnya dia bahasanya dynamic typing. Lebih yakin kalau saya ngoding pakai TypeScript yang static typing.” Apa artinya?
Dynamic typing adalah karakteristik dari bahasa pemrograman yang tidak perlu mendefinisikan tipe data yang akan digunakan pada saat Anda membuat variabel dan fungsi. Interpreter dari bahasa tersebut yang akan menebak tipe data apa yang akan digunakan pada saat program dijalankan.
Kelemahan dari bahasa dynamic typing adalah pengecekan tipe data baru dilakukan saat program berjalan (di runtime process), sehingga kalo ada tipe data yang tidak sesuai maka program akan crash. Misal sebuah fungsi yang Anda buat seharusnya menerima parameter berbentuk String, ternyata yang Anda masukkan malah Array maka program akan crash saat program sudah berjalan.
Sedangkan keuntungannya, proses pengembangan program akan lebih cepat karena Anda tidak perlu menentukan tipe data secara strict di fase coding. Bahasa-bahasa yang menggunakan dynamic typing cocok digunakan untuk melakukan prototyping atau untuk membangun program yang memiliki kebutuhan mengubah-ngubah fitur dalam waktu cepat.
Beberapa contoh bahasa yang sifatnya dynamic typing, yaitu JavaScript, PHP, Ruby, Clojure, R, dan Python.
  • Static typing
Kebalikan dari dynamic typing, static typing merupakan sifat dari bahasa pemrograman yang membutuhkan definisi tipe data secara eksplisit saat Anda membuat variabel dan fungsi. Biasanya bahasa-bahasa yang sifatnya static typing membutuhkan satu proses tambahan yang bernama kompilasi atau build process. Pada saat ini lah pengecekan seluruh kesalahan dilakukan oleh compiler, sehingga program yang sudah sukses dikompilasi sudah hampir bisa dipastikan berjalan mulus pada saat runtime process.
Kelemahannya menggunakan bahasa yang static typing adalah proses pengembangan program akan lebih lambat dari sisi waktu. Karena setiap Anda selesai melakukan pemrograman dan ingin mencoba menjalankan, maka Anda akan menunggu beberapa saat untuk menyelesaikan proses kompilasi kode Anda.
Sedangkan keuntungannya, program yang Anda hasilkan akan menjadi lebih stabil saat dijalankan. Karena sebagian besar kesalahan sudah ditangkap pada saat proses kompilasi atau build. Bahasa-bahasa static typing cocok digunakan jika Anda membangun program yang sifatnya critical atau tidak boleh ada kesalahan pada saat program berjalan, misal sistem perbankan, firmware untuk microcontroller, payment gateway, dll.
Beberapa contoh bahasanya yaitu Java, C, C++, C# (sebelum versi 3.0), dan TypeScript.

  • Type inference
Type inference banyak digunakan oleh bahasa-bahasa pemrograman yang relatif baru. Ini merupakan teknik gabungan antara kemudahan pemrograman pada dynamic typing dan keamanan pada static typing. Tetap membutuhkan proses kompilasi, tetapi Anda tidak perlu mendeklarasikan tipe data secara eksplisit pada saat membuat variabel dan fungsi karena compiler-nya sudah pintar untuk menebak tipe data yang Anda gunakan.
Beberapa contoh bahasanya yaitu C# (versi 3.0 ke atas), F#, Kotlin, Scala, Haskell, OCaml, dan Swift.

  • Interpreter
Interpreter adalah program yang menerjemahkan high-level language menjadi Byte Code untuk kemudian dijadikan bahasa yang dapat dimengerti oleh komputer (machine code). High-level language adalah bahasa pemrograman yang mendekati bahasa Inggris sehari-hari, seperti Java, JavaScript, PHP, Ruby, dan sebagainya.
Cara kerja interpreter:
  1. Anda menulis kode program menggunakan aplikasi penyunting teks, seperti Sublime, Atom, Visual Studio Code, atau Notepad++.
  2. Saat Anda menjalankan kode program yang sudah ditulis, maka interpreter akan menjalankan kode program Anda baris per baris. Analisa satu baris, tidak ada kesalahan, jadikan machine code, dan eksekusi; lalu analisa baris berikutnya dan seterusnya.
Itu lah mengapa interpreted language seperti PHP, JavaScript, Python, dan Ruby sering dikeluhkan orang sebagai bahasa dengan performa yang lambat jika dibandingkan dengan compiled language. Karena pengecekan dilakukan di runtime process.
Beberapa interpreted language memiliki mesin virtual untuk menjalankan program yang dihasilkan untuk mendongkrak performa agar lebih cepat saat eksekusi program. Contohnya Java dan aneka bahasa turunannya — seperti Scala, Clojure, dan Kotlin — yang berjalan di atas Java Virtual Machine, atau Erlang dan aneka bahasa turunannya — seperti Elixir dan LFE — yang berjalan di atas BEAM Virtual Machine.
  • Compiler
Compiler memiliki fungsi yang sama dengan interpreter, yaitu menterjemahkan high-level language menjadi machine code (biner 1 dan 0). Perbedaannya compiler tidak menterjemahkan kode yang Anda tulis menjadi Byte Code terlebih dahulu, akan tetapi langsung menjadi machine code.
Cara kerja compiler:
  1. Anda menulis kode program menggunakan aplikasi penyunting teks, seperti Sublime, Atom, Visual Studio Code, atau Notepad++.
  2. Jalankan proses build. Di sini compiler akan bekerja dengan cara menganalisa keseluruhan baris program dari semua berkas yang sudah Anda tulis apakah ada kesalahan atau tidak. Jika tidak ada kesalahan sama sekali compiler akan menghasilkan program biner yang dapat dijalankan oleh komputer.
Hal ini lah yang membuat compiled language seperti C, C++, Swift, Go, dan OCaml sering digunakan untuk membuat aplikasi yang membutuhkan performa yang sangat tinggi. Karena program yang dihasilkan sudah siap dijalankan, tidak ada analisa baris per baris di runtime process seperti pada interpreted language.






Gambar di bawah ini adalah perbedaan cara kerja compiler dan interpreter. Menggunakan contoh bahasa pemrograman C dan Java. Pada bahasa pemrograman C, kode yang Anda tulis akan diubah menjadi machine code yang spesifik dengan arsitektur prosesor dan sistem operasi yang Anda gunakan. Itu sebabnya program yang dikompilasi untuk Windows tidak dapat Anda jalankan di Linux atau Mac, sekalipun kode program yang Anda tulis sama.
Berbeda dengan Java, Anda bisa menjalankan program yang dihasilkan oleh interpreter Java yang masih berupa Byte Code di sistem operasi apa pun, selama di sistem operasi tersebut sudah Anda pasang Java Virtual Machine.
Secara performa, program yang ditulis dengan menggunakan C biasanya akan lebih cepat dibanding program yang ditulis dengan menggunakan Java.



Perbedaan cara kerja compiler dan interpreter.

Kesimpulannya interpreted language dan compiled language memiliki kelebihan dan kekurangan masing-masing. Compiled language memiliki performa yang lebih tinggi bukan berarti akan selalu baik jika digunakan di setiap kasus atau problem yang mau Anda pecahkan. Ada faktor lain yang harus Anda pertimbangkan selain hanya masalah performa.
Misal membangun sebuah Web sederhana, jelas akan memakan waktu yang lama jika Anda bangun dengan menggunakan C, tetapi akan sangat hemat waktu pengembangan jika Anda menggunakan PHP atau Node.js. Itu lah mengapa Web besar semacam Instagram dibangun menggunakan berbagai macam bahasa, seperti Python (interpreted language) untuk Web-nya yang berhadapan dengan pengguna dan C (compiled language) untuk layanan di belakang layar yang membutuhkan performa dengan kecepatan tinggi semacam image processing.

Share:

Tidak ada komentar:

Posting Komentar

Postingan Populer

Diberdayakan oleh Blogger.

Recent Posts