Điều này được gọi là compiler bootstrapping và phổ biến vì một số lý do, ít nhất là ngôn ngữ bạn đang viết thường là ngôn ngữ phù hợp nhất để hiểu các khái niệm bạn đang triển khai bằng ngôn ngữ bạn đang viết ...
Nếu bạn xem qua bài viết, hầu hết các ngôn ngữ chính đều có trình biên dịch tự lưu trữ (C, C++). Làm như vậy có nghĩa là bạn đang chạy một lượng lớn mã thông qua trình biên dịch mới của bạn, đó là một thử nghiệm tốt về chức năng. Trong trường hợp thông thường, bạn đang viết trình biên dịch vì bạn muốn có một ngôn ngữ mới với một số lợi ích so với ngôn ngữ hiện tại của bạn, vì vậy có thể tận dụng lợi thế của những lợi ích đó trong khi viết trình biên dịch có ý nghĩa tốt.
Vượt qua đầu tiên sẽ phải được viết bằng ngôn ngữ hiện có, nhưng khi bạn có trình biên dịch, bạn có thể sử dụng nó để biên dịch bản sửa đổi tiếp theo v.v. Rõ ràng điều này giới hạn trình biên dịch của bạn chỉ sử dụng các tính năng từ bản sửa đổi n-1
, nhưng vì bạn kiểm soát trình biên dịch nên là một vấn đề nhỏ. Trích dẫn Wikipedia:
Các phần chính của trình biên dịch C++ được viết bằng một tập hợp con của C++ có thể được biên dịch bằng cả g ++ và Microsoft Visual C++.
Vì TypeScript là một siêu của JavaScript, trình biên dịch có thể được viết bằng cú pháp chia sẻ và biên dịch theo một trong hai. Tôi không tin đó là trường hợp ở đây, nhưng mối quan hệ không cung cấp cho bạn một ngôn ngữ bắt đầu tốt cho trình biên dịch ban đầu.
Vâng, sau phiên bản đầu tiên, bạn có một trình biên dịch và có thể sử dụng nó để biên dịch trình biên dịch tiếp theo, v.v. – ssube
Đây là cách một lập trình viên hỏi: "Điều gì đến trước, gà hay trứng?" – series0ne