Een programmeertaal maken: 15 stappen (met afbeeldingen)

Inhoudsopgave:

Een programmeertaal maken: 15 stappen (met afbeeldingen)
Een programmeertaal maken: 15 stappen (met afbeeldingen)

Video: Een programmeertaal maken: 15 stappen (met afbeeldingen)

Video: Een programmeertaal maken: 15 stappen (met afbeeldingen)
Video: Clean your CPU heatsink and fans or fry your PC! #technology #tech #computer #gaming #shorts 2024, Mei
Anonim

Veel mensen hebben problemen of frustraties met de programmeertalen die ze dagelijks gebruiken. Sommigen willen dat dingen abstracter worden afgehandeld, terwijl anderen er niet van houden om functies te implementeren die ze 'standaard' zouden willen hebben. Of u nu een IT-professional bent of gewoon een hobbyist, u zult vaak merken dat u een nieuwe programmeertaal wilt maken.

Stappen

Maak een programmeertaal Stap 1
Maak een programmeertaal Stap 1

Stap 1. Raak vertrouwd met de technologie

U kunt geen programmeertaal maken als u niet weet hoe u een computer moet gebruiken.

Maak een programmeertaal Stap 2
Maak een programmeertaal Stap 2

Stap 2. Raak vertrouwd met de terminologie

Compilerschrijvers gebruiken vaak onbekende terminologie. Lees meer over compilers voordat u doorgaat. Zorg ervoor dat u alles weet wat u moet weten.

Maak een programmeertaal Stap 3
Maak een programmeertaal Stap 3

Stap 3. Bepaal welk probleem uw taal oplost

Pakt het een domeinspecifiek probleem aan, of is het een taal voor algemene doeleinden?

Maak een programmeertaal Stap 4
Maak een programmeertaal Stap 4

Stap 4. Denk na over de semantiek van je taal en de concepten ervan

  • Ga je directe aanwijzertoegang toestaan of niet?
  • Wat zijn de gegevenstypen van uw taal?
  • Is het een statische of dynamische taal?
  • Wat is jouw geheugenmodel? Ga je een garbage collector of handmatig geheugenbeheer gebruiken? (Als u een afvalophaler gebruikt, bereid u dan voor om er een te schrijven of pas een bestaande aan aan uw taal.)
  • Hoe gaan we om met gelijktijdigheid? Ga je een eenvoudig threading/locking-model gebruiken of iets complexers zoals Linda of het acteursmodel? (Aangezien computers tegenwoordig meerdere kernen hebben.)
  • Zijn er primitieve functies ingebed in de taal of komt alles uit een bibliotheek?
  • Wat is het paradigma of de paradigma's van uw taal? Functioneel? Objectgericht? Prototype (zoals JavaScript)? Aspectgericht? Sjabloon gericht? Of iets geheel nieuws?
  • Hoe gaat uw taal samenwerken met bestaande bibliotheken en talen (voornamelijk C)? Dit punt is belangrijk als u een domeinspecifieke taal bouwt.
  • Ten slotte zullen sommige antwoorden op deze vragen in de tweede stap worden beantwoord en zullen u helpen bij het beantwoorden van de volgende stap.
Maak een programmeertaal Stap 5
Maak een programmeertaal Stap 5

Stap 5. Bedenk een aantal specifieke taken die iemand met jouw taal zou willen kunnen uitvoeren

Bijvoorbeeld 'misschien willen ze een robot een lijn laten volgen' of 'misschien willen ze er relatief draagbare desktopprogramma's in maken' of 'misschien willen ze er webapplicaties mee maken'.

Maak een programmeertaal Stap 6
Maak een programmeertaal Stap 6

Stap 6. Experimenteer met syntaxisideeën (de tekst van de taal) voor de bovenstaande voorbeelden

Zorg ervoor dat u uw taal in de contextvrije taalcategorie of iets daarbinnen houdt. Uw parsergenerator en u zult het later waarderen

Maak een programmeertaal Stap 7
Maak een programmeertaal Stap 7

Stap 7. Schrijf een formele grammatica voor de syntaxis

Maak een programmeertaal Stap 8
Maak een programmeertaal Stap 8

Stap 8. Bepaal of de taal wordt geïnterpreteerd of gecompileerd

