<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 18, 2015 at 5:47 AM, Michael Kay <span dir="ltr"><<a href="mailto:mike@saxonica.com" target="_blank">mike@saxonica.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span><div><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br><div><span style="font-size:12.8000001907349px">"Even though, because it’s functional, it will be restricted to be used only by people with CS degrees, and not by</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">random Joes and Janes who write web sites. </span></div></div></div></div></div></blockquote><br></div><div><br></div></span><div>Many people have reported that to use XSLT successfully, you either have to have a CS degree, or you have to be a non-programmer. </div></div></blockquote><div><br></div><div>I learnt XSLT before my CS degree, my conceptual understanding hasn't changed, but back then I would not have been able to grok you  the recursion sometimes needed for things like string handling in XSLT 1.0. </div><div><br></div><div>All a degree does in this context is increase the likelihood that you have been exposed to some sort of functional programming and I believe it is still possible to get through most degree programmes without encountering it.</div><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>The people who struggle are those who want it to be like the only programming language they have used in the past. Functional programming comes much more naturally to non-programmers than to those whose minds have been warped by imperative programming.</div><div><br></div></div></blockquote><div><br></div><div>True. This is the dilemma for Scala (or should be). They always want  people already steeped in the Java ecosystem  and that makes sense but the same people come from the population that will have the most difficulty adapting to Functional programming and that makes no sense.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div></div><div>Having said that, we do our best in XSLT to hide the technicalities: a non-programmer isn’t going to think of the apply-templates mechanism as a recursive descent with polymorphic function despatch, and they aren’t going to think of xsl:iterate as a fold operation taking a function as its argument.</div><span><font color="#888888"><div><br></div></font></span></div></blockquote><div><br></div><div>It's how it's presented to the experienced programmer that is the issue. My metaphor is that an XSLT processor converts an XML document to a stream of events which you have to write handlers for in the form of template rules. However that only covers XSLT's push paradigm and although I'd like to say push is all you need I don't think it's true, sometimes you have to pull. </div></div></div></div>