Hur man skapar ett programmeringsspråk

Många människor har svårigheter eller frustrationer med programmeringsspråk som de använder varje dag. Vissa vill att saker ska hanteras mer abstrakt, medan andra inte tycker om att implementera funktioner som de önskar var "standard". Oavsett om du är en IT-professionell eller bara en hobbyist, många gånger kan du hitta dig själv som vill skapa ett nytt programmeringsspråk.

Steg

  1. Bild med titeln Skapa ett programmeringsspråk Steg 1
1. Bli bekant med tekniken. Du kan inte skapa ett programmeringsspråk om du inte vet hur du använder en dator.
  • Bild med titeln Skapa ett programmeringsspråk Steg 2
    2. Bli bekant med terminologin. Kompilatorskribenter använder ofta okänd terminologi. Läs upp på kompilatorer innan du fortsätter. Var noga med att veta allt du behöver veta.
  • Bild med titeln Skapa ett programmeringsspråk Steg 3
    3. Bestäm vilket problem ditt språk löser. Är det adresserat ett domänspecifikt problem, eller är det ett språkligt språk?
  • Bild med titeln Skapa ett programmeringsspråk steg 4
    4. Tänk på semantiken på ditt språk och begreppen det.
  • Ska du tillåta direktpekare tillgång eller inte?
  • Vad är datatyperna på ditt språk?
  • Är det ett statiskt eller dynamiskt språk?
  • Vad är din minnesmodell? Ska du använda en sopsamlare eller manuell minneshantering? (Om du använder en sopkollektor, förbered dig för att skriva en eller anpassa en befintlig till ditt språk.)
  • Hur kommer man att hantera samtidighet? Ska du använda en enkel tråd- / låsmodell eller något mer komplicerat som Linda eller skådespelarmodellen? (Eftersom idag har datorer flera kärnor.)
  • Finns det primitiva funktioner inbäddade på språket eller kommer allt från ett bibliotek?
  • Vad är paradigmet eller paradigmerna på ditt språk? Funktionell? Objektorienterad? Prototyp (som jаvascript)? Aspektorienterad? Mallorienterad? Eller något helt nytt?
  • Hur går ditt språk på gränssnittet med befintliga bibliotek och språk (främst c)? Denna punkt är viktig om du bygger ett domänspecifikt språk.
  • Slutligen kommer några av svaren på dessa frågor att besvaras av det andra steget och hjälper dig att svara på nästa steg.
  • Bild med titeln Skapa ett programmeringsspråk Steg 5
    5. Tänk på några specifika uppgifter som någon skulle vilja kunna utföra med ditt språk. Till exempel, "De kanske vill styra en robot för att följa en linje" eller "De kanske vill skapa relativt bärbara skrivbordsprogram i det" eller "De kanske vill skapa webbapplikationer med det".
  • Bild med titeln Skapa ett programmeringsspråk Steg 6
    6. Experimentera med syntaxidéer (språket) för ovanstående exempel.
  • Var försiktig med att hålla ditt språk i den kontextfria språkkategorin eller något inuti det. Din parsergenerator och du kommer att uppskatta det senare.
  • Bild med titeln Skapa ett programmeringsspråk Steg 7
    7. Skriv ut en formell grammatik för syntaxen.
  • Bild med titeln Skapa ett programmeringsspråk Steg 8
    8. Bestäm om språket kommer att tolkas eller sammanställas. Betydelse att i den tolkade världen kommer din användare vanligtvis att redigera ditt program i en redaktör och köra det direkt på tolken, medan den sammanställde världen, kommer din användare att redigera ditt program, kompilera det, spara den resulterande körbar någonstans och kör den.
  • Bild med titeln Skapa ett programmeringsspråk Steg 9
    9. Skriv den främre ändenskannern och parser eller hitta ett verktyg som hjälper dig med det här.
  • Tänk också på hur din kompilator / tolk kommer att varna din användare om felaktiga program och syntaxfel.
  • Bild med titeln Skapa ett programmeringsspråk steg 10
    10. Använd parserinformationen för att skriva objektkoden eller en mellanliggande representation. Har parsern skapa en AST och skapa din objektkod från AST med tre adresskod eller dess Big Brother SSA, sedan skapa ett symbolbord för att definiera dina funktioner, globala variabler, etc.
  • Också, beroende på ditt språk, kanske du också vill skapa virtuella pekarebord eller informationstabeller för dina klasser (för att stödja reflektion eller RTTI).
  • Bild med titeln Skapa ett programmeringsspråk Steg 11
    11. Skriv exekverare eller kodgenerator som kommer att binda allt tillsammans.
  • Bild med titeln Skapa ett programmeringsspråk steg 12
    12. Skriv många testprogram för att testa språket.
  • Du vill skapa program som betonar burdens av din formella grammatik för att se att din kompilator accepterar allt som är inne i din definition och avvisar allt som är utanför det.
  • Bild med titeln Skapa ett programmeringsspråk Steg 13
    13. Tänk på hur användaren kommer att felsöka sina egna program.
  • Bild med titeln Skapa ett programmeringsspråk steg 14
    14. Om ditt språk använder ett standardbibliotek, vill du skriva det. Tillsammans med en sopsamlare eller andra körtidsfunktioner om du behöver det.
  • Specifikt, om du skriver en kompilator, behöver du koden som operativsystemet kommer att köras för att börja köra användarkoden (till exempel fördelning av alla globala variabler).
  • Bild med titeln Skapa ett programmeringsspråk steg 15
    15. Publicera ditt språk, tillsammans med specifikationen för det och några exempel på vad du kan göra i det.
  • Glöm inte att dokumentera hur du kan integrera med befintliga bibliotek, språk och hur du använder körtidsfunktionerna och / eller standardbiblioteket.
  • Video

    Genom att använda den här tjänsten kan viss information delas med YouTube.

    Tips

    Börja med att designa ditt språk och skriv inte någon kod, tills du är nöjd och har svarat på alla (eller de flesta) av frågorna eller problemen med din design eftersom det är lättare att ändra designen tidigare än senare.
  • Känn din målplattform (operativsystem och bibliotek) för din kompilator / tolk, trots allt kommer du att använda den och manipulera den.
  • Varningar

    Tänk om du verkligen behöver ett nytt språk, och vad ditt språk har av nya att andra språk inte har (det kan vara en kombination av funktioner eller en enda funktion).
  • Att skriva språk är svårt om du inte vet vad du gör. Det tar också mycket träning.
  • Förbered dig för att spendera lite tid i språkdesign, eftersom du inte har en chans att ändra ditt språk när du har skrivit kompilatorn och förbi designpunkten.
  • Försök inte basera dina funktioner i en union av flera språk, som att säga att ditt språk kommer att bli ett språk av språk x, språk y och språk z. Historien har visat oss att språk som skapats på ett sådant sätt aldrig kommer att hitta framgång, eller alla skulle programmera PL / 1 istället för något baserat på C.
  • Saker du behöver

    • Tålamod.
    • Kunskap om språkfunktioner och språkdesign (du kanske vill läsa programmeringsspråkkonstruktioner från David A. Watt).
    • Kunskap om kompilatorteori (eftersom du kommer att skriva en kompilator / tolk för ditt språk och ditt genomförande kommer att vara referensimplementeringen).
    • Används för ditt språk (kom ihåg att några av de mest använda språken som C eller Lisp skapades för att göra något specifikt som att skapa Unix eller göra symbolisk beräkning).
    Dela på det sociala nätverket:
    Liknande