2010-09-11 13 views
7

W porządku, myślę, że to pytanie zostało zadane wiele razy tutaj.Tworzenie języków programowania i projektowania kompilatorów. Czy są powiązane?

Chcę utworzyć język programowania, niekoniecznie od dzisiaj, ale w ciągu 2-3 lat. Nie jestem dobrym programistą, ale poprawiam się. Chciałem zapytać, jak blisko jest tworzenie języka i pisanie kompilatora?

Ponieważ kompilator tłumaczy język z jednej formy na drugą, myślę, że chodzi o pisanie kompilatora dla konkretnego fragmentu tekstu. WIĘC, jeśli nauczę się projektowania kompilatorów, czy będę mógł napisać własny język programowania?

Odpowiedz

4

Można zaprojektować język programowania bez wiedzy o implementowaniu kompilatorów i na odwrót. Projektant języka może napisać specyfikację dla danego języka, a osoba wdrażająca kompilator może ją przyjąć i utworzyć kompilator.

Jeśli jednak jest to projekt osobisty, prawdopodobnie będziesz musiał nauczyć się wykonywać oba te zadania. Język programowania, dla którego nie ma kompilatora, jest czysto teoretyczny i trudno jest dowiedzieć się, jak dobry jest język programowania bez pisania i uruchamiania z nim rzeczywistych programów. Nawet jeśli znajdziesz kogoś chętnego do zaimplementowania kompilatora, możesz nie chcieć czekać na tę osobę za każdym razem, gdy masz nowy pomysł, więc będziesz chciał wiedzieć, jak zrobić to samemu.

Wdrożenie kompilatora jest dość zaawansowanym projektem programistycznym, więc jeśli dopiero zaczynasz jako programista, masz przed sobą stromą ścieżkę uczenia się. Możesz zacząć od obejrzenia samouczków i przykładów dla LLVM, chociaż może to nie być odpowiednia infrastruktura kompilatora dla Twojego języka.

2

Naruto, zależy to od rodzaju "Języka", który chcesz utworzyć. Jeśli jest to prosty, łatwy do nauczenia się język, a ty wybierasz gramatykę, itp., Itp., Nie musisz dużo wiedzieć o programowaniu. ALE, jeśli masz zamiar poradzić sobie z poważnym, będziesz musiał uczyć się co najmniej jednego języka programowania komputerowego głęboko nie tylko, aby go użyć, ale spróbować osiągnąć kilka jego pojęć, na przykład, jak OO, generics, lambda wyrażenia, itp., itp.

Uwierzcie mi, to nie jest zadanie miesięcy, ale poważna podróż. W każdym razie, życzę ci szczęścia;)

+0

Chcę rozwinąć prosty, łatwy do opanowania język. –

2

Intymnie spokrewniony. Naprawdę nie masz języka, chyba że masz sposób na zinterpretowanie/skompilowanie go do postaci wykonywalnej.

1

To zależy od tego, co masz na myśli przez "kompilator". Kompilatory/interpretatorzy zazwyczaj składają się z dwóch dużych części: części analizatora składni, która czyta tekst w twoim języku i buduje z niego strukturę wewnętrzną (AST) oraz część generującą/interpretującą kod, która czyta AST i tłumaczy ją na maszynę lub kody bajtów. Choć zdecydowanie będziesz musiał wiedzieć, jak napisać parser dla twojego języka, generowanie kodu jest mniej ważne, przynajmniej na wczesnym etapie. Możesz zacząć od przetłumaczenia swojego języka na język C i sprawdzenia, skąd idziesz.

+0

To właśnie zamierzałem zrobić. Kupiłem kompilatory: zasady, techniki i narzędzia autorstwa Aho, Lam, Sethi i Ullman. Zobaczmy, jak daleko stąd. –

Powiązane problemy