Hoe een programmeertaal te maken

Veel mensen hebben moeilijkheden of frustraties met de programmeertalen die ze elke dag gebruiken. Sommigen willen dat dingen abstracter worden afgehandeld, terwijl anderen niet van implementatiefuncties die ze wensen, `standaard`. Of u nu een IT-professional of gewoon een hobbyist bent, vele malen kunt u merken dat u een nieuwe programmeertaal wilt maken.

Stappen

  1. Titel afbeelding Maak een programmeertaal Stap 1
1. Vertrouwd raken met de technologie. U kunt geen programmeertaal maken als u niet weet hoe u een computer kunt gebruiken.
  • Titel afbeelding Maak een programmeertaal Stap 2
    2. Vertrouwd raken met de terminologie. Compiler-schrijvers gebruiken vaak onbekende terminologie. Lees op compilers voordat u doorgaat. Zorg ervoor dat u alles weet wat u moet weten.
  • Titel afbeelding Maak een programmeertaal Stap 3
    3. Bepaal welk probleem uw taal is oplossen. Is het aan het aanpakken van een domeinspecifiek probleem, of is het een algemene taal?
  • Titel afbeelding Maak een programmeertaal Stap 4
    4. Denk aan de semantiek van uw taal en de concepten ervan.
  • Ga je direct aanwijzer toegang geven of niet?
  • Wat zijn de gegevenstypen van uw taal?
  • Is het een statische of dynamische taal?
  • Wat is je geheugenmodel? Ga je een garbage verzamelaar of handmatig geheugenbeheer gebruiken? (Als u een garbage-verzamelaar gebruikt, bereid u dan voor om er een te schrijven of een bestaande op uw taal aan te passen.)
  • Hoe gaat het omgaan met concurrency? Ga je een eenvoudig draad- / vergrendelingsmodel of iets complexer gebruiken zoals Linda of het acteurmodel? (Aangezien tegenwoordig computers meerdere kernen hebben.)
  • Zijn er primitieve functies ingebed in de taal of komt alles uit een bibliotheek?
  • Wat is het paradigma of paradigma`s van uw taal? Functioneel? Object-georiënteerd? Prototype (zoals jаvascript)? Aspect georiënteerd? Sjabloongericht? Of iets helemaal nieuw?
  • Hoe gaat uw taal naar de interface met bestaande bibliotheken en talen (voornamelijk C)? Dit punt is belangrijk als u een domeinspecifieke taal brengt.
  • Ten slotte zullen enkele van de antwoorden op deze vragen worden beantwoord door de tweede stap en helpen u bij het beantwoorden van de volgende stap.
  • Titel afbeelding Maak een programmeertaal Stap 5
    5. Denk aan sommige specifieke taken die iemand met uw taal zou willen uitvoeren. `Ze willen bijvoorbeeld een robot sturen om een ​​regel` of `te volgen die ze misschien relatief draagbare desktopprogramma`s erin willen creëren` of `ze kunnen web-applicaties ermee maken`.
  • Titel afbeelding Maak een programmeertaal Stap 6
    6. Experimenteer met syntaxisideeën (de tekst van de taal) voor de bovenstaande voorbeelden.
  • Wees voorzichtig om uw taal in de categorie contextvrije taal of iets erin te houden. Je parser-generator en je zult het later op prijs stellen.
  • Titel afbeelding Maak een programmeertaal Stap 7
    7. Schrijf een formele grammatica op voor de syntaxis.
  • Titel afbeelding Maak een programmeertaal Stap 8
    8. Bepaal of de taal wordt geïnterpreteerd of gecompileerd. Betekenis dat in de geïnterpreteerde wereld uw gebruiker uw programma in een editor doorgaans bewerkt en rechtstreeks op de tolk wordt uitgevoerd terwijl in de samengestelde wereld, uw gebruiker uw programma bewerkt, het compileren, bespaart het resulterende uitvoerbare uitvoerbaar.
  • Titel afbeelding Maak een programmeertaal Stap 9
    9. Schrijf de front-end scanner en parser of vind een tool waarmee je hiermee helpt.
  • Denk ook na over hoe uw compiler / tolk uw gebruiker zal waarschuwen voor foutieve programma`s en syntaxisfouten.
  • Titel afbeelding Maak een programmeertaal Stap 10
    10. Gebruik de PARDER-informatie om de objectcode of een tussenprogramma`s te schrijven. Laat de parser een AST maken en maak vervolgens uw objectcode van de AST met behulp van drie adrescode of zijn Big Brother SSA, maak vervolgens een symbooltabel om uw functies, globale variabelen, enzovoort te definiëren.
  • Ook, afhankelijk van uw taal, wilt u mogelijk ook virtuele aanwijzertabellen of informatietabellen voor uw lessen maken (om reflectie of rtti te ondersteunen).
  • Titel afbeelding Maak een programmeertaal Stap 11
    11. Schrijf de executor of code generator die alles bij elkaar zal binden.
  • Titel afbeelding Maak een programmeertaal Stap 12
    12. Schrijf veel testprogramma`s om de taal te testen.
  • U wilt programma`s maken die de lasten van uw formele grammatica benadrukken om te zien dat uw compiler alles accepteert dat in uw definitie is en alles afkeurt wat er buiten is.
  • Titel afbeelding Maak een programmeertaal Stap 13
    13. Overweeg hoe de gebruiker hun eigen programma`s zal debuggen.
  • Titel afbeelding Maak een programmeertaal Stap 14
    14. Als uw taal een standaardbibliotheek gebruikt, wilt u het schrijven. Samen met een vuilnisbak 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 wordt uitgevoerd om de gebruikerscode (bijvoorbeeld alle globale variabelen te laten uitvoeren).
  • Titel afbeelding Maak een programmeertaal Stap 15
    15. Publiceer uw taal, samen met de specificatie voor IT 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 sommige 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) van de vragen of problemen met betrekking tot uw ontwerp hebt beantwoord, omdat het gemakkelijker is om het ontwerp eerder dan later het ontwerp te wijzigen.
  • Ken uw doelplatform (besturingssysteem en bibliotheken) voor uw compiler / tolk, u gaat het tenslotte gebruiken en het manipuleren.
  • Waarschuwingen

    Denk dat als je echt een nieuwe taal nodig hebt en wat je taal heeft van nieuw dat 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 kost ook veel oefening.
  • Bereid je voor om wat tijd in het taalontwerp door te brengen, omdat je geen kans hebt om je taal te veranderen zodra je de compiler en het ontwerppunt hebt geschreven.
  • Probeer uw kenmerken niet in een unie van verschillende talen te baseren, zoals zeggen dat uw taal een Unie van taal X, Taal Y en Taal Z zal zijn. De geschiedenis heeft ons aangetoond dat de talen die op een zodanige manier zijn aangemaakt, nooit succes zullen vinden, of iedereen zou PL / 1 programmeren in plaats van iets op basis van C.
  • Dingen die je nodig hebt

    • Geduld.
    • Kennis over taalfuncties en taalontwerp (misschien wil je programmeertaal ontwerpconcepten van David A lezen. Watt).
    • Kennis over Compiler Theory (Aangezien u een compiler / tolk schrijft voor uw taal en uw implementatie is de referentie-implementatie).
    • Gebruikt voor uw taal (onthoud dat enkele van de meest gebruikte talen zoals C of Lisp zijn gemaakt om iets specifieks te doen zoals het maken van Unix of het doen van symbolische berekening).
    Deel in het sociale netwerk:
    Vergelijkbaar