Bahasa Pemrograman Statik dan Dinamik

Muhammad Rizki Fikriansyah
Daily Life of Mrizki
3 min readAug 17, 2018

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++.

Penampakan bahasa assembly. Foto diambil dari pixshark.com

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.

kompilasikan hello.cpp dan buat hasilnya di hello.out, lalu jalankan. IDE melakukan ini secara automatis

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.

Python: Error dikarenakan variable a sudah mempunyai tipe int maka ‘wkwkwk’ dengan tipe str tidak bisa dijumlahkan dengan 17

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.

Javascript: variable a dengan tipe number dapat dijumlahkan dengan ‘wkwkwk’ yang mana menghasilkan ‘17wkwkwk’ dari tipe string

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.

--

--

Muhammad Rizki Fikriansyah
Daily Life of Mrizki

Student of Full Stack Developer, doing Front End, dreaming of becoming an Entrepreneur