In terms of how the commands work and what they do
Assuming complicated, but not unnecessarily complicated, I would go with assembly language. Otherwise, I would go with Arnould-C.
I mean there are gimmick languages which are made purposefully hard.
The language shouldn't be the hard part. The language is just a tool. The hard part should be the actual problem solving aspect of the programming for anyone but a beginner.
"Malbolge was so difficult to understand when it arrived that it took two years for the first Malbolge program to appear. Indeed, the author himself has never written a single Malbolge program"
Improves your understanding of programming language theory. A person who develops a very difficult language will develop the skills to also develop a very powerful/concise/intuitive language.
There are also applications in terms of protecting software from reverse engineering. If you have a really sensitive bit of code that you don't want your rivals to be able to steal, you obfuscate its operation. Creating something in a language like Malbolge is informative in this regard.
>A person who develops a very difficult language will develop the skills to also develop a very powerful/concise/intuitive language.
Not sure if this is fallacious. An intuitive counterargument doesn't spring to mind.
I guess problem solving in prolog is generally difficult for beginners... It really depends on the person. I've seen many people struggle with functional languages as well just because they aren't used to procedural