Name: Anonymous 2013-09-07 16:38
When is it appropriate to use a high level programming language? Personally, I always feel guilty when using anything except C.
When i write C i write serious, long-term stuff that should use 100% of the machine cycles.You need an optimizing compiler just to be able to use basic CPU instructions. It's more work for you and the compiler. It makes compilers more bloated and harder to maintain. Compilers are bigger so you can write more code to do the same thing you can do in other languages with a smaller compiler and less code. It's stupid for serious stuff, like using Brainfuck.
C allows you to write at minimal abstraction level, thats why it feels more natural, since its simple.You obviously never wrote any assembly. C is a terrible language for most machines because it has less features than the hardware. It's crap. C compilers have to turn whole loops into single instructions. Some of those optimizations depend on undefined behavior in C, which is well-defined in your CPU, so your code can turn into garbage.
Well, C is simple and has low-level features.It has pointers. That is the only low level thing about C. C is not low level, but crippled. You can't use arrays without resorting to unsafe pointers. That's why C can't have bounds checking without bloating up every pointer in the program. C pointers are less safe than assembly pointers because they are not machine addresses. All of those optimizations make pointers dangerous.
"Lisp compiles to C code that would be impractical to write manually"Someone made a Basic to Brainfuck compiler. That Brainfuck would be impractical to write manually. Wanting to compile to it so you don't have to use it means the language is bad, but it doesn't mean it's low level. Look at the JavaScript "transpilers" everyone is making so they don't have to use JavaScript.
C has the option of being at any level of abstraction, if programming time isn't a problem its possible to reimplement anything in C.Brainfuck has the option of being at any level of abstraction, if programming time and code size aren't problems, it's possible to reimplement anything in Brainfuck.