I've also given this subject some thought when I was deciding on what
language I should use to teach first time programmers. In the end, I
ultimately decided against teaching Clojure as someone's first
language, but would like to transition into Clojure as soon as
possible.

---These were my reasons for wanting to teach Clojure:---
-Simple syntax. Students should learn that learning programming is not
learning syntax. I don't want their concepts to be muddled because of
tedious syntax.

-Functional programming. Students should learn how to write programs
in as organized and in as general a fashion as possible. Functional
programming also emphasizes recursion, which is a method of thinking
that should be taught early I think.

-No objects. In my opinion, OOP is taught way too early nowadays,
which results in students writing monolithic inheritance structures.

---These were my reasons finally against teaching Clojure as a first
language.---
-Immutability. I think for a beginner, mutability is easier to
understand. Immutable data structures are quite a bit more
complicated, but most importantly, their advantages are not seen by
someone who has never programmed before. For this reason, Clojure's
STM is unnecessarily confusing for beginners. Imagine trying to
explain why you need the dosync command when trying to set a ref.

-No Syntax. As good as lisp syntax is, it's not what the rest of the
world uses. Algorithms are almost always explained using C, or Java,
or some other C-like pseudocode. Beginner's need to be able to read
these algorithms.

-Less Resources. As great as the Clojure community is, it's still
easier to look and ask for help with a Java program than it is with a
Clojure program. And this is important, because beginners will need A
LOT of help and resources.

-Java interop. One of Clojure's greatest strengths is its seamless
integration with Java. But I found that you require a decent knowledge
of Java first to understand how to use it. For example, (Math/
sqrt ...) and (.add object ..) why do these functions look different
from normal Clojure functions? What's the difference between the two?
What does the (new) command do?
So I found that since you really need to learn Java anyway (to some
degree) to use Clojure, you might as well learn Java first.

Just my thoughts
  -Patrick
--~--~---------~--~----~------------~-------~--~----~
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