Dit betekent dat in de geïnterpreteerde wereld uw gebruiker uw programma doorgaans in een editor zal bewerken en direct op de interpreter zal uitvoeren; in de gecompileerde wereld zal uw gebruiker uw programma bewerken, compileren, het resulterende uitvoerbare bestand ergens opslaan en uitvoeren.

Maak een programmeertaal Stap 9
Maak een programmeertaal Stap 9

Stap 9. Schrijf de front-end scanner en parser of zoek een tool die je hierbij helpt

Denk ook na over hoe uw compiler/interpreter uw gebruiker zal waarschuwen voor foutieve programma's en syntaxisfouten

Maak een programmeertaal Stap 10
Maak een programmeertaal Stap 10

Stap 10. Gebruik de parserinformatie om de objectcode of een tussenweergave te schrijven

Laat de parser een AST maken, maak vervolgens uw objectcode van de AST met behulp van drie adrescodes of zijn grote broer SSA, en maak vervolgens een symbooltabel om uw functies, globale variabelen, enz. Te definiëren.

Afhankelijk van uw taal wilt u misschien ook virtuele aanwijstabellen of informatietabellen voor uw lessen maken (ter ondersteuning van reflectie of RTTI)

Maak een programmeertaal Stap 11
Maak een programmeertaal Stap 11

Stap 11. Schrijf de uitvoerder of codegenerator die alles samenbindt

Maak een programmeertaal Stap 12
Maak een programmeertaal Stap 12

Stap 12. Schrijf veel testprogramma's om de taal te testen

U wilt programma's maken die de lasten van uw formele grammatica benadrukken om ervoor te zorgen dat uw compiler alles accepteert wat binnen uw definitie valt en alles verwerpt wat daarbuiten valt

Maak een programmeertaal Stap 13
Maak een programmeertaal Stap 13

Stap 13. Bedenk hoe de gebruiker zijn eigen programma's zal debuggen

Maak een programmeertaal Stap 14
Maak een programmeertaal Stap 14

Stap 14. Als uw taal een standaardbibliotheek gebruikt, wilt u deze schrijven

Samen met een garbage collector of andere runtime-functies als je het nodig hebt.

In het bijzonder, als u een compiler schrijft, hebt u de code nodig die het besturingssysteem zal uitvoeren om de gebruikerscode uit te voeren (bijvoorbeeld door alle globale variabelen toe te wijzen)

Maak een programmeertaal Stap 15
Maak een programmeertaal Stap 15

Stap 15. Publiceer uw taal, samen met de specificatie ervoor en enkele voorbeelden van wat u erin kunt doen

Vergeet niet te documenteren hoe u kunt integreren met bestaande bibliotheken, talen en hoe u de runtime-functies en/of standaardbibliotheek kunt gebruiken

Video - Door deze service te gebruiken, kan bepaalde informatie worden gedeeld met YouTube

Tips

  • Begin met het ontwerpen van uw taal en schrijf geen code totdat u tevreden bent en alle (of de meeste) vragen of problemen met betrekking tot uw ontwerp hebt beantwoord, aangezien het gemakkelijker is om het ontwerp eerder dan later te wijzigen.
  • Ken uw doelplatform (besturingssysteem en bibliotheken) voor uw compiler/interpreter, u gaat het immers gebruiken en manipuleren.

Waarschuwingen

  • Bedenk of je echt een nieuwe taal nodig hebt, en wat je taal heeft of wat andere talen niet hebben (het kan een combinatie van functies of een enkele functie zijn).
  • Het schrijven van talen is moeilijk als je niet weet wat je doet. Het vergt ook veel oefening.
  • Bereid je voor om wat tijd te besteden aan taalontwerp, aangezien je geen kans hebt om je taal te veranderen als je eenmaal de compiler hebt geschreven en voorbij het ontwerppunt bent.
  • Probeer uw kenmerken niet te baseren op een unie van verschillende talen, zoals zeggen dat uw taal een unie zal zijn van taal X, taal Y en taal Z. De geschiedenis heeft ons geleerd dat talen die op zo'n manier zijn gemaakt, nooit succes zullen hebben, of iedereen zou PL/1 programmeren in plaats van iets op basis van C.

Aanbevolen: