@mia The unpleasant experiences I had are not with projects doing run-time code generation by running a program during the build, but were all related to other random build complexities.
uecker@mastodon.social
Posts
-
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ?@mia @thephd You argument is "build systems are a mess, so solve everything in the compiler close to the source of the problem". Somehow this argument is also seems weak. Similar generic arguments always are used to justify centralization of complexity. But I do think code generation is fundamentally different from code translation and should not be done by the same tool and I do not think this is purely aesthetic argument. But let's agree to disagree.
-
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ?@mia @thephd I think "just" having an additional interpreter in the compiler is not generally a good idea. I want things to be more modular and less monolithic. Compilers are already too complex for my taste. If people use modularity to create a mess, then this is IMHO not an argument against modularity but for cleaning up the mess.
-
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ?@manx @thephd Maybe you are right, but my perspective after observing the industry for a while is this: Complexity always grows until things suck too much and then people build alternatives and the cycle starts again. At the same time, if some part does not suck yet because it is relatively small and simple, people think that complexity needs to be moved there from the other parts nobody wants to touch. Couldn't this be part of what is happening here?
-
A r e y o u r e a d y t o h a v e s o m e f u n ?@manx @thephd Thanks! I guess in a reasonable approach you would only have two stages. You build a tool that creates the code you then run to create he code you ultimately compile. This is not fundamentally different to what happens with constexpr. Just there is all part of an in transparent and slow monolithic C++ compiler. The complexity is not gone, but just hidden. But this is not better IMHO.
-
A r e y o u r e a d y t o h a v e s o m e f u n ?@mia @thephd (my personal pain with build systems is typically with CMake where it throws some error and I have no idea where in the thousands of lines of CMake I am supposed to change something. Especially if it first compiles for a long time and processing constexpr as part of it just makes it worse. )
-
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ?@manx @thephd I am not entirely sure I understand what is "cyclic" in this context. To me one reason people try to make languages into complete frameworks is that it seems an easier approach to standardize things at the language level than try to harmonize the diverse environments. And this is a valid argument, but not really a technical one.
-
A r e y o u r e a d y t o h a v e s o m e f u n ?@manx @thephd IMHO if people are unhappy about build systems (which seems to be the case and there are certainly good reasons), one should think hard why this is the case and fix it at that level. This is hard, because it is likely not just a technical issue, but lack of standardization and the need to support annoying environments that intentionally wanted to be different.
-
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ?@manx But I think it partially also reflects the size of the ecosystem. I really do not like many other languages that provide a framework that locks you into a specific way of doing things.
-
A r e y o u r e a d y t o h a v e s o m e f u n ?@manx I agree that the lack of standardization of build systems is a problem.
-
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ? -
A r e y o u r e a d y t o h a v e s o m e f u n ?@thephd Ok, but why does it need to be solved by compile-time interpretation and not simply be a tool one runs during built? To me, this seems to solve the problem at the wrong place and using poorly suited tools (a compiler is not a good interpreter). And my only explanation so far is that people are nerd-sniped into doing it.
-
A r e y o u r e a d y t o h a v e s o m e f u n ?@thephd What I do not understand is why the extra build step is a problem.
-
A r e y o u r e a d y t o h a v e s o m e f u n ?@thephd Cool, but why?