Biên dịch các ngôn ngữ cấp cao hơn cho các ngôn ngữ cấp thấp hơn là bánh. Có vô số ví dụ về nó đang được thực hiện. Không cần tiếp tục phát triển, chúng ta có thể chỉ ra các trình biên dịch C ++ sớm được biên dịch thành C.
Tuy nhiên, khi bạn bắt đầu ném "sạch" và "có thể đọc được" vào hỗn hợp, mọi thứ trở nên thực sự khó khăn. Mã sạch, dễ đọc thể hiện ý nghĩa và ý định của những gì bạn đang viết. Máy tính nổi tiếng là xấu trong việc giải thích và tạo ra ý nghĩa. Bạn có nhiều khả năng kết thúc với các biến được đặt tên int_147
hơn input_buffer_length
. Chắc chắn, nếu bạn thực sự muốn làm cho dự án này hoạt động, bạn có thể tham gia vào một dự án AI khổng lồ để xử lý việc chuyển đổi Lisp của bạn thành một loại C ++ dễ đọc nào đó, nhưng thành thật mà nói, các trình biên dịch Lisp thông thường rất giỏi trong những gì họ làm .
Quan trọng hơn khó khăn trong việc tạo C ++ từ Lisp là tính hữu ích của việc này. Mục đích nào nó sẽ phục vụ cho C ++ được tạo ra để có thể đọc được? Nếu Lisp là mã nguồn của bạn, các biểu diễn trung gian sẽ không liên quan. Nếu bạn muốn có thể trao C ++ cho các lập trình viên không hiểu Lisp gốc của bạn, thì bây giờ bạn đã gặp một vấn đề khác . Điều gì xảy ra khi họ muốn sửa đổi C ++ được tạo của bạn? Điều gì xảy ra nếu họ viết những thứ trong C ++ mà không dịch rõ ràng sang Lisp của bạn?
Hãy nói rằng chúng tôi đã giải quyết điều đó. Một thập kỷ sau và, sau khi đốt hàng trăm triệu đô la tiền cấp DoD, chúng tôi đã xây dựng công cụ dịch ngôn ngữ khổng lồ, phức tạp (nhưng hoàn hảo) này có thể biến Lisp thành C ++ thành ngữ và ngược lại. Những gì chúng ta đã thực sự đạt được sẽ không được hoàn thành tốt hơn bằng cách dạy cho mọi người một ngôn ngữ lập trình mới hoặc chỉ phát triển một trình biên dịch mới cho phép chúng ta liên kết hai ngôn ngữ?
Ô đúng rồi. Sếp của bạn muốn bạn viết C ++ còn bạn thì không. Cập nhật sơ yếu lý lịch của bạn và tìm một công việc mới.