In primo luogo - non credo Sono d'accordo con la tua affermazione che "metaprogrammazione è il 'futuro della codifica'". E 'un grande strumento, ma non a tutti piace (per esempio, i progettisti di Java lasciato macro fuori del linguaggio intenzionalmente - non che mi piace di Java, ma la gente fare hanno motivi per opporsi a metaprogrammazione).
In ogni caso ... Posso pensare a due modi diversi di eseguire metaprogrammazione: a livello sintatico e in fase di esecuzione.
Per la sintassi metaprogrammazione, penso Scheme è una buona opzione (se tu non avessi menzionato semplicità ecc Io suggerirei di Common Lisp). Per la metaprogrammazione di runtime, suppongo che sia Prolog sia Smalltalk siano molto interessanti. (È possibile aggiungere, modificare e rimuovere fatti in un database Prolog al volo e modificare gli oggetti Smalltalk al volo su). Probabilmente puoi fare metaprogrammazione in runtime anche in Ruby, ma non conosco Ruby.
Così --Ci sono diversi metodi di metaprogrammazione diversi in Scheme (diversi sistemi di macro). Ti suggerisco di dare un'occhiata ad un libro di Scheme di base e in seguito leggere su due diversi sistemi macro.
Alcuni buoni libri Schema:
implementazioni Scheme sono molto diversi gli uni dagli altri, così potrai anche usare il vostro schema di manuale di implementazione di un anche molto
Alcuni posti per imparare sulle macro Schema:
Se si decide di utilizzare un linguaggio che è più grande e più disordinato di Scheme, provare Common Lisp . Ci sono tre libri che suggerirei:
- Prima, "Practical Common Lisp" di Peter Seibel.Ciò ti farà iniziare su Common Lisp e macro;
- Secondo, "On Lisp" di Paul Graham. Scoprirai quindi che le macro sono più potenti di quanto avevi pensato prima e apprenderanno tecniche davvero belle;
- In terzo luogo, "Let Over Lambda" di Doug Hoyte. Un libro avanzato, la migliore da leggere dopo Graham's On Lisp.
Per Prolog, si può leggere "Programmazione in Prolog" di orologi per e Mellish (ottenere l'ultima edizione!) E poi passare a "Prolog Programmazione in Depth" di Covington, Vellino e Nute. Vedere il Capitolo 6.
Ci sono un sacco di buoni libri Smalltalk. Mi piace "The Art and Science of Smalltalk" di Simon Lewis. C'è anche un bello free tutorial/primer by Canol Gokel su Smalltalk (ma non arriva a insegnare come metaprogrammare).
si potrebbe desiderare di fare questa domanda una comunità wiki per evitare la chiusura sulla base soggettiva e polemico . –
È ora wiki della comunità. – Erup
+1 Buona domanda. La vera vergogna è stata chiusa perché c'è molto da dire sull'argomento. Lisp (1960) è la madre di tutti i linguaggi metaprogrammanti. Scheme è un Lisp facile da apprendere. La famiglia di linguaggi MetaLanguage (ML, 1970) è stata progettata specificamente per la metaprogrammazione e le derivate moderne (OCaml, Haskell, F #) hanno un grande supporto. Scopri le lingue che ti consentono di indirizzare VM come .NET ma anche LLVM. Le espressioni regolari sono un esempio pratico convincente dell'utilità della metaprogrammazione. –