CoffeeScript biên dịch thành JavaScript vì một lý do rất đơn giản, JavaScript là ngôn ngữ phía máy khách thực tế và sẽ không hợp lý khi mong đợi các nhà cung cấp trình duyệt hỗ trợ CoffeeScript, khi tất cả những gì nó cung cấp là một cú pháp thay thế.
Theo cách tương tự, điểm chính của ngôn ngữ cấp cao đối với người dịch C là tính di động ngay lập tức, vì có trình biên dịch C cho hầu hết mọi nền tảng và sự phong phú của các thư viện C. Vala , ví dụ, được thiết kế để :
- là trình biên dịch cho GObject ,
- xây dựng các tệp thực thi riêng (thông qua trình biên dịch C của máy),
- tự động đếm tham chiếu, và
- vẫn có thể truy cập được đối với các lập trình viên Gnome C
Gnome là một dự án theo định hướng C truyền thống và GObject được viết bằng C, Vala có lẽ sẽ không tìm thấy nhiều tình yêu giữa các nhà phát triển Gnome nếu nó được biên dịch thành mã máy, bất kể bản chất thân thiện hơn (và cú pháp). Không phải ai cũng thích cú pháp, đến mức một ngôn ngữ khác, Genie , được xây dựng để cải thiện nó.
Đối với một ví dụ về C ++, Facebook đã phát triển HipHop , một dịch giả từ PHP sang C ++. Họ đã cố gắng giải quyết một vấn đề rất cụ thể, sử dụng CPU, mà không phải thay thế tất cả mã PHP của họ và đào tạo lại các kỹ sư của họ (hoặc tệ nhất là thay thế chúng). Đây là một ví dụ cụ thể hơn nhiều, vì các vấn đề về khả năng mở rộng của Facebook là tốt, duy nhất và một lần nữa có quyền truy cập vào mã C ++ trung gian có thể hữu ích, vì các phần mở rộng PHP được viết bằng C và C ++.
Vì vậy, một dịch giả từ một ngôn ngữ cấp cao sang ngôn ngữ khác là một ý tưởng tốt chủ yếu khi bạn truy cập vào mã trung gian là bắt buộc. Đối với CoffeeScript, mã JavaScript là cần thiết vì sự chấp nhận rộng rãi của trình duyệt và đối với Vala, Genie và HipHop vì cơ sở mã hiện có. Rõ ràng có quyền truy cập vào mã trung gian có nghĩa là bạn có thể tối ưu hóa thêm nếu cần.
Nhưng nói chung , sẽ không nên xây dựng một ngôn ngữ dịch sang C hoặc bất kỳ ngôn ngữ nào khác, nếu bạn không sử dụng mã kết quả. Có rất nhiều ngôn ngữ ngoài kia, nếu bạn không thể đối phó với C, chỉ cần chọn một ngôn ngữ khác. Thật trùng hợp, trình biên dịch C ++ đầu tiên được viết bởi Bjarne Stroustrup, CFront, là một trình dịch từ C sang Class sang C, nhưng điều đó chủ yếu là vì là một ngôn ngữ mới, không thể bootstrap C với Classes.