3 ms·
>I don't really get the big deal about needing meta programming in the language itself. If I want to generate structs, serialization, properties, instrumentatio
by coldtea 2y ago
>I don't really get the big deal about needing meta programming in the language itself. If I want to generate structs, serialization, properties, instrumentation, etc, I just write a regular C program that processes some source files and output source files and run that first in by build script.
This describes exactly what people don't want to do.
- dboreham 2y agoBut exactly why?
- 0x696C6961 2y agoBecause after enough hands have touched a codegen script, debugging it becomes impossible.
- 0x1ceb00da 2y agoIn jai you use the same language for programming and metaprogramming. The compiler knows how to execute the bytecode it generates. The compiler also has a builtin debugger for the bytecode.
- jerf 2y agoIf you just walked up to me out of the blue and asked "what computer language do you know is the worst for processing strings?", well, technically I might answer "assembler", but if you excluded that, my next answer would be C. Furthermore, you want some sort of AST representation, at one level of convenience or another (I include this compgen-style "being 'in' the AST" to be included in that, even if it doesn't necessarily directly manipulate AST nodes), and C isn't particularly great at manipulating those, either, in a lot of different ways. A consequence of C being the definitive language that pretty much every other language has had to react to, one way or another through however many layers of indirection, for the past 40+ years, is that pretty much every language created since then is better than C at these things. C's pretty long in the tooth now, even with the various polishings it has received over the years.