Come creare un linguaggio di programmazione: 15 passaggi (con immagini)

Sommario:

Come creare un linguaggio di programmazione: 15 passaggi (con immagini)
Come creare un linguaggio di programmazione: 15 passaggi (con immagini)

Video: Come creare un linguaggio di programmazione: 15 passaggi (con immagini)

Video: Come creare un linguaggio di programmazione: 15 passaggi (con immagini)
Video: Tutorial: Pulizia (Griglia Dissipatore + Ventola) Notebook 1/2 2024, Aprile
Anonim

Molte persone hanno difficoltà o frustrazioni con i linguaggi di programmazione che usano ogni giorno. Alcuni vogliono che le cose vengano gestite in modo più astratto, mentre altri non amano implementare funzionalità che vorrebbero essere "standard". Che tu sia un professionista IT o solo un hobbista, molte volte potresti trovarti a voler creare un nuovo linguaggio di programmazione.

Passi

Creare un linguaggio di programmazione Passaggio 1
Creare un linguaggio di programmazione Passaggio 1

Passaggio 1. Acquisire familiarità con la tecnologia

Non puoi creare un linguaggio di programmazione se non sai usare un computer.

Creare un linguaggio di programmazione Passaggio 2
Creare un linguaggio di programmazione Passaggio 2

Passaggio 2. Acquisire familiarità con la terminologia

Gli scrittori di compilatori usano spesso una terminologia sconosciuta. Leggere sui compilatori prima di procedere. Assicurati di sapere tutto ciò che devi sapere.

Creare un linguaggio di programmazione Passaggio 3
Creare un linguaggio di programmazione Passaggio 3

Passaggio 3. Decidi quale problema risolve la tua lingua

Sta affrontando un problema specifico del dominio o è un linguaggio generico?

Creare un linguaggio di programmazione Passaggio 4
Creare un linguaggio di programmazione Passaggio 4

Passaggio 4. Pensa alla semantica della tua lingua e ai suoi concetti

  • Consentire l'accesso diretto al puntatore o no?
  • Quali sono i tipi di dati della tua lingua?
  • È un linguaggio statico o dinamico?
  • Qual è il tuo modello di memoria? Utilizzerai un garbage collector o la gestione manuale della memoria? (Se usi un netturbino, preparati a scriverne uno o ad adattarne uno esistente alla tua lingua.)
  • Come gestirai la concorrenza? Utilizzerai un semplice modello di threading/locking o qualcosa di più complesso come Linda o il modello dell'attore? (Dal momento che al giorno d'oggi i computer hanno più core.)
  • Ci sono funzioni primitive incorporate nel linguaggio o tutto proverrà da una libreria?
  • Qual è il paradigma oi paradigmi della tua lingua? Funzionale? Orientato agli oggetti? Prototipo (come JavaScript)? Orientato all'aspetto? Orientato al modello? O qualcosa di completamente nuovo?
  • Come si interfaccia la tua lingua con le librerie e i linguaggi esistenti (principalmente C)? Questo punto è importante se stai creando un linguaggio specifico del dominio.
  • Infine, alcune delle risposte a queste domande riceveranno risposta nel secondo passaggio e ti aiuteranno a rispondere al passaggio successivo.
Creare un linguaggio di programmazione Passaggio 5
Creare un linguaggio di programmazione Passaggio 5

Passaggio 5. Pensa ad alcune attività specifiche che qualcuno vorrebbe essere in grado di svolgere con la tua lingua

Ad esempio, "potrebbero voler indicare a un robot di seguire una linea" o "potrebbero voler creare programmi desktop relativamente portatili al suo interno" o "potrebbero voler creare applicazioni Web con esso".

Creare un linguaggio di programmazione Passaggio 6
Creare un linguaggio di programmazione Passaggio 6

Passaggio 6. Sperimenta con le idee sintattiche (il testo della lingua) per gli esempi precedenti

Fai attenzione a mantenere la tua lingua nella categoria delle lingue senza contesto o qualcosa al suo interno. Il tuo generatore di parser e lo apprezzerai in seguito

Creare un linguaggio di programmazione Passaggio 7
Creare un linguaggio di programmazione Passaggio 7

Passaggio 7. Scrivi una grammatica formale per la sintassi

Creare un linguaggio di programmazione Passaggio 8
Creare un linguaggio di programmazione Passaggio 8

Passaggio 8. Decidere se la lingua verrà interpretata o compilata

