POV-Ray : Newsgroups : povray.off-topic : Haskell : Re: Haskell Server Time
7 Sep 2024 03:21:42 EDT (-0400)
  Re: Haskell  
From: Orchid XP v8
Date: 12 Dec 2008 15:52:33
Message: <4942cf11$1@news.povray.org>
>> Heh. The hard part is figuring out how to take a big heap of knowledge 
>> and structure it into something coherant with a logical order to is 
>> that somebody else might even be able to follow. ;-)
> 
> Yes, that's the hard part. :-)

You noticed?

> It's one of the problems with open 
> source software that's doing something totally new, where there's two or 
> three people who know how it works inside and out, and they don't know 
> how to explain it to someone who doesn't already know what they're 
> talking about.

Welcome to Haskell!

I am *totally certain* that the guy who designed the undecidable 
typeclass instance translation rules to System F knows *exactly* what 
they're talking about and why it works... but they're far too busy 
programming it to tell anybody about it in words of less than 6 
syllables. o_O

> It's a tremendously useful skill to have: the ability to explain to 
> grandma (or your boss) what she needs to know about the technology. 
> (That's probably one reason I use too many analogies - I find they work 
> well with non-technical people.)

Indeed.

IMHO, the *key* skill here is looking at a thing and figuring out what 
*is* important, and what is *not* important, for the purposes of the 
discussion in question.

A computer is a very large, complex device, and the software that powers 
it is built from abstract concepts implemented on top of concepts 
constructed from yet more concepts, in a mind-blowing vertical tower of 
abstraction.

Just imagine trying to explain to a Victorian scientist how to design, 
build and program a modern-day computer. I mean, apart from the minor 
detail of needing semiconductor technology and microscopic lithography, 
you'd have to give them a lecture in electronics, Boolean algebra, logic 
gates, sequential logic design, binary encodings, processor design, 
instruction sets, computer programming, subroutine calls, interrupt 
handlers, I/O device design, system programming, compiler design, 
language design, memory allocation and task scheduling algorithms... 
shall I stop yet? :-P

Having just said all that, if somebody wants to know how to connect 
several PCs to a single Internet connection, you *could* tell them about 
IP addressing and subnet masks and the intricasies of NAT... or you 
could just tell them to plug a few boxes together and it'll work. Guess 
which answer most people want to hear. ;-)

> It's also one of the important skills you learn from a PhD.

I'll take your word for it, Dr New.

> I'll second the notion that if you can sit down and write something like 
> you post here, and just churn it out, do so. Getting the ideas down is 
> good.

I had an idea that I could produce a kind of "portfolio" of good-quality 
written documents (various subject areas and target audiences) and I 
could show it to people and say "hey dude, I'm clever!" The thing I 
posted here is a first attempt at one such portfolio document.

(I'm polishing up my Parsec thing to make another such document. And I 
may or may not to a layman's overview of computer hardware - I don't 
know if I could do it justice...)

> After that, if you want to go further, sit down and make an outline (as 
> in "table of contents" type outline). Break it down until the structure 
> has an entry for each idea, where "each idea" is covered in a paragraph 
> or two. Then read the outline and make sure someone else could 
> understand it on the first read through. Then you just fill in the outline.

The trick to this seems to be figuring out which concepts "depend on" 
which other concepts, which ideas "lead to" others, and finding an 
optimal order to present the ideas. And some good metaphores and 
examples usually help immensely... ;-)

-- 
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.