2010-09-11 33 views
7

Được rồi, tôi đoán câu hỏi này đã được hỏi rất nhiều lần ở đây.Tạo ngôn ngữ lập trình và thiết kế trình biên dịch. Họ có liên quan không?

Tôi muốn tạo ngôn ngữ lập trình, không nhất thiết phải bắt đầu từ hôm nay, nhưng trong khoảng thời gian 2-3 năm. Tôi không phải là một lập trình viên giỏi, nhưng tôi đang cải thiện. Những gì tôi muốn hỏi là làm thế nào chặt chẽ tạo ra một ngôn ngữ và viết một trình biên dịch liên quan?

Vì trình biên dịch dịch một ngôn ngữ từ dạng này sang dạng khác, tôi đoán tất cả là viết một trình biên dịch cho một đoạn văn bản cụ thể. SO nếu tôi học thiết kế trình biên dịch, tôi có thể viết ngôn ngữ lập trình của riêng mình không?

Trả lời

4

Bạn có thể thiết kế ngôn ngữ lập trình mà không cần biết gì về việc triển khai trình biên dịch và ngược lại. Nhà thiết kế ngôn ngữ có thể viết một đặc tả cho ngôn ngữ, và trình biên dịch trình biên dịch có thể lấy và tạo trình biên dịch.

Tuy nhiên, nếu đây là một dự án cá nhân, thì có thể bạn sẽ phải học cách làm cả hai. Một ngôn ngữ lập trình mà không có trình biên dịch hoàn toàn là lý thuyết, và rất khó để tìm ra một ngôn ngữ lập trình tốt như thế nào mà không cần viết và thực thi các chương trình thực sự với nó. Ngay cả khi bạn tìm thấy ai đó sẵn sàng triển khai trình biên dịch cho bạn, bạn có thể không muốn phải đợi người đó mỗi khi bạn có ý tưởng mới, vì vậy bạn sẽ muốn biết cách tự mình làm.

Thực hiện trình biên dịch là một dự án lập trình khá tiên tiến, vì vậy nếu bạn chỉ mới bắt đầu làm lập trình viên, bạn có một đường cong học tập dốc phía trước bạn. Bạn có thể muốn bắt đầu bằng cách xem các hướng dẫn và ví dụ cho LLVM, mặc dù đó có thể không thực sự là cơ sở hạ tầng trình biên dịch phù hợp cho ngôn ngữ của bạn.

2

Naruto, tùy thuộc vào loại "Ngôn ngữ" bạn muốn tạo. Nếu nó là một ngôn ngữ đơn giản, chỉ cần học, và bạn chọn ngữ pháp, v.v., bạn sẽ không cần phải biết nhiều về lập trình. NHƯNG, nếu bạn định giải quyết một vấn đề nghiêm trọng, bạn sẽ phải học ít nhất một ngôn ngữ lập trình máy tính không chỉ để sử dụng nó mà còn cố gắng tiếp cận một số khái niệm của nó, ví dụ như OO, generics, lambda biểu thức, v.v ...

Tin tôi đi, đây không phải là nhiệm vụ hàng tháng mà là một hành trình nghiêm túc. Dù sao, tôi chúc bạn may mắn;)

+0

Tôi muốn phát triển một ngôn ngữ đơn giản, chỉ cần học. –

2

Liên quan mật thiết. Bạn thực sự không có một ngôn ngữ trừ khi bạn có một cách để giải thích/biên dịch nó thành một dạng thực thi.

1

Điều đó tùy thuộc vào ý nghĩa của "trình biên dịch". Trình biên dịch/thông dịch viên thường bao gồm hai phần lớn: phần phân tích cú pháp, đọc văn bản trong ngôn ngữ của bạn và xây dựng cấu trúc bên trong (AST), và phần tạo/giải mã mã, đọc AST và dịch nó thành máy hoặc mã byte. Mặc dù bạn chắc chắn sẽ cần phải biết cách viết một trình phân tích cú pháp cho ngôn ngữ của mình, việc tạo mã ít quan trọng hơn, ít nhất, ở giai đoạn đầu. Bạn có thể bắt đầu bằng cách dịch ngôn ngữ của bạn sang C và xem nơi bạn đến từ đó.

+0

Đây là những gì tôi đã suy nghĩ để làm. Tôi đã mua Compilers: nguyên tắc, kỹ thuật và công cụ của Aho, Lam, Sethi và Ullman. Hãy xem tôi đã đi được bao xa. –

Các vấn đề liên quan