Een programmeertaal ontwikkelen

Pdf downloadenPdf downloaden

Veel mensen hebben problemen of frustraties met de programmeertalen die ze elke dag gebruiken. Sommige willen dat dingen meer abstract worden afgehandeld, terwijl anderen een hekel hebben aan de implementatie van functies die 'standaard' zouden moeten zijn. Of je nu een IT-professional bent of gewoon een hobbyist, vaak zou je wel wensen dat je een nieuwe programmeertaal zou kunnen maken.

  1. How.com.vn Nederlands: Step 1 Raak vertrouwd met de technologie.
    Je kunt geen programmeertaal ontwikkelen als je niet weet hoe je een computer moet gebruiken.
  2. How.com.vn Nederlands: Step 2 Raak vertrouwd met de terminologie.
    Schrijvers van compilers gebruiken vaak onbekende terminologie. Lees meer over compilers voordat je verdergaat. Zorg ervoor dat je alles weet wat je moet weten.
  3. How.com.vn Nederlands: Step 3 Beslis welk probleem je taal moet gaan oplossen.
    Is het probleem dat de taal gaat aanpakken domein-specifiek, of dient de taal geschikt te zijn voor allerlei toepassingen?
  4. How.com.vn Nederlands: Step 4 Denk na over de semantiek van je taal en de concepten ervan.
    • Is direct pointer-toegang mogelijk of niet?
    • Wat zijn de gegevenstypen van je taal?
    • Is het een statische of dynamische taal?
    • Wat is je geheugenmodel? Gebruik je een garbage-collector of handmatig geheugenbeheer? (Als je een garbage-collector gebruikt, houd er dan rekening mee dat je er een zult moeten schrijven of een bestaande aan moet passen aan je programmeertaal.)
    • Hoe ga je concurrency afhandelen? Gebruik je een eenvoudig threading/locking-model of iets dat meer complex is, zoals Linda of het 'actor'-model? (Omdat computers tegenwoordige meerdere processoren hebben.)
    • Zijn er eenvoudige functies in de taal ingebouwd of komt alles uit een bibliotheek?
    • Wat is het paradigma of wat zijn de paradigma's van je programmeertaal? Functioneel? Object-georiënteerd? Prototype (zoals JavaScript)? Aspect-georiënteerd? Sjabloon-georiënteerd? Of iets volledig nieuws?
    • Hoe communiceert je taal met bestaande bibliotheken en talen (voornamelijk C)? Dit punt is belangrijk als je een domein-specifieke taal ontwikkelt.
    • Uiteindelijk zullen sommige van deze vragen worden beantwoord in de tweede stap en je je om de volgende stap te beantwoorden.
  5. How.com.vn Nederlands: Step 5 Denk aan specifieke taken die iemand met je taal zou willen kunnen uitvoeren.
    Bijvoorbeeld: een robot een bepaald traject laten volgen, of het ontwikkelen van relatief portable desktopprogramma's, of webapplicaties.
  6. How.com.vn Nederlands: Step 6 Experimenteer met syntax-ideeën (de tekst van de taal) voor de bovenstaande voorbeelden.
    • Zorg dat je je taal binnen de context-onafhankelijke taalcategorie houdt, of iets wat daarbinnen valt. Je parser-generator en jij zullen je er uiteindelijk dankbaar voor zijn.
  7. How.com.vn Nederlands: Step 7 Schrijf een formele grammatica voor de syntax.
  8. How.com.vn Nederlands: Step 8 Beslis of de taal wordt geïnterpreteerd of gecompileerd.
    Dit houdt in dat bij een geïnterpreteerd programma de gebruiker een programma zal bewerken in een editor, om dit vervolgens direct vanuit de interpreter te draaien; dient het programma gecompileerd te worden, dan zal de gebruiker het programma schrijven in een editor, het compileren, de resulterende executable ergens opslaan en het daarna draaien.
  9. How.com.vn Nederlands: Step 9 Schrijf de front-end scanner en parser of zoek een tool die je hierbij kan helpen.
    • Denk er ook over na hoe je compiler/interpreter gebruikers gaat waarschuwen over fouten in programma's en syntax-fouten.
  10. How.com.vn Nederlands: Step 10 Gebruik de parsergegevens om de objectcode te schrijven, of voor een voorlopige weergave.
    Laat de parser AST maken en creëer je objectcode vanuit de AST met behulp van 'three address code' of diens grotere broer SSA, en maak vervolgens een symbooltabel voor het definiëren van je functies, globale variabelen, etc.
    • Afhankelijk van je taal wil je wellicht ook virtual pointer-tabellen maken of gegevenstabellen voor je klassen (ter ondersteuning van reflectie of RTTI).
  11. How.com.vn Nederlands: Step 11 Schrijf de executor of codegenerator die alles samenvoegt.
  12. How.com.vn Nederlands: Step 12 Schrijf veel testprogramma's om je taal te testen.
    • Schrijf vooral programma's die de formele grammatica van je taal uitdagen, om er zeker van te zijn dat je compiler alles accepteert wat binnen je definitie valt, en alles afwijst dat erbuiten valt.
  13. How.com.vn Nederlands: Step 13 Overweeg hoe de gebruiker zijn eigen programma's gaat debuggen.
  14. How.com.vn Nederlands: Step 14 Als je taal gebruikmaakt van een standaardbibliotheek, dan zal je die moeten schrijven.
    Samen met een garbage-collector of andere runtime-functies, als je die nodig hebt.
    • Vooral als je een compiler schrijft, heb je de code nodig die het besturingssysteem uitvoert, om de gebruikerscode te kunnen draaien (bijv.: het toewijzen van alle globale variabelen).
  15. How.com.vn Nederlands: Step 15 Publiceer  je taal, samen met de specificatie ervan en een paar voorbeelden van wat je ermee kunt doen.
    • Vergeet de documentatie niet voor het integreren met bestaande bibliotheken, talen en hoe de runtime-functies en/of de standaardbibliotheek gebruikt kunnen worden.
    Advertentie

