Tidak - tentu saja memungkinkan untuk menyusun bahasa dinamis.
Bahkan ada beberapa bahasa dinamis yang selalu dikompilasi oleh desain (misalnya Clojure).
Namun pertanyaan menyentuh pada poin terkait yang penting: meskipun bahasa dinamis dapat dikompilasi, sering kali bahasa dinamis tidak dapat dikompilasi ke kode yang seefisien bahasa yang diketik secara statis . Ini karena ada beberapa fitur bawaan dalam bahasa dinamis yang memerlukan pemeriksaan runtime yang tidak diperlukan dalam bahasa yang dikompilasi secara statis.
Contoh dari ini: bahasa yang memungkinkan patch runtime objek (misalnya Ruby) sering mengharuskan objek untuk diperiksa (dengan pencarian yang hashtable atau serupa) setiap kali Anda memanggil metode pada objek. Bahkan jika ini dikompilasi, kompiler harus membuat kode untuk melakukan pencarian metode saat runtime. Dalam beberapa hal pencarian metode ini tidak berbeda dengan apa yang harus dilakukan oleh seorang juru bahasa.
Ini menambahkan overhead yang signifikan bila dibandingkan dengan pemanggilan metode dalam bahasa seperti Java, di mana metode yang benar dapat secara statis ditentukan oleh kompiler dari definisi kelas dan dikurangi menjadi pemanggilan fungsi sederhana dalam kode asli.
Saya percaya ini adalah efek ini lebih dari apa pun yang menghasilkan bahasa dinamis memiliki kinerja lebih lambat rata-rata daripada rekan-rekan mereka yang dikompilasi secara statis. Seperti yang dapat Anda lihat dari tolok ukur yang cacat , itu adalah bahasa yang diketik secara statis (C, Java, Fortran dll.) Yang cenderung lebih cepat dengan bahasa dinamis (Perl, Python, Ruby, PHP, dll.) Di bagian bawah peringkat.