Udvikling af et programmeringssprog

Mange mennesker har problemer eller frustrationer med de programmeringssprog, de bruger hver dag. Nogle kan lide ting, der håndteres mere abstrakt, mens andre hader at implementere funktioner, der burde være `standard`. Uanset om du er en it-professionel eller bare en hobbyist, ønsker du mange gange, at du kunne oprette et nyt programmeringssprog.

Trin

Billede med titlen Opret et programmeringssprog Trin 1
1. Bliv fortrolig med teknologien. Du kan ikke udvikle et programmeringssprog, hvis du ikke ved, hvordan man bruger en computer.
Billede med titlen Opret et programmeringssprog Trin 2
2. Sæt dig ind i terminologien. Kompilerskribenter bruger ofte ukendt terminologi. Læs mere om compilere, før du fortsætter. Sørg for, at du ved alt, hvad du behøver at vide.
Billede med titlen Opret et programmeringssprog Trin 3
3. Bestem, hvilket problem dit sprog skal løse. Er problemet, at sproget skal tackle domænespecifikt, eller skal sproget være egnet til alle slags applikationer?
Billede med titlen Opret et programmeringssprog Trin 4
4. Tænk på semantikken i dit sprog og dets begreber.
  • Er direkte pointeradgang mulig eller ej?
  • Hvad er datatyperne på dit sprog?
  • Er det et statisk eller dynamisk sprog?
  • Hvad er din hukommelsesmodel? Bruger du en skraldeopsamler eller manuel hukommelseshåndtering? (Hvis du bruger en skraldeopsamler, skal du huske, at du bliver nødt til at skrive en eller tilpasse en eksisterende til dit programmeringssprog.)
  • Hvordan vil du håndtere samtidighed? Bruger du en simpel gevind-/låsemodel eller noget mere komplekst som Linda eller `skuespiller`-modellen? (Fordi computere i dag har flere processorer.)
  • Er der simple funktioner indbygget i sproget eller er alt fra et bibliotek?
  • Hvad er paradigmet eller hvad er paradigmerne for dit programmeringssprog? Funktionel? Objektorienteret? Prototype (som JavaScript)? Aspekt-orienteret? Skabelon-orienteret? Eller noget helt nyt?
  • Hvordan kommunikerer dit sprog med eksisterende biblioteker og sprog (hovedsageligt C)? Dette punkt er vigtigt, hvis du udvikler et domænespecifikt sprog.
  • I sidste ende vil nogle af disse spørgsmål blive besvaret i det andet trin, og du skal besvare det næste trin.
    Billede med titlen Opret et programmeringssprog Trin 5
  • 5. Tænk på specifikke opgaver, nogen gerne vil kunne udføre med dit sprog. For eksempel: at lade en robot følge en bestemt bane eller udvikle relativt bærbare desktopprogrammer eller webapplikationer.
    Billede med titlen Opret et programmeringssprog Trin 6
    6. Eksperimenter med syntaksideer (sprogets tekst) til eksemplerne ovenfor.
    Sørg for at holde dit sprog inden for den kontekstuafhængige sprogkategori, eller noget indenfor den. Din parser-generator og du vil være taknemmelige for det i sidste ende.
    Billede med titlen Opret et programmeringssprog Trin 7
    7. Skriv en formel grammatik til syntaksen.
    Billede med titlen Opret et programmeringssprog Trin 8
    8. Beslut om du vil fortolke eller kompilere sproget. Det betyder, at med et fortolket program, vil brugeren redigere et program i en editor, og derefter køre det direkte fra fortolkeren; skal programmet kompileres, vil brugeren skrive programmet i en editor, kompilere det, gemme den resulterende eksekverbare et sted og derefter køre det.
    Billede med titlen Opret et programmeringssprog Trin 9
    9. Skriv front-end scanneren og parseren eller find et værktøj, der kan hjælpe dig med dette.
    Tænk også på, hvordan du vil advare compiler/tolk-brugere om programfejl og syntaksfejl.
    Billede med titlen Opret et programmeringssprog Trin 10
    10. Brug parserdataene til at skrive objektkoden eller til en foreløbig repræsentation. Lad parseren oprette AST og opret din objektkode fra AST`en ved hjælp af `tre adressekode` eller dens større bror SSA, opret derefter en symboltabel for at definere dine funktioner, globale variabler osv.
    Afhængigt af dit sprog vil du måske også oprette virtuelle pointer-tabeller eller datatabeller til dine klasser (for at understøtte refleksion eller RTTI).
    Billede med titlen Opret et programmeringssprog Trin 11
    11. Skriv eksekveren eller kodegeneratoren, der sætter alt sammen.
    Billede med titlen Opret et programmeringssprog Trin 12
    12. Skriv mange testprogrammer for at teste dit sprog.
    Skriv især programmer, der udfordrer dit sprogs formelle grammatik for at sikre, at din compiler accepterer alt, der falder inden for din definition, og afviser alt, der falder uden for det.
    Billede med titlen Opret et programmeringssprog Trin 13
    13. Overvej, hvordan brugeren vil fejlfinde deres egne programmer.
    Billede med titlen Opret et programmeringssprog Trin 14
    14. Hvis dit sprog bruger et standardbibliotek, bliver du nødt til at skrive det. Sammen med en skraldeopsamler eller andre runtime-funktioner, hvis du har brug for dem.
    Især hvis du skriver en compiler, skal du bruge koden, der kører operativsystemet for at køre brugerkoden (f.eks.: tildeling af alle globale variabler).
    Billede med titlen Opret et programmeringssprog Trin 15
    15. Udgiv dit sprog sammen med dets specifikation og nogle eksempler på, hvad du kan gøre med det.
    Glem ikke dokumentationen for integration med eksisterende biblioteker, sprog og hvordan man bruger runtime-funktionerne og/eller standardbiblioteket.

    Tips

    • Begynd at designe dit sprog uden at skrive nogen kode, indtil du er tilfreds og har besvaret alle (eller de fleste) spørgsmål eller problemer forbundet med dit design, da det er nemmere at ændre designet tidligt, så på et senere tidspunkt.
    • Kend din målplatform (OS og biblioteker) for din compiler/tolk, da du vil bruge og manipulere dem.

    Advarsler

    • Spørg dig selv, om du virkelig har brug for et nyt sprog, og hvad dit sprog har nyt, som andre sprog ikke har (det kan være en kombination af funktioner eller en enkelt funktion).
    • Du bliver nødt til at bruge tid på sprogdesign, da du ikke vil have mulighed for at ændre dit sprog, efter du har skrevet compileren og kommer forbi designstadiet.
    • At skrive et programmeringssprog er svært, hvis du ikke ved, hvad du laver. Det kræver også meget øvelse.
    • Forsøg ikke at blande funktioner fra forskellige sprog, såsom et sprog som en kombination af sprog X, Y og Z. Historien fortæller os, at sprog lavet på denne måde aldrig lykkes, ellers ville alle programmere i PL/1 i stedet for noget baseret på C.

    Fornødenheder

    • Tålmodighed.
    • Kendskab til sprogfunktioner og sprogdesign (læs evt. Programmeringssprogdesignkoncepter af David A. watt).
    • Viden om compilerteori (fordi du skal skrive en compiler/tolk til dit sprog, og din implementering vil være referenceimplementeringen).
    • Nyttige anvendelser af dit sprog (vid, at nogle af de mest almindeligt anvendte sprog, såsom C eller Lisp, blev skabt til at gøre noget specifikt, såsom at skabe Unix eller lave symbolske beregninger).

    Оцените, пожалуйста статью