I think it's hard for anyone experienced in subject to give a recommendation on how to get started, as there's just so much knowledge you always assume. Maybe if you've tried teaching programming using a variety of languages you can.
I'm a little younger than the C64 guys, I first taught myself programming (would have been while I was in primary school) in QBasic using the builtin reference documentation, an old GW-BASIC reference manual and a book on Pascal. I didn't have a Pascal compiler or GW-BASIC, just the qbasic.exe that came with DOS so I used the Pascal book as a conceptual introduction. I then figured out myself how to translate some of the Pascal stuff, by looking at the example programs (gorillas.bas, nibbles.bas) that came with QBasic. I don't think it matters too much where you start, but it's absolutely critical to learn several languages. I routinely write code in Clojure, C, Java, Python, Ruby, JavaScript, various shell-scripts, ELisp and from time to time x86 and ARM assembler. Be very careful not to fall into the trap of thinking your first language "does everything", even if it is a lisp. Clojure would be challenging language to start with, as (all?) the books and documentation are aimed at people who are already programmers. But if you like a challenge then perhaps that's even a good thing. If you're already a techie type person and are happy to fiddle around in configuration files and the command-line I don't think it should be that much of an obstacle. CuppoJava wrote: > Because simply, I couldn't appreciate functional programming until I > did a fair bit of imperative programming first. And because imperative > programming is closer to the raw machine, I find that reasoning about > functional programming requires, in a lot of instances, to think about > the equivalent code in an imperative language. Quite a number of universities teach Haskell or Scheme as a first language, as functional programming can be easier to understand (as it's more maths-like) and you can get up and running quickly with a program that actually "does something". They then later do a high-level imperative language, often Java or Python. Then in second year they usually have some more low-level courses like system architecture, operating systems, or high performance computing that cover C and assembler and processor internals. They usually cover the computation theories (automata, turing machines, lambda calculus, combinatory logic) in second or third year as well. I think it's important to get experience with all of these at some stage if you want to be a good programmer. > For example, why is Laziness a good idea? What are the inherent > limitations of Class-based object-oriented programming? Why is single > inheritance limiting? How can multiple-inheritance come back to haunt > you? What is "hanging" onto your head? Why does this really elegant > functional code run so slowly? Why is "eval" a bad idea? I don't think these questions are at all suitable for a beginner. I think you'd need several languages under your belt before you could even understand the question, let alone be able to formulate a good answer to them. But I also don't think you need to be able to answer them to be able to write beginner-level programs in Clojure. > So I think avoiding an imperative language means that there's too much > fundamental understanding about the machine that you would skip over. > Not to mention, that most libraries will be using an imperative > language, so you'll be having to learn it eventually in order to read > the libraries even if you don't plan on writing any imperative code > yourself. I don't think you need to learn an imperative language first, but you must learn one at some point. Cheers, Alex -- 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