On Thu, Mar 17, 2016 at 11:12 AM, gvim <gvi...@gmail.com> wrote:

> Better to get a foundation in Javascript, Python/Ruby and Java first then
> add Clojure later.
>

Disagree.  It's easier to go from functional programming to imperative
programming than vice versa, so it is better to teach functional
programming first.

The reason is that imperative programming can be thought of as a small,
added layer, an extra mutation capability beyond writing pure functions
that can be used judiciously to achieve certain effects.  Grounded in
functional programming, it's easy to go to imperative programming, because
you are *adding* a capability.  You can still write pure functions in an
imperative language (although the language gives you less support for doing
so), so your prior knowledge applies.

On the other hand, if you learn imperative programming first, you learn a
way of writing code that uses mutation in everything.  You develop no
awareness of the boundary between the set of things you can compute with
and without mutation.  From your perspective, everything requires
mutation.  When you try to make the move to functional programming, you
feel completely lost and completely hamstrung, because a capability you
imagine is essential for writing any code is now missing.  You have to
completely relearn how to think about coding, figuring out how to write
code without mutation.  You are subtracting a capability from your
language, which is much, much harder, because all your instincts about how
to code no longer apply.

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to