# How to warn new users away from metaprogramming

**URL:** <https://discourse.julialang.org/t/how-to-warn-new-users-away-from-metaprogramming/35022>\
**Category:** Internals & Design\
**Tags:** question, proposal\
**Created:** [February 22, 2020, 5:33pm UTC](https://discourse.julialang.org/t/how-to-warn-new-users-away-from-metaprogramming/35022 "2020-02-22T17:33:51Z")\
**Posts on this page:** 1\
**Showing post:** 19

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [February 24, 2020, 4:10pm UTC](https://discourse.julialang.org/t/how-to-warn-new-users-away-from-metaprogramming/35022/19 "2020-02-24T16:10:39Z")

</div>

A good rule of thumb is that you should know exactly what your macro is converting things to, otherwise the macro has gone too far. For example, [GitHub - SciML/MuladdMacro.jl: This package contains a macro for converting expressions to use muladd calls and fused-multiply-add (FMA) operations for high-performance in the SciML scientific machine learning ecosystem](https://github.com/JuliaDiffEq/MuladdMacro.jl) is fairly clear what it does: it just finds things like `a*b + c` and turns it into `muladd(a,b,c)`. These then nest, so `a*b + c*d + e*f` becomes `muladd(muladd(...)..)`. Do you know how to do it by hand? Yes. Do you want to? No. That’s a good spot for a macro.

Even when making a DSL, I think the “non-DSL” version should be very clear. For example, I wish JuMP had documented their macro-free interface, so the macro was “just nicer syntax”.

---

_[View the full topic](https://discourse.julialang.org/t/how-to-warn-new-users-away-from-metaprogramming/35022)._
