Obviously said person would not be an expert, but I've watched competent programmers try to learn complex languages like Haskell and Scala; there is a far more complex mental model that one needs to build before they can use those languages specifically because of all the automagic that happens in the background.
We'll need to define criteria for "useful program" but I believe most people could write useful programs in most languages in a weekend.
> I've watched competent programmers try to learn complex languages like Haskell and Scala
> far more complex mental model
I think its more that those languages are different, not that they require a more complex mental model.
A complex recipe rewards a chef with exceptional results if they follow it perfectly, but also presents more opportunities to fail. A simple recipe might not offer the results but it should be easier to produce with a lower chance to mess up.
I think the concept generalizes here.
Right, but remember simple doesn't necessarily mean easy. The reason I use functional languages is because in my experience they handle complexity better.
> A complex recipe rewards a chef with exceptional results if they follow it perfectly, but also presents more opportunities to fail. A simple recipe might not offer the results but it should be easier to produce with a lower chance to mess up.
> I think the concept generalizes here
I of course mostly agree to both of the above, but I think you are mis-characterizing functional languages such as Haskell which are simple but quite different from languages most are used to.
Agreed, which is why I prefer to implement complex ideas in Haskell. It catches more potential errors than other languages.