POV-Ray : Newsgroups : povray.off-topic : Frustration : Re: Frustration Server Time
6 Sep 2024 17:17:51 EDT (-0400)
  Re: Frustration  
From: Orchid XP v8
Date: 17 Jan 2009 09:45:29
Message: <4971ef09$1@news.povray.org>
Darren New wrote:

> You don't need to know algebra to know how to write a program? You don't 
> need to know how "and" and "or" works to write a program?
> 
> You can't understand what a compiler does without knowing any abstract 
> algebra. Heck, you can't even know the difference between a literal and 
> an expression without knowing abstract algebra. You realize that "pass 
> by value" is abstract algebra, right?

OK, now I actually *know* abstract algebra, and your statements still 
make no sense to me.

> How do you know if your while loop terminates if you don't know how 
> predicate calculus works?

You don't need to know the formal theory to understand how a simple loop 
works. Basic intuition will tell you that.

> Actually, I think the answer is more that you know these things, and you 
> just don't know the terminology the academics use for much of the stuff.

The discussion seems to be gradually anealing towards the idea that it's 
not the *names* that are the problem, but the near-total lack of any 
semblance of documentation about them that doesn't assume you already 
hold a PhD in advanced mathematics.

For example, the documentation for the Monoid class states

   "The monoid class. A minimal complete definition must supply mempty 
and mappend, and these should satisfy the monoid laws.

   Methods:
   - mempty: Identity of mappend.
   - mappend: An associative operation.
   - mconcat: Fold a list using the monoid. For most types, the default 
definition for mconcat will be used, but the function is included in the 
class definition so that an optimized version can be provided for 
specific types."

Assuming you already know what a monoid is, this is quite transparent. 
If you've never heard of a monoid in your life, none of this makes the 
slightest semblance of sense. And looking it up on Wikipedia still 
doesn't tell you what this has to do with writing useful programs in 
Haskell. (Or any other language.)

(The same library features Endo, "the monoid of endomorphisms under 
composition". Even I have no clue what in the name of God that actually 
means.)

The concensus seems to be that
- Haskell is inherantly mathematical, with a strong emphasis on deep 
abstractions.
- Deep abstractions can be hard to learn, so we should document them better.

However - and this is what makes me so angry - there is a strong element 
in the community who claim that Haskell should *only* be used by maths 
experts. I find that to be arrogant and elitist.

The reasoning behind this seems to be "if you don't study category 
theory, you cannot write computer programs, so it's OK for Haskell to 
demand that everybody learns category theory before using it". This is 
of course easily falsifiable.

-- 
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.