On Tuesday, 15 March 2016 at 23:04:59 UTC, deadalnix wrote:
On Tuesday, 15 March 2016 at 19:59:01 UTC, deadalnix wrote:
On Tuesday, 15 March 2016 at 11:47:20 UTC, ZombineDev wrote:
Instead I think that if we improve D's existing introspection
capabilities and expose the compiler as a library at
compile-time, we will have a much powerful system than any
potential macro system, for a fraction of the complexity.
These videos are what changed my mind:
1. https://www.youtube.com/watch?v=OHZwYYW9koI
2. https://www.youtube.com/watch?v=59lKAlb6cRg
(Jonathan Blow's programming language for games)
It is like one of these simili good idea that everybody tries
and everybody regrets it. You DON'T want to expose your
compiler implementation to the language.
Jonathan Blow is certainly a talented person, but he has a
very grave NIH syndrome and various blind spot in language
design.
So, to give a concrete example, because my critic sounds free
and mean.
https://youtu.be/59lKAlb6cRg?t=28m24s
He quote C++ and D while presenting the defers feature. Turns
out this feature is the same thing as scope(exit) and is
planned to be added to C++ at some point.
The more general subject of the video is basically AOP. For the
most part, is is a clumsy implementation of something like
lombok: https://projectlombok.org/
In addition it exposes the compiler, which will create
maintenance problems in the future.
Yes, I know about AOP, but this is just a single application of
all the possible use cases of his idea. Another example is
describing the build process of your project with the same
language, in the same source file. I'm sure there are many other
possible use cases.
Of course this can be easily abused, but it doesn't seem
difficult to use it appropriately either. "With great power,
comes great responsibility." It looks clumsy because it is
low-level. Surely you can built higher level functionality that
is nice and easy to use.
"You DON'T want to expose your compiler implementation to the
language."
ironically, it looks like there is a company whose business is
solely based on this idea
(https://www.postsharp.net/aop.net/compiletime-weaving) and it
looks like they are quite successful
(https://www.postsharp.net/). The list of features
(https://www.postsharp.net/features) proves that more access is
better than no access, because otherwise none of them would be
possible.