Hacker News new | ask | show | jobs
by dwaltrip 3362 days ago
The assertion that no one is able to explain functional programming is rather extreme and doesn't pass the sniff test.

Does every practitioner of functional programming reinvent the whole thing from scratch each time?

Perhaps you mean to say that it is very difficult to explain?

1 comments

Here is an explanation, it's the top when when I googled "easy explanation of functional programming."

https://maryrosecook.com/blog/post/a-practical-introduction-...

Please read it. Do you know functional programming now? Do you get it? Do you get the point of it? Did you "grok" the whole reason that the functional paradigm exists?

In my opinion that article fails to meet the test. In its very first paragraph it calls out some negative approaches that assume too much or are too hard; in the second paragraph it does the same thing.

>The assertion that no one is able to explain functional programming is rather extreme and doesn't pass the sniff test.

It's certainly easy to falsify my claim. You can do so with a single link.

So if anyone is able to explain functional program in a way that makes it clear and easy, and really lets people grok its purpose and approach, where is that explanation? Where are the benefits that people reap by reading it?

The fact is, the resources I have reviewed fail that metric. The people who teach it aren't actually able to explain it easily and well. You suggest that "perhaps [I] mean to say that it is very difficult to explain" -- maybe so, but that is still a reason why it is not true that if someone understands something, then they can also explain it. Here we have a clear example where this is not the case. There are also many more examples in the arts and sciences. Not everything can be explained. That doesn't mean nobody knows it. Therefore, the "if you know it -> you can explain it" claim is false. QED.

> but that is still a reason why it is not true that if someone understands something, then they can also explain it

You are going after this rough heuristic as is if it some iron clad metric. Obviously some things are more difficult to explain than others -- I'm not sure how that affects the usefulness of the idea that, in general, being able to explain something well is a sign one likely understands it deeply. This isn't the only measure of understanding, and it isn't perfect, but I've found it be useful.

It seems similar to the notion that to truly know a topic, you must distill it down to concise articulations of the only the most fundamental aspects, as well as the key resulting dynamics that emerge.

Of course, being able to communicate such a rich mental model to others is not always easy, but doing so demonstrates that one understands their own mental model very well.

If you are saying that it isn't a perfect test of understanding, then we are in agreement. But I think that misses the point a bit.

So I am going to go off in the opposite direction and say that often people who apparently can explain things clearly and concisely, using pithy aphorisms even, do not really have any deep mental model at all. I'll quote a poem for you, that I feel is apt here:

    Turning and turning in the widening gyre
    The falcon cannot hear the falconer;
    Things fall apart; the centre cannot hold;
    Mere anarchy is loosed upon the world,
    The blood-dimmed tide is loosed, and everywhere
    The ceremony of innocence is drowned;
    The best lack all conviction, while the worst
    Are full of passionate intensity.
I feel that many deep concepts are the same: the best practictioners might lack all conviction. They cannot distill any articulation. They have nothing clear to say that explains their understanding.

In fact, when I've pressed for some, they have been frustrated.

All of my gurus are the same. They simply cannot explain what they know clearly and concisely.

Is it because I only go to Gurus for information that is inordinately difficult - that, I can find the simplest explanations wherever, so those are not what I ask about? Perhaps.

But as a metric, I simply have not found people's ability to express concepts clearly, or to distill concepts, a good proxy for their understanding them; nor of their level of insight; nor of their mastery of the domain.

In fact, I can almost go as far as to state the opposite: the only people who can clearly explain things, are people who are completely wrong about them. (This is an extreme position and I probably am going a bit too far in this direction. I may not actually believe the sentence I Just wrote.)

Basically I completely reject the premise - I think we completely disagree about whether it is a useful or good heuristic, or even correlates in the positive direction!

>In fact, I can almost go as far as to state the opposite: the only people who can clearly explain things, are people who are completely wrong about them. (This is an extreme position and I probably am going a bit too far in this direction. I may not actually believe the sentence I Just wrote.)

If you don't actually believe this, why state the above?

> It's certainly easy to falsify my claim.

Without a proper definition of what you're looking to be "explained", or a reproducible quantitative metric that you're using to to measure a successful "explanation" vs an unsuccessful one, no it isn't falsifiable. If you provide a detailed framework with clear quantitative conditions, then it might be falsifiable, but as of now, it is purely subjective and it is disingenuous to suggest that's an objective test.

For example, why would an explanation of functional programming (which could include any of a huge number of topics), have to explain to you why it exists? Since it is literally an extension of a specific branch of math, there need not be much more of a reason than 'for exploratory purposes', because often that's the only thing that drives many mathematical innovations.

Secondly, it's important to point out the implicit assumption in that argument, that an explanation of a topic is the only possible source for learning and understanding that topic, which is easily proven false by observing the way humans learn to walk. Do babies usually need a complete and thorough explanation of how to walk before they can master it? No, they go through trial and error and learn largely on their own via experience, and even if they could understand language that early, you'll still likely find it very cumbersome to try and explain to somebody how/why to walk in the kind of detail you seen to be asking of fp articles. Therefore, why can't a discipline/activity like programming or mathematics, also require experience learning to fully grasp? Is there a reason why the assumption was made that it can only be learned/understood via thorough explanation?

And while being able to explain something well is a decent rule of thumb to show competence in an area, it's not universal, as demonstrated by the learning to walk example. Similarly, you can't have a fixed minimum requirement for what qualifies as a good explanation to rate against, because understanding changes and evolves with time. For example, a "good" explanation of how the solar system works circa 300BC, would not be a very good explanation now.

You take a tone as though you disagree with me, but actually do agree with my conclusion, just not my argument. We have reached the same conclusion. So this is just a technical reply to your criticism of the argument I use to get there - you get there via a different argument, and you claim mine is wrong. But we don't disagree about my conclusion.

For how you get there: in your third paragraph you give a shining example that it is not necessary to be able to explain something in order to do it: though everyone (barring a specific hindrance which we would identify and name as a disability) "knows" how to walk, it is clear that if you asked a thousand people "explain how you walk" you would not have a thousand good explanations. So, you have actually produced another example that it is possible to know something without being able to explain it!

Walking is a bit different from a purely mental knowledge/skill/etc, of course, and yet we can probably generalize it without taking too many allowances.

Returning to your criticism in your first paragraph, I feel like given the fact that you introduced the word "disingenuous" I would say it is disingenuous of you to suggest that people cannot tell whether they have received an explanation that is good. Of course we can.

Compare these two explanations:

"Why is two the only even number that is prime?"

- http://math.stackexchange.com/questions/1003491/why-is-two-t...

Explanation 1:

"Two is a prime because it is divisible by only two and one. All the other even numbers are not prime because they are all divisible by two. ... Because every even number other than 2 is obviously divisible by 2 and so by definition cannot be prime."

versus

Explanation 2:

"Pick a prime p. Call a number n p-divisible if pn. Then p is the only p-divisible prime, trivially. In particular, 2 is the only 2-divisible, or even, prime."

Can't you easily tell the subjective difference between the two explanations? One is easy to understand. One is hard to understand.

To be honest, I can't parse and follow the second example. I have to resort to what I actually KNOW it's saying! Rather than its misplaced formalism.

So as you can see this has nothing to do with the subject matter!!

It simply shows that KNOWLEDGE is not reflected in CLEAR EXPLANATION. The second explainer clearly has deep knowledge. But this does not translate to an explanation.

In essence I am saying the same thing. That yes, we can tell a good explanation when we see one (sorry, this is a subjective claim but I'm sticking with it) but that this in no way, shape, or form is a requisite (or even indication) of actual understanding!