Tips

  • Beginnen met het ontwerpen van je taal zonder het schrijven van code, totdat je tevreden bent en alle (of de meeste) van de vragen of problemen heb beantwoord in verband met je ontwerp, want het is gemakkelijker om het ontwerp in een vroeg stadium te veranderen, dan in een later stadium.
  • Ken je doelplatform (besturingssysteem en bibliotheken) voor je compiler/interpreter, want die ga je gebruiken en manipuleren.
Advertentie

Waarschuwingen

  • Vraag je af of je echt behoefte hebt aan een nieuwe taal, en wat jouw taal dan wel nieuw heeft dat andere talen niet hebben (het kan een combinatie zijn van functies of een enkele functie).
  • Je zult tijd moeten besteden aan taalontwerp, want je hebt niet de mogelijkheid om je taal te wijzigen nadat je de compiler heb geschreven en voorbij de ontwerpfase bent.
  • Het schrijven van een programmeertaal is moeilijk als je niet weet wat je doet. Het vergt ook veel oefening.
  • Probeer geen samenraapsel te maken van functies van verschillende talen, zoals een taal als combinatie van taal X, Y en Z. De geschiedenis leert ons dat talen die op een dergelijke wijze zijn gemaakt nooit een succes worden, want anders zou iedereen wel in PL/1 programmeren in plaats van iets op basis van C.
Advertentie

Benodigdheden

  • Geduld.
  • Kennis van taalfuncties en taalontwerp (Lees eventueel Programming Language Design Concepts van David A. Watt).
  • Kennis over compilertheorie (omdat je een compiler/interpreter voor je taal gaat schrijven en je implementatie de referentie-implementatie zal zijn).
  • Nuttige toepassingen voor je taal (weet dat enkele van de meest gebruikte talen, zoals C of Lisp, werden gemaakt om iets specifieks te doen, zoals het creëren van Unix of het doen van symbolische berekeningen).

Over dit artikel

How.com.vn Nederlands: Tyrone Showers
Bijdragen van:
Technoloog
Dit artikel is bijdragen van Tyrone Showers. Tyrone Showers is technoloog en mede-eigenaar van Taliferro Group, een IT-consultancybedrijf in Seattle, Washington. Hij heeft meer dan 35 jaar professionele ervaring en is gespecialiseerd in API-ontwerp, e-commerce, operationele efficiëntie en websiteontwikkeling. Tyrone heeft een bachelordiploma in informatica behaald aan het DeVry Institute of Technology. Dit artikel is 1.515 keer bekeken.
Deze pagina is 1.515 keer bekeken.

Was dit artikel nuttig?

⚠️ Disclaimer:

Content from Wiki How Nederlands language website. Text is available under the Creative Commons Attribution-Share Alike License; additional terms may apply.
Wiki How does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain, or use, reproduce, or republish the information contained herein.

Notices:
  • - A few of these subjects are frequently censored by educational, governmental, corporate, parental and other filtering schemes.
  • - Some articles may contain names, images, artworks or descriptions of events that some cultures restrict access to
  • - Please note: Wiki How does not give you opinion about the law, or advice about medical. If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.
  • - Readers should not judge the importance of topics based on their coverage on Wiki How, nor think a topic is important just because it is the subject of a Wiki article.

Advertentie