The definition of a 'high level language' seems to be subject to some amount of 'mission creep'; I would argue that the phrase 'high level' would indicate that the language at least abstracts away the details of the underlying hardware so that such languages are _portable_ to another ISA (instruction set architecture). Nowadays, I'd also throw in ideas like type safety, memory safety and garbage collection to make a language 'high level'. Note that Postscript (after Adobe finally put in a garbage collector) fits this definition. If you care _only_ about "control structures" like if-then-else, but not about the actual machine instructions, you might enjoy these papers about the "Comfy" language, which is illustrated for the 6502 (the original Apple II cpu), but has also been used as an 'assembler' for other architectures. *** Warren, you should check these out *** The Comfy language: http://home.pipeline.com/~hbaker1/sigplannotices/sigcol03.pdf Size: 62 KB (62,584 bytes) The Comfy 6502 compiler in Emacs Lisp: http://home.pipeline.com/~hbaker1/sigplannotices/sigcol04.pdf Size: 61 KB (61,617 bytes) At 09:55 AM 4/21/2014, Joerg Arndt wrote:
* David Makin <makinmagic@tiscali.co.uk> [Apr 21. 2014 14:57]:
On 20 Apr 2014, at 19:05, Joerg Arndt wrote: [...]
I can certainly live with swap(a,b). Note C is not a high level language.
?? Surely any language where the majority of instructions cover more than one machine code instruction is "high" level ;) Or to put it another way - any language that can potentially compile one instruction into *different* but equivalently performing machine code is "high" level ;)
OK, to put into perspective: http://en.wikipedia.org/wiki/High-level_programming_language
I'd rather consider, for example, Python, Ruby, and Languages of computer algebra systems as examples of "high level languages".
C rather as "low level", as there is not a lot of space between C and machine code, indeed I can often predict the machine code for small programs (apart from the compiler's neat tricks such as unusual instructions for specific CPUs).
C++: "mid level"? In it's raw form, maybe, but including the STL, certainly, as it can be used in a quite high-level-ish manner.
No quality ranking implied, I use what is good for the problem at hand.
Best regards, jj
P.S.: The German Wiki page http://de.wikipedia.org/wiki/Höhere_Programmiersprache essentially says "it's high level if it is not assembler".