Anda memiliki titik yang benar-benar valid, bahasa yang tidak melacak tipe variabel yang ada, dan disebut "diketik secara dinamis". Kategori ini mencakup bahasa-bahasa seperti JavaScript, Perl, Lisp, dan Python.
Keuntungan yang kami dapatkan dari bahasa yang diketik secara statis adalah beberapa tambahan pengecekan waktu kompilasi.
Misalkan, misalnya, Anda memiliki metode berikut:
public addCustomerContact(Customer client, Employee contact) {
...
}
Mungkin saja, jika Anda memiliki pelanggan bob
dan karyawan james
dalam kode Anda, untuk melakukan panggilan yang salah addCustomerContact(james, bob)
, yang tidak valid. Tetapi jika kompiler tidak mengetahui jenis variabel, itu tidak dapat memperingatkan Anda bahwa Anda telah membuat panggilan yang tidak valid, sebaliknya, kesalahan terjadi pada saat runtime ... dan karena bahasa yang diketik secara dinamis tidak memeriksa jenis parameter yang diteruskan ke metode, masalah itu terjadi setiap kali kode Anda mencoba menggunakan properti james
objek khusus pelanggan, atau properti khusus karyawan dari bob
objek. Itu mungkin lama setelah pasangan (james, bob) ditambahkan ke daftar kontak pelanggan.
Sekarang, Anda mungkin bertanya-tanya, mengapa kompiler tidak dapat menyimpulkan jenis james
dan bob
, dan masih memperingatkan kita? Itu kadang-kadang mungkin, tetapi jika variabel benar-benar tidak memiliki tipe, maka kita bisa melakukan hal berikut:
var james;
var bob;
if (getRandomNumber() > 0.5) {
james = new Customer();
bob = new Employee();
} else {
james = new Employee();
bob = new Customer();
}
Sangat sah untuk menetapkan nilai apa pun ke variabel apa pun, karena kami mengatakan variabel tidak memiliki tipe. Itu juga berarti kita tidak selalu bisa mengetahui tipe variabel, karena bisa dari tipe yang berbeda berdasarkan jalur eksekusi yang berbeda.
Secara umum, bahasa yang diketik secara dinamis digunakan untuk bahasa scripting, di mana tidak ada langkah kompilasi, sehingga kesalahan kompilasi tidak ada, artinya penekanan tombol tambahan yang diperlukan untuk memberikan tipe variabel tidak akan sangat berguna.
Ada beberapa keuntungan berbeda untuk bahasa yang diketik secara dinamis juga, sebagian besar dalam hal kode kurang diperlukan untuk mengimplementasikan desain yang sama: antarmuka tidak perlu ditulis, karena semuanya "diketik bebek" (kami hanya peduli metode / properti apa objek memiliki , bukan kelas milik objek), variabel tidak perlu diberi tipe eksplisit ... dengan trade off yang kami temukan tentang bug yang lebih sedikit sebelum kami mulai menjalankan kode kami.