



Is direkte wysertoegang moontlik of nie? Wat is die datatipes van jou taal? Is dit `n statiese of dinamiese taal? Wat is jou geheue model? Gebruik jy `n vullisverwyderaar of handmatige geheuebestuur? (As jy `n vullisverwyderaar gebruik, hou in gedagte dat jy een sal moet skryf of `n bestaande een by jou programmeertaal moet aanpas.) Hoe gaan jy sameloop hanteer? Gebruik jy `n eenvoudige inryg-/sluitmodel of iets meer kompleks soos Linda of die `akteur`-model? (Omdat rekenaars vandag veelvuldige verwerkers het.) Is daar eenvoudige funksies in die taal ingebou of is alles uit `n biblioteek? Wat is die paradigma of wat is die paradigmas van jou programmeertaal? Funksioneel? Objekgeoriënteerde? Prototipe (soos JavaScript)? Aspek-georiënteerd? Sjabloon-georiënteerd? Of iets heeltemal nuuts? Hoe kommunikeer jou taal met bestaande biblioteke en tale (hoofsaaklik C)? Hierdie punt is belangrik as jy `n domeinspesifieke taal ontwikkel. Op die ou end sal sommige van hierdie vrae in die tweede stap beantwoord word en jy moet die volgende stap beantwoord.










Die ontwikkeling van 'n programmeertaal
Inhoud
Baie mense het probleme of frustrasies met die programmeertale wat hulle elke dag gebruik. Sommige hou van dinge wat meer abstrak hanteer word, terwyl ander dit haat om kenmerke te implementeer wat `standaard` moet wees. Of jy nou `n IT-professionele of net `n stokperdjie is, baie keer wens jy dat jy `n nuwe programmeertaal kon skep.
Trappe

1. Raak vertroud met die tegnologie. Jy kan nie `n programmeertaal ontwikkel as jy nie weet hoe om `n rekenaar te gebruik nie.

2. Maak jouself vertroud met die terminologie. Samestellerskrywers gebruik dikwels onbekende terminologie. Lees meer oor samestellers voordat u verder gaan. Maak seker jy weet alles wat jy moet weet.

3. Besluit watter probleem jou taal moet oplos. Is die probleem dat die taal domeinspesifiek gaan aanpak, of moet die taal geskik wees vir alle soorte toepassings?

4. Dink na oor die semantiek van jou taal en sy konsepte.

5. Dink aan spesifieke take wat iemand graag met jou taal wil kan uitvoer. Byvoorbeeld: om `n robot `n sekere baan te laat volg, of om relatief draagbare rekenaarprogramme of webtoepassings te ontwikkel.

6. Eksperimenteer met sintaksis idees (die teks van die taal) vir die voorbeelde hierbo.
Maak seker dat jy jou taal binne die konteks-onafhanklike taalkategorie hou, of iets daarbinne. Jou ontledergenerator en jy sal op die ou end daarvoor dankbaar wees.

7. Skryf `n formele grammatika vir die sintaksis.

8. Besluit of jy die taal gaan interpreteer of saamstel. Dit beteken dat met `n geïnterpreteerde program, die gebruiker `n program in `n redigeerder sal redigeer, en dit dan direk vanaf die tolk sal laat loop; sou die program saamgestel word, sal die gebruiker die program in `n redigeerder skryf, dit saamstel, die resulterende uitvoerbare êrens stoor en dit dan laat loop.

9. Skryf die voorkantskandeerder en ontleder of soek `n hulpmiddel wat jou hiermee kan help.
Dink ook aan hoe jy samesteller/tolkgebruikers sal waarsku oor programfoute en sintaksisfoute.

10. Gebruik die ontlederdata om die objekkode te skryf, of vir `n voorlopige voorstelling. Laat die ontleder AST skep en jou objekkode van die AST skep deur `drie adreskode` of sy groter broer SSA te gebruik, skep dan `n simbooltabel om jou funksies, globale veranderlikes, ens.
Afhangende van jou taal, wil jy dalk ook virtuele wysertabelle of datatabelle vir jou klasse skep (om refleksie of RTTI te ondersteun).

11. Skryf die eksekuteur of kodegenerator wat alles bymekaar sit.

12. Skryf baie toetsprogramme om jou taal te toets.
Skryf veral programme wat die formele grammatika van jou taal uitdaag om seker te maak jou samesteller aanvaar alles wat binne jou definisie val, en verwerp alles wat daarbuite val.

13. Oorweeg hoe die gebruiker hul eie programme sal ontfout.

14. As jou taal `n standaardbiblioteek gebruik, sal jy dit moet skryf. Saam met `n vullisverwyderaar of ander runtime funksies, as jy dit nodig het.
Veral as jy `n samesteller skryf, het jy die kode nodig wat die bedryfstelsel bestuur om die gebruikerkode te laat loop (bv.: toewysing van alle globale veranderlikes).

15. Publiseer jou taal, saam met sy spesifikasie en `n paar voorbeelde van wat jy daarmee kan doen.
Moenie die dokumentasie vergeet vir integrasie met bestaande biblioteke, tale en hoe om die looptydfunksies en/of die verstekbiblioteek te gebruik nie.
Wenke
- Begin om jou taal te ontwerp sonder om enige kode te skryf, totdat jy tevrede is en al (of meeste) van die vrae of probleme wat met jou ontwerp geassosieer word beantwoord het, aangesien dit makliker is om die ontwerp vroegtydig te verander, dan op `n later stadium.
- Ken jou teikenplatform (OS en biblioteke) vir jou samesteller/tolk, aangesien jy dit gaan gebruik en manipuleer.
Waarskuwings
- Vra jouself af of jy regtig `n nuwe taal nodig het, en wat jou taal nuut het wat ander tale nie het nie (dit kan `n kombinasie van kenmerke of `n enkele kenmerk wees).
- Jy sal tyd aan taalontwerp moet spandeer, aangesien jy nie die opsie sal hê om jou taal te verander nadat jy die samesteller geskryf het en verby die ontwerpstadium gekom het nie.
- Dit is moeilik om `n programmeertaal te skryf as jy nie weet wat jy doen nie. Dit verg ook baie oefening.
- Moenie probeer om funksies van verskillende tale te meng nie, soos `n taal as `n kombinasie van taal X, Y en Z. Die geskiedenis vertel ons dat tale wat op hierdie manier gemaak word, nooit slaag nie, anders sou almal in PL/1 programmeer in plaas van iets wat op C gebaseer is.
Benodigdhede
- Geduld.
- Kennis van taalfunksies en taalontwerp (lees moontlik programmeertaalontwerpkonsepte deur David A. watt).
- Kennis oor samestellerteorie (omdat jy `n samesteller/tolk vir jou taal gaan skryf en jou implementering die verwysingsimplementering sal wees).
- Nuttige gebruike vir jou taal (weet dat sommige van die mees gebruikte tale, soos C of Lisp, geskep is om iets spesifiek te doen, soos om Unix te skep of simboliese berekeninge te doen).
Artikels oor die onderwerp "Die ontwikkeling van 'n programmeertaal"
Оцените, пожалуйста статью
Gewilde