Macro nella programmazione Literate
-
26-10-2019 - |
Domanda
ho scoperto che qualche strumento come Noweb non supporta macro. Vorrei sapere quali sono i vantaggi e gli svantaggi di macro nella programmazione alfabetizzati?
Soluzione
darò per scontato che per "macro" intendi avere lo strumento LP fare "macro-sostituzione" come la maggior parte degli assemblatori preprocessore C e.
sostituzione di macro è "zucchero sintattico". E 'un modo per scrivere un unico simbolo che si distingue per un sacco di dettagli simili. Da qui il termine "macro": E 'stato "macro-programmazione", scrivendo a un livello superiore di astrazione
.Questo è quello che abbiamo fatto nei tempi antichi quando non abbiamo programmazione orientata agli oggetti per fornire strati facilmente accessibili astrazione.
E 'stato - tecnicamente - possibile avere livelli di astrazione e di programmazione delle macro-stile in C utilizzando chiamate di funzione solo. Il pre-processore programmazione "macro" non è necessarie . Per esempio, abbiamo usato per definire le funzioni inline come un preprocessore "macro" per mano di ottimizzare il nostro codice. Questo perché il compilatore C non ha ottimizzare bene nei primi giorni.
Ora che abbiamo la programmazione OO, non sono necessarie le capacità macro dei linguaggi di programmazione più primitivi.
Il Letterato Programmazione funzione macro è stato utilizzato in lingue non-OO (come C e Pascal) per creare le capacità di classe simile, e le capacità a livello LP eredità-like.
Non c'è nessun punto in questo. Basta definire classi ed uso adeguati corretta successione.
Altri suggerimenti
ho scritto 2 diversi strumenti LP: TCLP - non supporta le macro: http://code.google.com/p/tclp amd NanoLP, con le macro molto supporto flessibili: http://code.google.com/p/nano-lp .
E quando ho dovuto scrivere TCLP, le mie idee circa le macro è stato - è un male perché distrugge la struttura del programma, qualcosa di simile a un altro sistema macro - si può pensare a questo proposito, come circa parallelo macro-sistema in linguaggio C. C macroses pelli codice vero e proprio - che non sono reali chiamando la funzione, ma nasconde vero codice e LP macro sono il modo parallelo a nascondere il codice (come segnaposto!). Questo è disadventeges.
Ma se si scrive bene macro LP, leggibile e comprensibile, quindi nessun problema di utilizzare loro, così ho incluso sistema di macro flex (con plaeholders, importazione, variabili dizionari ...) nel mio prossimo strumento -. NanoLP