Peter,

I share your frustration, or at least I did at one point. If you dig back
about 6 years in this mailing list you will find an epic rant by me about
OpenGL and Clojure. Looking back on what I thought at that time, I'll
mention as perhaps they can help you not make the mistakes I did.

1) Be as specific as possible. If I say "clojure sucks because I can get a
nil anywhere", isn't that helpful to anyone. But if I say "here's some code
that stumped me, what am I doing wrong, how can I get better", people can
chime in with a direct example, and a direct solution.

2) It's hard, but stick with one problem per email thread.  Too often I see
lists (and yes I've written them myself) that go on a tirade of "everything
that's wrong with X". The problem is that mailing lists are very poor
mediums for having multithreaded conversations. So some questions will get
lost or emphasized, to the determent of other questions. So to use your
email as an example, it would be awesome to see a email thread about
"defrecord reloading", one about "empty? and ints" and another about
datomic's log function. They all have different answers and it's hard to
answer them all at once.

3) Many things in Clojure seem random until you understand the reasoning
behind them. I hate telling people to go read the Clojure source, but I'll
say the more of it you read the more you will understand. Very few things
in Clojure are done without a reason, and some things that seem like bugs
may actually just be a misunderstanding of the basic concepts of the
language.

I once had a co-worker (who used Ruby a lot) say, "why does Python suck so
much?". After a conversation with him we both kindof realized it's not that
Ruby rocks and Python sucks, its simply a different set of tradeoffs and
optimizations that make each language unique. The same is true for Clojure.
Learning what those tradeoffs is, is very important.

4) Don't give up! I played with Clojure for about 2 years before becoming
comfortable with it. Don't be like me and throw it away every few months in
anger. Keep at it, please keep asking questions, and do so before you reach
the point of frustration. I've worked with more languages than I can
remember, but Clojure is the only one I've stuck with this long, simply
because it's that good. Not perfect, but more perfect (imo) than any other
language I've used.

Hope this helps,

Timothy

On Sat, Jul 23, 2016 at 8:17 AM, Colin Yates <colin.ya...@gmail.com> wrote:

> Abstractions and dynamic/static typing are orthogonal. Static/dynamic
> is simply _when_ types are considered. Strong/weak typing is arguably
> more relevant and is about how narrowly type information is
> considered.
>
> I can't find an actual declaration but I consider Clojure is dynamic
> but strongly typed. Some dynamically typed languages tend to be more
> forgiving when asking questions and will guess at what you are asking
> regardless of whether they are statically or dynamically typed, so
> Ruby (sort of strongly typed) and JavaScript (weakly typed) have no
> problem with asking if an Integer is empty.
>
> Wow, that reads like I am lecturing down to somebody - apologies, that
> isn't my intent. Half of the problem is that like 'Functional
> Programming' there isn't really an authoritative definition of
> 'strongly typed' or 'weakly typed' :-).
>
> On 23 July 2016 at 14:15, 'Adrian A.' via Clojure
> <clojure@googlegroups.com> wrote:
> >
> >
> >> The point is that an 'Integer'
> >> (abstraction) has no sense of 'emptiness' or 'fullness'.
> >>
> > IMHO that might be true for a statically typed language, but in the case
> of
> > a dynamic language like Clojure it makes perfect sense, and most users
> > expect
> > this behavior.
> >
> > --
> > 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.
>
> --
> 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.
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

-- 
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