Không - chắc chắn có thể biên dịch các ngôn ngữ động.
Thậm chí có một số ngôn ngữ động luôn được biên soạn theo thiết kế (ví dụ Clojure).
Tuy nhiên, câu hỏi chạm vào một điểm quan trọng liên quan: mặc dù các ngôn ngữ động có thể được biên dịch, nhưng thường thì các ngôn ngữ động không thể được biên dịch thành mã có hiệu quả như ngôn ngữ gõ tĩnh . Điều này là do có một số tính năng vốn có trong các ngôn ngữ động yêu cầu kiểm tra thời gian chạy sẽ không cần thiết trong ngôn ngữ được biên dịch tĩnh.
Một ví dụ về điều này: các ngôn ngữ cho phép vá thời gian chạy các đối tượng (ví dụ: Ruby) thường yêu cầu đối tượng được kiểm tra (với tra cứu có thể băm hoặc tương tự) bất cứ khi nào bạn gọi một phương thức trên đối tượng. Ngay cả khi điều này được biên dịch, trình biên dịch sẽ phải tạo mã để thực hiện tra cứu phương thức trong thời gian chạy. Ở một mức độ nào đó, việc tra cứu phương pháp này không giống với những gì một thông dịch viên sẽ phải làm.
Điều này thêm một chi phí đáng kể khi so sánh với một cuộc gọi phương thức trong một ngôn ngữ như Java, trong đó phương thức đúng có thể được xác định tĩnh bởi trình biên dịch từ định nghĩa lớp và được rút gọn thành một lệnh gọi hàm đơn giản trong mã gốc.
Tôi tin rằng hiệu ứng này nhiều hơn bất kỳ thứ gì khác dẫn đến các ngôn ngữ động có hiệu suất trung bình chậm hơn so với các đối tác được biên dịch tĩnh của chúng. Như bạn có thể thấy từ các điểm chuẩn còn thiếu sót , đó là các ngôn ngữ được nhập tĩnh (C, Java, Fortran, v.v.) có xu hướng nhanh nhất với các ngôn ngữ động (Perl, Python, Ruby, PHP, v.v.) ở cuối bảng xếp hạng.