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