Hardest for me is X86 assembler, probably because I use it so rarely and it changes with each generation of Intel processor. I started in this business many, many years ago coding in assembler on super computers, so most assemblers are easy for me, but I find the X86 instruction set to be convoluted.
Haskell. After trying to code in it unsuccessfully, I gave up. I don't think that the language is particularly hard, but the tutorial I was following really sucked. Everything it showed left me with more questions than answers and Googling didn't turn up many answers for me.
Haven't tried assembly, but I'm sure that would be considerably harder. If for no other reason then simply because of readability and memorization.
Definitely a +1 for Learn You A Haskell For Great Good. Still, Haskell is weird enough that you don't really get a handle on it until you've spent quite a long time fiddling with it; it also kind of assumes a strong background in category theory and things like that, which is a fair barrier to any non-academic programmers :)
I'd have to say SQL is still the hardest language for me to grasp, to be honest. I mean sure, easy things are easy, but I still bang my head against the wall when I need to do more complex queries.
mbozzi's experience was exactly the same as mine learning Haskell, and so even if you don't really intend to use it "seriously" learning Haskell (or any functional programming language, maybe), is a good investment because of that "broadening your horizons" factor.
That said, it is hard for me to pick one; as mentioned before Haskell and SQL would be good candiates in terms of difficulty, but I'm not sure if I can really say I "learned" them! I've forgotten a lot of Haskell and my current job doesn't use really anything complex when it comes to SQL.
C kept flummoxing me with the syntax. That took me a while.
Scheme was a paradigm shift, being a functional language.
I would recommend Scheme over Haskell as a gotta-learn-a-lambda-calculus-language, but whatever functional language you decide on, it is definitely worth your time to do it.
I like Assembly. My first language was Basic, then Assembly, then Pascal. A lot of people hate x86+ assembly, because it is so different from the elegant dinosaurs and the modern RISC stuff. But I like it — it has a lot of power and flexibility. It is just very big.
Of course, now that I’m thinking about it, I have spent more time trying to master C++ than any other language...
A functional language (Haskell in my case). The shift was incredibly interesting but it was hard not to try to come up with imperative solutions. Once you were able to work around that it was super cool though.
If you have learned only one language, then that is by definition the "hardest" (and "easiest"), even though some of the zillion other, never seen languages would probably be "more challenging".
Learning (yet) another language probably feels easier (regardless of objective difficulty level), for it makes use of what you have acquired with the previous languages, (unless there is a paradigm shift).
A) trying to avoid the "hardest"
B) looking for good challenge
C) conducting a study on how programmers think (Is there a trend?)