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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top