On 12/01/2009 08:51 PM, Fogus wrote:
---- %< -----
> I think learning C (it was my 3rd language) is likewise
> important, but it's heavy in incidental complexities that just muddle
> the problem at hand and probably not good as a start.  New programmers
> need to solve as many problems as they can as soon as they can --
> Lispy languages let them solve the *actual* problems and C-like
> languages force them to solve the actual problems *plus* a whole bunch
> of ancillary problems.
>
> -m
>    

I would argue that Clojure is equally encumbered with ancillary problems 
- they just aren't usually in the code.  It is perfectly possible to use 
clojure to run simple scripts, or just to work at the REPL, but to get 
to that point you have to do more work than you would have to in python, 
for example.   Even if you go down the route of using something like 
Enclojure you have do the following:

    - Find out that Enclojure exist
    - Find out that Enclojure needs netbeans,
   - Get and install netbeans.
    - Find out how to install netbeans extensions
    -Get and install the Enclojure extension.
    - Find out how to start a clojure project or REPL in enclojure.

All of those things are good learning experiences if you want to learn 
how to setup an IDE to do productive work in clojure, but they are all 
ancillary to your primary goal of learning about programming.   Every 
one of those steps is an opportunity to fail, to misunderstand, to 
become disheartened and to give up.

I don't mean to criticise projects like Enclojure, but I think IDE's are 
a symptom of complexity, not a cure.   When you work in an IDE the 
solutions to your problems are easy to find and execute (usually) but no 
easier to understand.  As an analogy think about the network settings 
dialog in Windows or Mac OS X - the information there isn't any easier 
to understand because it's in a GUI, TCP/IP didn't get easier, a netmask 
is still a  netmask.  What got easier was finding out that these 
concepts exist - knowing how to fill them in is a whole other problem, 
and your ISP telling you what to put in those boxes won't help you 
understand how networks work.

Something that has changed since the days when I started programming is 
the normal interface people have with the machine.  When I worked on my 
Sinclair Spectrum I was faced with BASIC as my primary control mechanism 
for the machine.    If I wanted to run a program that process began with 
issuing the BASIC command to load a program from tape.     I had an 
operating manual that came with my computer and it was a natural 
progression to try other commands.   As a six year old one of my primary 
activities was to write small programs that drew very blocky, 8 colour 
pictures.   I was only vaguely aware that this was programming, I was 
just using the computer.   It was a simple, direct interface to the 
capabilities of the machine.

To do similar things in a language like Clojure you would have to go out 
of your way to make use of a graphical API delivered by the platform - 
it's far from a natural way of working with the computer.  Perhaps this 
is why there is a roll for an environment like DrScheme, but still I 
think we lost something along the way.

But perhaps I am just an old fool dreaming of blue remembered hills.
-- 
Geoff Teale

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to