Bahasa Pemrograman Statik dan Dinamik
Jika kamu berada di lingkungan IT atau pengembangan software, pasti tidak jarang kamu mendengar ungkapan seperti “Java itu statik” atau “Javascript itu dinamik”. Tapi apa sebenarnya maksudnya itu? Dan mengapa java itu statik sedangkan javascript dinamik?
Di awal era komputer, semua operating system dan software ditulis menggunakan bahasa Assembly. Bahasa Assembly adalah bahasa yang menghubungkan program langsung dengan hardware dan ini adalah bahasa paling bawah atau disebut juga low-level programming language. Assembly sangatlah susah dimengerti oleh manusia, oleh karena itu diciptakanlah bahasa pemrograman seperti C dan C++.
C dan C++ tidak dapat langsung dijalankan di semua komputer. Program C dan C++ harus pertama-tama dikompilasi sebelum dijalankan. Inilah yang disebut bahasa pemrograman yang statik (statically typed). Bahasa program yang statik juga akan berhenti disaat kompilasi jika terdapat Error di dalam program tersebut.
Beberapa bahasa pemrograman yang terbilang statik yaitu C, C++, Java, C#, F#, Skala, Haskell, dan mungkin masih banyak lagi.
Berbeda dengan bahasa pemrograman statik, bahasa pemrograman dinamik (dinamically typed) seperti Javascript, Python, Ruby, PHP, dsb. tidak membutuhkan kompilasi sebelum dijalankan. Kompilasi tetap dilakukan hanya saja saat program tersebut di eksekusi. Keuntungannya adalah bahasa pemrograman dinamik biasanya hanya membutuhkan runtime environment yang tujuannya adalah merubah kode menjadi bahasa yang dimengerti oleh komputer.
Jika terdapat Error di dalam kode yang ditulis menggunakan bahasa dinamik, program akan berhenti saat itu juga dan harus di-restart dan di-debug agar dapat melanjukannya kembali.
statically typed: Melakukan kompilasi dan cek tipe variable sebelum dieksekusi
dinamically typed: Melakukan kompilasi saat runtime
Bahasa Program yang Kuat dan Lemah (strongly typed vs. weakly typed)
Orang-orang cenderung beranggapan bahwa bahasa program yang statik sudah pasti kuat, sedangkan bahasa program yang dinamik pasti lemah. Ini adalah salah satu kesalahpahaman yang saat umum, terutama saat baru belajar membuat program.
Kuat dan lemah mengacu pada tipe variable di program tersebut. Hal ini tidak ada hubungannya dengan kompilasi yang mana perbedaan utama antara statik dan dinamik.
Pada bahasa pemrograman yang kuat, kita tidak dapat merubah tipe variable sesudah kita menginisialisasi. Jika kita merubah variable tersebut, program akan berhenti (crash) atau akan mengeluarkan Error. Contoh dari bahasa pemrograman yang statik adalah Java dan yang dinamik adalah Python.
Di sisi lain, bahasa pemrograman yang lemah dapat merubah tipe variable sesudah diinisialisasi. Walaupun tipe variable di C atau C++ harus ditentukan saat inisialisasi, nilai variable tersebut dapat diubah menggunakan casting atau dengan pointer yang menunjukkan ke memori yang lain. Selain C dan C++, ada Javascript, PHP, dan Perl termasuk pada bahasa pemrograman yang lemah.
weakly typed: Tipe variable dapat diubah setelah diinisialisasi
strongly typed: Tipe variable tidak dapat diubah setelah diinisialisasi
Bagaimanapun, bahasa apa saja yang digunakan, biasakan untuk tidak mengganti tipe suatu variable dengan tipe yang lain. Baik itu statik, dinamik, kuat atau lemah. Karena dapat menghindari kamu dari bug yang tidak kamu inginkan.