You are not logged in. Your edit will be placed in a queue until it is peer reviewed.
We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.
-
any kind of code can be very difficult to maintain. And can be very easy if done the right way. Metaprogramming can increase maintainability in orders of magnitude in fact. Your python experience is, likely, irrelevant to the real metaprogramming, since Python is not very suitable for this way of thinking, with its clumsy too-deep AST. But even with Python, I used the Tempita library with high efficiency, and never had any maintainability problem, even with a team with almost no previous Python experience.SK-logic– SK-logic2011-08-28 10:57:59 +00:00Commented Aug 28, 2011 at 10:57
-
I am interested in your point about python AST. Have you used tempita for meta programming purpose?Simon Bergot– Simon Bergot2011-08-28 16:33:20 +00:00Commented Aug 28, 2011 at 16:33
-
this ( docs.python.org/library/ast.html ) is quite an ad hoc AST, and parser gives an unoptimised, overbloated tree, which makes an analysis problematic (especially with the lack of proper pattern matching in Python). Generating such an AST is not very convenient as well. I used tempita for producing both Python and C code (i.e., pure text-based metaprogramming), it worked fine for that specific task (boilerplate code generation). I also often used Python for generating C code out of some XML high level descriptions.SK-logic– SK-logic2011-08-28 17:16:20 +00:00Commented Aug 28, 2011 at 17:16
-
Can you point some papers or books which you maybe found on your method of text-based metaprogramming? I'm trying to work with the object graph which is somewhat close to AST, and don't feel I'm progressing.Dmitry Ponyatov– Dmitry Ponyatov2020-08-16 07:18:57 +00:00Commented Aug 16, 2020 at 7:18
Add a comment
|
How to Edit
- Correct minor typos or mistakes
- Clarify meaning without changing it
- Add related resources or links
- Always respect the author’s intent
- Don’t use edits to reply to the author
How to Format
-
create code fences with backticks ` or tildes ~
```
like so
``` -
add language identifier to highlight code
```python
def function(foo):
print(foo)
``` - put returns between paragraphs
- for linebreak add 2 spaces at end
- _italic_ or **bold**
- indent code by 4 spaces
- backtick escapes
`like _so_` - quote by placing > at start of line
- to make links (use https whenever possible)
<https://example.com>[example](https://example.com)<a href="https://example.com">example</a>
How to Tag
A tag is a keyword or label that categorizes your question with other, similar questions. Choose one or more (up to 5) tags that will help answerers to find and interpret your question.
- complete the sentence: my question is about...
- use tags that describe things or concepts that are essential, not incidental to your question
- favor using existing popular tags
- read the descriptions that appear below the tag
If your question is primarily about a topic for which you can't find a tag:
- combine multiple words into single-words with hyphens (e.g. design-patterns), up to a maximum of 35 characters
- creating new tags is a privilege; if you can't yet create a tag you need, then post this question without it, then ask the community to create it for you