Interestingly, there's this book which is a crash course on building a computer stack from the ground up: from logic gates, to a compiler, to an OS. And the simulator, in which you build all these things, is in Java.
Nisan/Schocken's _The Elements of Computing Systems_: <http:// www1.idc.ac.il/tecs/> Luke Gorrie mentioned porting the circuits he wrote (not, and, or, xor, mux, dmux, half-adder, full-adder, adder) to Clojure. <http://lukego.livejournal.com/17711.html> So... there may be a strange loop here where a good path to learning these low-level things is a counter-intuitive one. I agree that Java-y things (static methods, method inheritence, classpaths, javadocs) are an issue; maybe there should be a little tutorial for people that surveys "What's a .jar file?" and "public static void... whuh?" All the best, Tayssir And their simulator -- which you build and simulate your computer on -- is a Java program. On Dec 1, 5:19 pm, Chouser <chou...@gmail.com> wrote: > On Tue, Dec 1, 2009 at 10:29 AM, CuppoJava <patrickli_2...@hotmail.com> wrote: > > There are more qualified people than me on these boards, but I can > > offer my own personal experience, which is to say, as a first language > > I would still recommend going the C/Java/Basic/Assembly route first > > before going with a Lisp. > > I think understanding how computers work (Von Neumann machines, > I suppose) is indeed important. If you're serious about being > a good programmer, you need to understand pointers, memory > allocation, virtual memory, IO scheduling, etc. You at least > need to be aware of all the fiddly bits that modern programming > environments try to abstract away, so that when they fail to > behave well, or just plain fail, you have a fighting chance of > understanding what's going on. > > But do you need to learn all that *first*? I don't think so. > I didn't -- I learned BASIC and didn't know anything about > pointers. Then I learned Pascal and pointers, and didn't know > anything about malloc or process scheduling. Then I learned > C and some operating system internals. > > So I think there's no harm in learning a nice clean high-level > language first, as long as you eventually learn some C and OS > stuff. Maybe you'll find you like C and get into hardware driver > development. Or more likely you'll be happy to tuck away the > C knowledge and do mid- or high-level work in a language that > allows you to (most of the time) ignore such details. Clojure is > designed to be a good place to end up in this more likely case, > and I think is largely succeeding. > > I think the biggest down side to learning Clojure as a first > language, as others have mentioned, is its relationship to the > JVM. Although this is a strength when it comes to actually using > Clojure to get real things done, especially while Clojure is > still so young, I fear it's a weakness for a first language. > Currently doing almost anything interesting requires not only > knowledge of Clojurey things (immutable collections, functional > style, lazy seqs, etc.) but also Javay things (static methods, > method inheritence, classpaths, javadocs). This is one reason > why I recommendhttp://projecteuler.net-- it allows you to > accomplish *something* with nearly pure Clojure, even though you > don't get to do anything graphical or webby. So I *hope* that's > good enough for Clojure to be a good first language -- after all, > why not start off where you should end up? -- but I worry that > it's not. > > If you're tenacious and hungry for knowledge, I'd say "go for it." > > --Chouser -- 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