Jak stworzyć język programowania: 15 kroków (ze zdjęciami)

Spisu treści:

Jak stworzyć język programowania: 15 kroków (ze zdjęciami)
Jak stworzyć język programowania: 15 kroków (ze zdjęciami)

Wideo: Jak stworzyć język programowania: 15 kroków (ze zdjęciami)

Wideo: Jak stworzyć język programowania: 15 kroków (ze zdjęciami)
Wideo: Jak WYCZYŚCIĆ swój KOMPUTER? #Shorts 2024, Może
Anonim

Wiele osób ma trudności lub frustracje związane z językami programowania, których używają na co dzień. Niektórzy chcą, aby sprawy były obsługiwane bardziej abstrakcyjnie, podczas gdy inni nie lubią implementować funkcji, które chcieliby, aby były „standardowe”. Niezależnie od tego, czy jesteś informatykiem, czy tylko hobbystą, wiele razy możesz zechcieć stworzyć nowy język programowania.

Kroki

Utwórz język programowania Krok 1
Utwórz język programowania Krok 1

Krok 1. Zapoznaj się z technologią

Nie możesz stworzyć języka programowania, jeśli nie wiesz, jak korzystać z komputera.

Utwórz język programowania Krok 2
Utwórz język programowania Krok 2

Krok 2. Zapoznaj się z terminologią

Twórcy kompilatorów często używają nieznanej terminologii. Przeczytaj o kompilatorach przed kontynuowaniem. Pamiętaj, aby wiedzieć wszystko, co musisz wiedzieć.

Utwórz język programowania Krok 3
Utwórz język programowania Krok 3

Krok 3. Zdecyduj, jaki problem rozwiązuje Twój język

Czy odnosi się do problemu specyficznego dla domeny, czy jest to język ogólnego przeznaczenia?

Utwórz język programowania Krok 4
Utwórz język programowania Krok 4

Krok 4. Pomyśl o semantyce swojego języka i jego koncepcjach

  • Czy zezwolisz na bezpośredni dostęp do wskaźnika, czy nie?
  • Jakie są typy danych w Twoim języku?
  • Czy jest to język statyczny czy dynamiczny?
  • Jaki jest twój model pamięci? Zamierzasz użyć garbage collectora czy ręcznego zarządzania pamięcią? (Jeśli korzystasz z garbage collectora, przygotuj się do napisania go lub dostosuj istniejący do swojego języka.)
  • Jak sobie poradzimy ze współbieżnością? Czy zamierzasz użyć prostego modelu wątkowania/blokowania, czy czegoś bardziej złożonego, takiego jak Linda lub model aktora? (Od dzisiejszych czasów komputery mają wiele rdzeni.)
  • Czy w języku są osadzone prymitywne funkcje, czy wszystko będzie pochodzić z biblioteki?
  • Jaki jest paradygmat lub paradygmaty twojego języka? Funkcjonalny? Zorientowany obiektowo? Prototyp (jak JavaScript)? Zorientowany na aspekt? Zorientowany na szablon? A może coś zupełnie nowego?
  • W jaki sposób Twój język będzie współdziałał z istniejącymi bibliotekami i językami (głównie C)? Ten punkt jest ważny, jeśli tworzysz język specyficzny dla domeny.
  • Na koniec, niektóre odpowiedzi na te pytania zostaną udzielone w drugim kroku i pomogą ci odpowiedzieć na następny krok.
Utwórz język programowania Krok 5
Utwórz język programowania Krok 5

Krok 5. Pomyśl o konkretnych zadaniach, które ktoś chciałby wykonać w Twoim języku

Na przykład „mogą chcieć skierować robota, aby podążał za linią” lub „mogą chcieć stworzyć w nim stosunkowo przenośne programy komputerowe” lub „mogą chcieć tworzyć za jego pomocą aplikacje internetowe”.

Utwórz język programowania Krok 6
Utwórz język programowania Krok 6

Krok 6. Eksperymentuj z pomysłami składni (tekstem języka) dla powyższych przykładów

Uważaj, aby zachować swój język w kategorii języków bezkontekstowych lub coś w niej. Twój generator parserów i docenisz to później

Utwórz język programowania Krok 7
Utwórz język programowania Krok 7

Krok 7. Napisz formalną gramatykę składni

Utwórz język programowania Krok 8
Utwórz język programowania Krok 8