Ciò significa che nel mondo interpretato il tuo utente in genere modificherà il tuo programma in un editor e lo eseguirà direttamente sull'interprete; mentre nel mondo compilato, il tuo utente modificherà il tuo programma, lo compilerà, salverà l'eseguibile risultante da qualche parte e lo eseguirà.

Creare un linguaggio di programmazione Passaggio 9
Creare un linguaggio di programmazione Passaggio 9

Passaggio 9. Scrivi lo scanner e il parser front-end o trova uno strumento che ti aiuti in questo

Inoltre, pensa a come il tuo compilatore/interprete avviserà l'utente di programmi errati ed errori di sintassi

Creare un linguaggio di programmazione Passaggio 10
Creare un linguaggio di programmazione Passaggio 10

Passaggio 10. Utilizzare le informazioni del parser per scrivere il codice oggetto o una rappresentazione intermedia

Chiedi al parser di creare un AST, quindi crea il tuo codice oggetto dall'AST utilizzando tre codici di indirizzo o il suo fratello maggiore SSA, quindi crea una tabella dei simboli per definire le tue funzioni, variabili globali, ecc.

Inoltre, a seconda della tua lingua, potresti anche voler creare tabelle puntatori virtuali o tabelle informative per le tue classi (per supportare la riflessione o RTTI)

Creare un linguaggio di programmazione Passaggio 11
Creare un linguaggio di programmazione Passaggio 11

Passaggio 11. Scrivere l'executor o il generatore di codice che legherà tutto insieme

Creare un linguaggio di programmazione Passaggio 12
Creare un linguaggio di programmazione Passaggio 12

Passaggio 12. Scrivi molti programmi di prova per testare la lingua

Vuoi creare programmi che sottolineino i fardelli della tua grammatica formale per vedere che il tuo compilatore accetta tutto ciò che è all'interno della tua definizione e rifiuta tutto ciò che è al di fuori di essa

Creare un linguaggio di programmazione Passaggio 13
Creare un linguaggio di programmazione Passaggio 13

Passaggio 13. Considera come l'utente eseguirà il debug dei propri programmi

Creare un linguaggio di programmazione Passaggio 14
Creare un linguaggio di programmazione Passaggio 14

Passaggio 14. Se la tua lingua utilizza una libreria standard, vorrai scriverla

Insieme a un garbage collector o ad altre funzionalità di runtime se ne hai bisogno.

In particolare, se si scrive un compilatore, sarà necessario il codice che il sistema operativo eseguirà per avviare l'esecuzione del codice utente (ad esempio, allocare tutte le variabili globali)

Creare un linguaggio di programmazione Passaggio 15
Creare un linguaggio di programmazione Passaggio 15

Passaggio 15. Pubblica la tua lingua, insieme alle specifiche e ad alcuni esempi di ciò che puoi fare in essa

Non dimenticare di documentare come puoi integrarti con le librerie, i linguaggi esistenti e come utilizzare le funzionalità di runtime e/o la libreria standard

Video - Utilizzando questo servizio, alcune informazioni potrebbero essere condivise con YouTube

Suggerimenti

  • Inizia progettando la tua lingua e non scrivere alcun codice, finché non sei soddisfatto e hai risposto a tutte (o alla maggior parte) delle domande o dei problemi relativi al tuo design poiché è più facile modificare il design prima che dopo.
  • Conosci la tua piattaforma di destinazione (sistema operativo e librerie) per il tuo compilatore/interprete, dopo tutto, la userai e la manipolerai.

Avvertenze

  • Pensa se hai davvero bisogno di una nuova lingua e cosa ha di nuovo la tua lingua che altre lingue non hanno (potrebbe essere una combinazione di funzionalità o una singola funzionalità).
  • Scrivere lingue è difficile se non sai cosa stai facendo. Ci vuole anche molta pratica.
  • Preparati a dedicare un po' di tempo alla progettazione del linguaggio, poiché non avrai la possibilità di cambiare la lingua una volta che hai scritto il compilatore e superato il punto di progettazione.
  • Non cercare di basare le tue caratteristiche in un'unione di più lingue, come dire che la tua lingua sarà un'unione della lingua X, della lingua Y e della lingua Z. La storia ci ha dimostrato che le lingue create in questo modo non avranno mai successo, o tutti starebbero programmando PL/1 invece di qualcosa basato su C.

Consigliato: