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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en