Hur man skapar ett programmeringsspråk: 15 steg (med bilder)

Innehållsförteckning:

Hur man skapar ett programmeringsspråk: 15 steg (med bilder)
Hur man skapar ett programmeringsspråk: 15 steg (med bilder)

Video: Hur man skapar ett programmeringsspråk: 15 steg (med bilder)

Video: Hur man skapar ett programmeringsspråk: 15 steg (med bilder)
Video: Uppdatera drivrutin Grafikkort 2024, Maj
Anonim

Många människor har svårigheter eller frustrationer med de programmeringsspråk de använder varje dag. Vissa vill att saker ska hanteras mer abstrakt, medan andra ogillar att implementera funktioner som de önskar var "standard". Oavsett om du är en IT -proffs eller bara en amatör, kan du ofta tycka att du vill skapa ett nytt programmeringsspråk.

Steg

Skapa ett programmeringsspråk Steg 1
Skapa ett programmeringsspråk Steg 1

Steg 1. Bekanta dig med tekniken

Du kan inte skapa ett programmeringsspråk om du inte vet hur du använder en dator.

Skapa ett programmeringsspråk Steg 2
Skapa ett programmeringsspråk Steg 2

Steg 2. Bekanta dig med terminologin

Kompilatorförfattare använder ofta okänd terminologi. Läs om kompilatorer innan du fortsätter. Var noga med att veta allt du behöver veta.

Skapa ett programmeringsspråk Steg 3
Skapa ett programmeringsspråk Steg 3

Steg 3. Bestäm vilket problem ditt språk löser

Tar det upp ett domenspecifikt problem, eller är det ett allmänt språk?

Skapa ett programmeringsspråk Steg 4
Skapa ett programmeringsspråk Steg 4

Steg 4. Tänk på semantiken i ditt språk och begreppen för det

  • Kommer du att tillåta direkt pekaråtkomst eller inte?
  • Vilka datatyper är det för ditt språk?
  • Är det ett statiskt eller dynamiskt språk?
  • Vad är din minnesmodell? Kommer du att använda en sophämtare eller manuell minneshantering? (Om du använder en sophämtare, förbered dig på att skriva en eller anpassa en befintlig till ditt språk.)
  • Hur ska hantera samtidighet? Kommer du att använda en enkel tråd-/låsmodell eller något mer komplext som Linda eller skådespelarmodellen? (Eftersom datorer idag har flera kärnor.)
  • Finns det primitiva funktioner inbäddade i språket eller kommer allt från ett bibliotek?
  • Vad är paradigmet eller paradigmen för ditt språk? Funktionell? Objektorienterad? Prototyp (som JavaScript)? Aspektorienterad? Mallorienterad? Eller något helt nytt?
  • Hur kommer ditt språk att interagera 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.
Skapa ett programmeringsspråk Steg 5
Skapa ett programmeringsspråk Steg 5

Steg 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 rikta en robot att följa en linje" eller "de kanske vill skapa relativt bärbara skrivbordsprogram i den" eller "de kanske vill skapa webbapplikationer med den".

Skapa ett programmeringsspråk Steg 6
Skapa ett programmeringsspråk Steg 6

Steg 6. Experimentera med syntaxidéer (språkets text) för exemplen ovan

Var noga med att behålla ditt språk i den kontextfria språkkategorin eller något inuti det. Din parsergenerator och du kommer att uppskatta det senare

Skapa ett programmeringsspråk Steg 7
Skapa ett programmeringsspråk Steg 7

Steg 7. Skriv ut en formell grammatik för syntaxen

Skapa ett programmeringsspråk Steg 8
Skapa ett programmeringsspråk Steg 8

Steg 8. Bestäm om språket ska tolkas eller sammanställas

Vilket betyder att i den tolkade världen kommer din användare vanligtvis att redigera ditt program i en redigerare och köra det direkt på tolken; medan i den sammanställda världen kommer din användare att redigera ditt program, kompilera det, spara den resulterande körbara någonstans och köra det.

Skapa ett programmeringsspråk Steg 9
Skapa ett programmeringsspråk Steg 9

Steg 9. Skriv front -end -skannern och parsern eller hitta ett verktyg som hjälper dig med detta

Tänk också på hur din kompilator/tolk varnar din användare om felaktiga program och syntaxfel

Skapa ett programmeringsspråk Steg 10
Skapa ett programmeringsspråk Steg 10

Steg 10. Använd parserinformationen för att skriva objektkoden eller en mellanliggande representation

Låt parsern skapa en AST, skapa sedan din objektkod från AST med hjälp av tre adresskoder eller storebror SSA, skapa sedan en symboltabell för att definiera dina funktioner, globala variabler etc.

Beroende på ditt språk kanske du också vill skapa virtuella pekartabeller eller informationstabeller för dina klasser (för att stödja reflektion eller RTTI)

Skapa ett programmeringsspråk Steg 11
Skapa ett programmeringsspråk Steg 11

Steg 11. Skriv köraren eller kodgeneratorn som kommer att binda ihop allt

Skapa ett programmeringsspråk Steg 12
Skapa ett programmeringsspråk Steg 12

Steg 12. Skriv många testprogram för att testa språket

Du vill skapa program som betonar bördorna i din formella grammatik för att se att din kompilator accepterar allt som finns i din definition och avvisar allt som ligger utanför den

Skapa ett programmeringsspråk Steg 13
Skapa ett programmeringsspråk Steg 13

Steg 13. Fundera över hur användaren kommer att felsöka sina egna program

Skapa ett programmeringsspråk Steg 14
Skapa ett programmeringsspråk Steg 14

Steg 14. Om ditt språk använder ett standardbibliotek vill du skriva det

Tillsammans med en skräpsamlare eller andra körtidsfunktioner om du behöver det.

Närmare bestämt, om du skriver en kompilator behöver du koden som operativsystemet kommer att köra för att börja köra användarkoden (till exempel allokera alla globala variabler)

Skapa ett programmeringsspråk Steg 15
Skapa ett programmeringsspråk Steg 15

Steg 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örtidsfunktioner och/eller standardbibliotek

Video - Genom att använda denna tjänst kan viss information delas med YouTube

Tips

  • Börja med att designa ditt språk och skriv inte någon kod förrän du är nöjd och har svarat på alla (eller de flesta) frågor eller problem relaterade till 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 nytt som 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 krävs mycket övning också.
  • Förbered dig på att lägga lite tid på språkdesign, eftersom du inte kommer att ha möjlighet att ändra språk när du har skrivit kompilatorn och förbi designpunkten.
  • Försök inte att basera dina funktioner i en förening av flera språk, som att säga att ditt språk kommer att vara en förening 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 lyckas, eller så skulle alla programmera PL/1 istället för något baserat på C.

Rekommenderad: