Batas antara tipe fundamental dan objek kabur dan sering secara artifisial diperkenalkan. Sebagai contoh, Di C sebuah struct hanya sekelompok catatan, hanya tipe non-objek turunan. Dalam C ++, sebuah struct adalah kelas dengan semua bidang publik, sebuah objek. Namun, C ++ hampir sepenuhnya kompatibel dengan C ... perbatasannya sangat lembut di sini.
Untuk pemrograman berbasis prototipe Anda harus memiliki objek yang bisa berubah saat runtime. Mereka HARUS diketik lunak karena setiap perubahan saat runtime, kelas dari satu jenis berubah menjadi yang lain - jenisnya berubah.
Anda mungkin menjaga tipe fundamental dan turunan non-objek sebagai statis sekalipun. Tapi ini menimbulkan perbedaan yang aneh, objek diketik dengan lembut, bukan obyek diketik statis, dan barier yang keras harus dibuat di antara keduanya. Haruskah Anda dapat mengubah struktur? Sebuah benang? Haruskah Angka menjadi kelas atau tipe fundamental, atau sekumpulan tipe fundamental, int / float / bignum / etc?
Itu hanya lebih alami dan mudah dipelajari, digunakan dan ditulis untuk memiliki seragam ini, semua jenis bisa berubah atau tidak ada jenis yang bisa berubah saat runtime. Jika Anda menyatakan hanya satu jenis (Objek) yang bisa berubah, Anda berakhir dengan sakit kepala dan masalah kedua dunia.
Ketik-statis adalah:
- lebih mudah diimplementasikan
- lebih cepat / lebih efisien
- lebih aman
- lebih mudah untuk memelihara / mendokumentasikan sistem besar karena abstraksi.
Ketik dinamis adalah:
- lebih cepat menulis,
- lebih ringkas
- Bahasa lebih mudah dipelajari
- lebih memaafkan untuk kesalahan desain.
Dengan memadukan keduanya, Anda banyak berkorban.
- Implementasi menjadi lebih sulit daripada dua yang sebelumnya.
- kecepatan tergantung apakah Anda menggunakan tipe lunak atau tidak ... Jika ya, rendah, jika tidak, mengapa memilih bahasa sama sekali?
- tipe safety keluar jendela untuk semua tipe objek.
- mengikuti bagaimana satu jenis berubah menjadi yang lain adalah tugas yang cukup sulit. Mendokumentasikannya - sangat sulit.
- Anda masih perlu melakukan semua pembukuan dengan tipe dasar, yang membunuh keringkasan dan kecepatan menulis
- Kompleksitas bahasa lebih tinggi (lebih sulit untuk dipelajari) daripada yang "spesifik",
- "forgiving" dari dynamic-typed digantikan oleh kecenderungan untuk beberapa kesalahan yang sangat sulit pada tipe atribut yang tidak cocok.