Có sự khác biệt lớn về kiến trúc khi thiết kế các ứng dụng sẽ được xây dựng trên các ngôn ngữ tĩnh (như C # hoặc Java) và các ngôn ngữ động (như Ruby hoặc Python) không?
Không.
Dễ dàng hơn để viết các khung ưa thích cho các ngôn ngữ động. Nhưng đó không phải là một điều ứng dụng.
Những khả năng thiết kế nào có thể là một lựa chọn tốt cho một loại mà là một loại xấu cho loại kia?
Không, thực sự.
Bạn có thể viết những điều tốt đẹp bằng một trong hai ngôn ngữ.
Có bất kỳ tính năng hữu ích nào có thể đạt được với một loại không phải với loại kia (tất nhiên là về thiết kế và kiến trúc) không?
Không.
Sự khác biệt là các ngôn ngữ động là "viết, chạy, sửa". Bạn có thể thử nghiệm và sửa chữa nhanh chóng.
Ngôn ngữ tĩnh là "viết, biên dịch, xây dựng, chạy, sửa chữa". Bạn không thể thử nghiệm dễ dàng.
Ngoài ra, chúng gần như giống nhau về khả năng của chúng.
Có bất kỳ mẫu thiết kế năng động cụ thể?
Có lẽ. Python eval()
và các execfile()
hàm - theo một cách nào đó - chỉ ra một tính năng ngôn ngữ động rất khó (nhưng không thể thực hiện được) bằng ngôn ngữ tĩnh. Sẽ là rất nhiều dòng mã để biên dịch và thực thi mã trong cùng một không gian quy trình.
Đó không phải là ngôn ngữ động cụ thể. Nó chỉ dễ dàng hơn.