
“Just-in-time code generation” the coolest language feature you never heard of - mckinney
https://github.com/manifold-systems/manifold/tree/master/manifold-core-parent/manifold#the-big-picture
======
staticjak
This reminds me of AspectJ in that its a language extension with many similar
features (extension methods etc). As useful as those features were, the
syntactic sugar you get is confusing to new contributors to a project.

Here's a scenario thats played out. In the extension methods example on the
Manifold README, it's highlighted that you can add your own methods to Java
types. If any dev saw this in the project and they were unaware of manifold,
it wouldn't be immediately clear what enables the addition of methods to the
Java String type. They would figure it out eventually by either investigating
or by debugging. These features blur the lines between programming language
and framework.

Where I get weary about adding a dependency is when I see documentation with
~100 line boilerplate examples peppered with terms I've never heard before.
Just because you use the word simple when describing something complex does
not make it so.

~~~
ubu7737
> Where I get weary

I think you mean either "wary" or "leery" but not both at the same time!

------
twunde
This seems to be one of the ideas that just comes up again and again in the
Java community. While it has its uses, it comes with a free downsides. The
biggest is that debugging becomes very difficult, especially as the code
becomes complex. Imagine building it a framework with a subtle is bug and your
newest junior engineer struggling with it.

~~~
mckinney
I never hear this idea coming up. Can you provide a reference? In any case
what is the alternative? More of the same conventional code generation that
destroys _everyone 's_ productivity? And is no easier to debug. In fact the
just-in-time approach improves the debugging situation with uniform tooling
(see the IntelliJ support).

