Back when I was attempting to write a pre-compiler called Corruption, I realized what I was doing was writing a source-to-source translator. In that, I mean I was practically writing a new language on top of C++ (not C). Now, this is exactly what the original implementation of C++ did. I love the idea, and the translator would be bootstrapped to an extent. BUT, the reason I disbanded the project is the code was horrible written, and I’d have to make translations of base language features to library functions, this I did not like. I feel that a language should have an abstraction from the Operating System to the point that functions such as write(x) and read(x) or similar would be standard language features, not something from a header that calls to an OS header (os.h). This is when I first started to have accelerated thought toward designing my own language. In such, without Corruption I would have no means of advancement. Further research led me to realize C++ and even C could have been much better designed. Just by thinking of this I came up with a partial list of features my language should have. One was that instead of just having a Code file (ex: .c) and a Header file (ex: .h), you’d have a Module file (extension of the language) and a Redefinition file (redefinition of internal keywords). Those two files would be interpreted in a compiler specific way, but would have a standard attached to them as they modify how the compiler parses the language.
-cQuaid