I don't come from 'Java-land'. I'm primarily an Erlang developer,
which already is a very similar language to Clojure. Perhaps this is
why I'm not gushing about functional programming's panacea?

Aaron

On Tue, Feb 04, 2014 at 06:12:18AM -0800, Colin Yates wrote:
> This has turned into an unconstructive argument and for whatever reason we 
> don't seem to be communicating clearly.  Shame as I (and probably most 
> people on here) only want to help.  You seem to be reacting quite strongly 
> to my thoughts - not sure why.
> 
> If I may, I will just make/rephrase two points:
>  - I think you would find value in watching Rick Hickey's videos on "Simple 
> Made Easy" and also the one where he talks about "Hammock Driven 
> Development".
>  - when I started using Clojure I immediately looked for equivalents of all 
> the supporting infrastructure I used in good old Java land.  I have no idea 
> of your situation, but if you are there you have a wonderful opportunity to 
> re-examine and build up a whole new toolchain/approach to development that 
> IME is significantly lighter and more powerful.  
> 
> Peace.
> 
> On Tuesday, 4 February 2014 13:49:49 UTC, Aaron France wrote:
> >
> > On Tue, Feb 04, 2014 at 04:18:30AM -0800, Colin Yates wrote: 
> > > Comments in line. 
> > > On Tuesday, 4 February 2014 11:23:36 UTC, Aaron France wrote: 
> > > > 
> > > > 
> > > > I don't want to seem rude but I think you've drank a bit too much 
> > > > kool-aid. 
> > > > 
> > > You know the phrase "I don't want to seem rude" doesn't actually do 
> > > anything right?  :) 
> > >   
> > > 
> >
> > I genuinely don't want to offend. People allow themselves to become 
> > vested in their viewpoint. If that has happened to you, I'm sorry. 
> >
> > > > To say that functional programming and war against state means that 
> > > > your application doesn't need to be tested thoroughly is a joke. And a 
> > > > very bad one. 
> > > > 
> > > I agree, but who is saying that?  I certainly didn't cover how much 
> > testing 
> > > is necessary.  I thoroughly test my Clojure systems using midje, which 
> > > regularly rocks my world.  My point is that the coverage is much *much* 
> > > easier to reason about in FP than in OO (for the reasons I gave). 
> >
> > I'm not following how you translate this into information which 
> > explains how your system is being tested. 
> >
> > >   
> > > 
> > > > Coverage doesn't just aid you in seeing which parts of state caused 
> > > > which branches to be hit, it also gives you notice if there are any 
> > > > logical errors in your code which cause the branches to not be hit. 
> > > > 
> > > And why are those logical errors which cause the branches to not be hit 
> > not 
> > > immediately obvious?  Why do you need a tool to tell you that?  I know 
> > my 
> > > Clojure code has around 100% coverage using white box testing for the 
> > > functions and mocking the interactions. 
> >
> > And what's the harm in getting this information from an automated 
> > tool? With your 20 years industry knowledge you should know that you 
> > cannot rely on humans to think and act reliably. It's just not a good 
> > way to plan systems. *Especially* when it comes to asking someone how 
> > correct their system is. 
> > > 
> > > I would challenge you to put ego/emotion to one side, stop finding 
> > > non-existent points to argue against and re-read my post.  By all means 
> > > come back and justify why all the points I raised which reduce the need 
> > for 
> > > coverage are invalid.  Don't attribute stupid statements (like 'FP 
> > doesn't 
> > > need testing') to me - I can come up with my own stupid statements thank 
> > > you. 
> >
> > You hand waved the need to use tools such as coverage reports simply 
> > on the virtue of some hard to quantify statements. I find that 
> > unscientific. 
> > > 
> > > If it helps, my stand point is from 20 years of building non-trivial 
> > > Enterprise applications (primarily Java) using the current best of breed 
> > > technology stacks (i.e Spring/Hibernate/AspectJ) with the best of breed 
> > > process (agile, TDD, DBC, BDD, most otherTLAs etc.). 
> >
> > Arguments from authority mean nothing on the internet. 
> >
> > > Using Clojure for the past year or so has opened my eyes to exactly 
> > > how many problems we solve, and infrastructure we use is to pamper 
> > > to complexity introduced by the tool-chain not the problem domain. 
> > > I am suggesting maybe coverage tools are one of those. 
> > > 
> >
> > Coverage helps nothing on its own. It's a tool to aid in knowing which 
> > aspects of your system remain untested. It's fine to *believe* you're 
> > testing 100% of your system, but how do you actually know this? 
> >
> > If you wander into a codebase you're not familiar with, what's the 
> > coverage? How do you know you're hitting all codepaths? You just 
> > cannot know this without reading all the code and the tests. Coverage 
> > helps to discover this information. 
> >
> > My point isn't to eschew all other forms of testing in favour of 
> > coverage reports but to use them in tandem with the others to aid me 
> > in *knowing* which parts of the system are being tested and which are not. 
> >
> > Aaron 
> >
> > > 
> > > > Aaron 
> > > > 
> > > > On Tue, Feb 04, 2014 at 03:19:05AM -0800, Colin Yates wrote: 
> > > > > I don't know. 
> > > > > 
> > > > > But maybe the lack of coverage tools is itself interesting?  My (not 
> > > > quite 
> > > > > formed/making this up as I go) view is that maybe coverage tools are 
> > > > there 
> > > > > to address the implicit complexity in other mainstream languages 
> > and/or 
> > > > to 
> > > > > help mitigate the risk of the potentially large and hard-to-identify 
> > > > > 'impact analysis' you get in OO systems when you change state.  In 
> > other 
> > > > > words, coverage is necessary because we want to feel safe that all 
> > > > > combinations of our code are extensively tested.  Why don't we feel 
> > > > safe? 
> > > > >  Because the system is hard to reason about. 
> > > > > 
> > > > > Functional programming on the other hand is full of much smaller 
> > > > discrete 
> > > > > and independent chunks of functionality.  Ideally these small 
> > focused 
> > > > > 'bricks' are pure/referentially transparent so the *only* context 
> > you 
> > > > need 
> > > > > when reasoning about them is their parameters and the logic inside. 
> > > > >  Assembling these bricks introduces interactions that need to be 
> > tested, 
> > > > > sure, but there are very few 'call this and watch the change 
> > > > cascade'/'this 
> > > > > code is sensitive (i.e. coupled) to that data over there'. 
> > > > > 
> > > > > My ramblings are to say, maybe the root cause of coverage tools is 
> > to 
> > > > solve 
> > > > > a problem (hard to reason about systems) which shouldn't be much 
> > less of 
> > > > a 
> > > > > problem in FP when FP is done right.  OO + mutable state = hard to 
> > > > reason 
> > > > > about.  FP + immutable state + pure/referentially transparent 
> > functions 
> > > > = 
> > > > > much easier to reason about. 
> > > > > 
> > > > > Or not.  Just my 2 pence :). 
> > > > > 
> > > > > On Sunday, 2 February 2014 21:34:29 UTC, Aaron France wrote: 
> > > > > > 
> > > > > > Hi, 
> > > > > > 
> > > > > > I'm looking for coverage reporting in Clojure. I've been using 
> > > > > > Cloverage[1] but I'm just wondering if there are any other 
> > coverage 
> > > > > > tools? 
> > > > > > 
> > > > > > Aaron 
> > > > > > 
> > > > > > 
> > > > > > [1] https://github.com/lshift/cloverage 
> > > > > > 
> > > > > 
> > > > > -- 
> > > > > You received this message because you are subscribed to the Google 
> > > > > Groups "Clojure" group. 
> > > > > To post to this group, send email to 
> > > > > clo...@googlegroups.com<javascript:> 
> >
> > > > > Note that posts from new members are moderated - please be patient 
> > with 
> > > > your first post. 
> > > > > To unsubscribe from this group, send email to 
> > > > > clojure+u...@googlegroups.com <javascript:> 
> > > > > 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+u...@googlegroups.com <javascript:>. 
> > > > > For more options, visit https://groups.google.com/groups/opt_out. 
> > > > 
> > > 
> > > -- 
> > > You received this message because you are subscribed to the Google 
> > > Groups "Clojure" group. 
> > > To post to this group, send email to clo...@googlegroups.com<javascript:> 
> > > Note that posts from new members are moderated - please be patient with 
> > your first post. 
> > > To unsubscribe from this group, send email to 
> > > clojure+u...@googlegroups.com <javascript:> 
> > > 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+u...@googlegroups.com <javascript:>. 
> > > For more options, visit https://groups.google.com/groups/opt_out. 
> >
> 
> -- 
> 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/groups/opt_out.

Attachment: pgpZlAKU5rI_5.pgp
Description: PGP signature

Reply via email to