4 ms·
Actually, it is still possible to use C as a higher than assembly target language for compilers.
by crististm 10y ago
Actually, it is still possible to use C as a higher than assembly target language for compilers.
- MaulingMonkey 10y agoWhile I'm really interested in this for making languages available everywhere (tm), basic things like signed integer overflow being undefined behavior make me question is C is fit for purpose even here.
- jjnoakes 10y agoSince you are generating the C code, you can generate the appropriate checks where needed to avoid such undefined behavior too.
- MaulingMonkey 10y agoWhich is the one thing keeping it in the running. The problem is this line of reasoning doesn't generally hold up when applied to C codebases (because in practice statistics catches up with you eventually) and C code generators, in effect, happen to contain an admittedly small but rather obfuscated C codebase. Moreover, you must always include such checks - manually crashing on e.g. null pointers even if you'd be entirely satisfied with a segfault - just to avoid the optimizer potentially going apeshit on your code. Which can have... poor effects on program performance.
- jjnoakes 10y agoIf you are writing a code generator, it all depends on the source language. If, for example, your source language doesn't have NULL pointers, then you don't have to waste cycles checking them in C.
- progman 10y agoIndeed. That's what Nim and Rust (for instance) can do to ease porting to other platforms. Even safety critical applications can be written in C by using tools like FramaC. https://frama-c.com https://frama-c.com