One of the best and instructive post I have read in years. Thanks Timothy Mimmo
> Il giorno 23 lug 2016, alle ore 22:26, Timothy Baldridge > <tbaldri...@gmail.com> ha scritto: > > 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. -- 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.