Originally Posted by alcal
Hardest in my experience: PAL: Assembly language for the PDP8-E series of machines. There was so little hardware that you only have one register to store data in. Imagine programming in java for example, except you are only allowed to make one variable at a time, and must save data (and instructions) to memory in between most steps.
The hardest, yet practical language is x86 assembly I would guess. C is one of the trickier high level languages in my experience, but maybe that's just because I think pointers are weird. Also, there's some language called Whitespace or something which is coded entirely with whitespace characters. That would certainly be hard to write/read/debug, though the logic is probably quite simple.
Is that 1 general purpose register, or just 1 register total?
Any stack at all?
I can't even imagine trying to code for that machine, would have been a nightmare!
In response to the actual question, I think it is better rephrased as: Which is the most difficult programming paradigm to learn? Each language has it's own nuances, but in general once you have learned a language within a paradigm, switching between them is relatively easy (though you may not do it well). I would say most procedual languages are relatively easy to learn, with difficulty ranging from very easy to hard at the expense of complexity. Object oriented programming is harder to do well. Then there is functional programming which is a nightmare.
And to the side of all these are the esoteric languages, which are created for the sole purpose of being *hard* and *annoying* and, though they are turing complete in many cases, aren't really used in the real world.