Krok 8. Zdecyduj, czy język będzie interpretowany, czy kompilowany

Oznacza to, że w interpretowanym świecie użytkownik zazwyczaj będzie edytował twój program w edytorze i uruchamiał go bezpośrednio w interpreterze; podczas gdy w świecie skompilowanym, twój użytkownik będzie edytować twój program, skompilować go, zapisać gdzieś wynikowy plik wykonywalny i uruchomić go.

Utwórz język programowania Krok 9
Utwórz język programowania Krok 9

Krok 9. Napisz frontendowy skaner i parser lub znajdź narzędzie, które ci w tym pomoże

Zastanów się również, jak kompilator/interpreter będzie ostrzegał użytkownika o błędnych programach i błędach składni

Utwórz język programowania Krok 10
Utwórz język programowania Krok 10

Krok 10. Użyj informacji parsera, aby napisać kod wynikowy lub reprezentację pośrednią

Niech parser utworzy AST, a następnie utworzy swój kod wynikowy z AST przy użyciu trzech kodów adresowych lub jego starszego brata SSA, a następnie utwórz tabelę symboli, aby zdefiniować funkcje, zmienne globalne itp.

Ponadto, w zależności od języka, możesz również utworzyć wirtualne tablice wskaźników lub tablice informacyjne dla swoich klas (w celu wsparcia refleksji lub RTTI)

Utwórz język programowania Krok 11
Utwórz język programowania Krok 11

Krok 11. Napisz executor lub generator kodu, który powiąże wszystko razem

Utwórz język programowania Krok 12
Utwórz język programowania Krok 12

Krok 12. Napisz wiele programów testowych do testowania języka

Chcesz tworzyć programy, które podkreślają ciężar twojej gramatyki formalnej, aby zobaczyć, że twój kompilator akceptuje wszystko, co jest w twojej definicji i odrzuca wszystko, co jest poza nią

Utwórz język programowania Krok 13
Utwórz język programowania Krok 13

Krok 13. Zastanów się, jak użytkownik będzie debugował własne programy

Utwórz język programowania Krok 14
Utwórz język programowania Krok 14

Krok 14. Jeśli twój język używa standardowej biblioteki, będziesz chciał ją napisać

Wraz z garbage collectorem lub innymi funkcjami środowiska uruchomieniowego, jeśli tego potrzebujesz.

W szczególności, jeśli piszesz kompilator, będziesz potrzebować kodu, który wykona system operacyjny, aby rozpocząć uruchamianie kodu użytkownika (na przykład przydzielanie wszystkich zmiennych globalnych)

Utwórz język programowania Krok 15
Utwórz język programowania Krok 15

Krok 15. Opublikuj swój język wraz ze specyfikacją i kilkoma przykładami tego, co możesz w nim zrobić

Nie zapomnij udokumentować, w jaki sposób możesz zintegrować się z istniejącymi bibliotekami, językami oraz jak korzystać z funkcji środowiska wykonawczego i/lub biblioteki standardowej

Wideo - Korzystając z tej usługi, niektóre informacje mogą być udostępniane YouTube

Porady

  • Zacznij od zaprojektowania swojego języka i nie pisz żadnego kodu, dopóki nie będziesz zadowolony i nie odpowiesz na wszystkie (lub większość) pytań lub problemów związanych z Twoim projektem, ponieważ łatwiej jest zmienić projekt wcześniej niż później.
  • Znaj swoją platformę docelową (system operacyjny i biblioteki) dla swojego kompilatora/interpretera, w końcu będziesz go używać i manipulować nim.

Ostrzeżenia

  • Pomyśl, czy naprawdę potrzebujesz nowego języka i czego Twój język ma nowego, czego nie mają inne języki (może to być kombinacja funkcji lub pojedyncza funkcja).
  • Pisanie w językach jest trudne, jeśli nie wiesz, co robisz. To też wymaga dużo praktyki.
  • Przygotuj się na spędzenie czasu na projektowaniu języka, ponieważ po napisaniu kompilatora i przejściu punktu projektowego nie będziesz mieć możliwości zmiany języka.
  • Nie próbuj opierać swoich cech na unii kilku języków, jak powiedzenie, że twój język będzie unią języka X, języka Y i języka Z. Historia pokazała nam, że języki stworzone w ten sposób nigdy nie odniosą sukcesu, albo wszyscy programowaliby PL/1 zamiast czegoś opartego na C.

Zalecana: