4 ms·
100% agree with this. I recently had a problem in python where dynamically generating the classes was the cleanest implementation. What I found was basically n
by mountainriver 4y ago
100% agree with this. I recently had a problem in python where dynamically generating the classes was the cleanest implementation.
What I found was basically no IDEs supported runtime generation of code for things like autocomplete. Jupyter does but it’s a limiting environment.
It made me realize this is a mostly unexplored space with little tooling
- quonn 4y agoI think F# could do this well.
- Koshkin 4y ago.NET can do it: https://learn.microsoft.com/en-us/dotnet/framework/reflection-and-codedom/dynamic-source-code-generation-and-compilation https://learn.microsoft.com/en-us/dotnet/framework/reflectio...
- bob1029 4y agoSee also - Source Generators, which can replace some forms of reflection. https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/source-generators-overview https://learn.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/s...
- int_19h 4y agoA big reason why this kind of stuff doesn't quickly become unreadable in C# is that the output of a source generator must be a new file. So the ability to extend existing code is limited to the facilities that the language specifically provides for this purpose (partial classes & members, extension methods etc). It also means that tooling can treat all such generated code as virtual files, allowing them to be inspected, debugged etc.
- quonn 4y agoI meant this which is different: https://learn.microsoft.com/en-us/dotnet/fsharp/tutorials/type-providers/ https://learn.microsoft.com/en-us/dotnet/fsharp/tutorials/ty... For example, there is an SQL provider that gives you generated types and auto-complete but it does this without running a source generator that emits files. It just happens inside the compiler.
- williamcotton 4y agoInteresting! I would love if you could expand on your recent problem and also how this applies to OP!
- compiskey 4y agoBeen thinking about this as well. Working on language native libs to react to eBPF telemetry and scale logic forks appropriately to avoid exhausting the host, motivated by disdain for Docker/k8s. I’d rather just import a dep and develop the behavior. But I don’t have to time to write all that. So I have actually been writing helper scripts to generate object code and function signatures via ast libs. This is how I originally “learned programming” in the 90s. The industry zeitgeist shifted to “churn out code” and all that wizardry was lost. I have no idea how to prove it but I sometimes think it was intentional to capture worker agency. It’s been fun reconnecting to it but the ecosystem of helper tooling … well there is none. Tons of blogs with basics about for loops though.