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


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

Reply via email to