<story><title>Marelle: logic programming for devops</title><url>http://quietlyamused.org/blog/2013/11/09/marelle-for-devops/</url></story><parent_chain></parent_chain><comment><author>calpaterson</author><text>I&amp;#x27;m skeptical, because there is already a configuration management language that is strongly influenced by Prolog and logic programming - Puppet - and the results are not that great.&lt;p&gt;The secret of configuration management is that ordering NEEDS to be a first class feature and ordered manifests should be the default, not the option.  Puppet suffers hugely from the influence from the fact that ordering is unpredictable and that you have to use arrows or requires to add order.  People accidentally forget to add ordering, the resulting code works most of the time, and then one day you start running into an issue because some implicit dependency either didn&amp;#x27;t happen, or happened in the wrong order.  In as much as all logic programming involves not explicitly controlling flow, I think they&amp;#x27;re inappropriate for configuration management.  Sadly, I&amp;#x27;m still stuck with using Puppet because of the organisation I work in.&lt;p&gt;Having worked with Prolog in the past, I would also suggest that an important feature of a configuration management language is that the syntax make it hard to make typos and other minor errors because the feedback loop of deploying your code against a local vagrant machine is already long enough.  I vividly remember the annoyance of having missed the full stop to end a block.  I&amp;#x27;m not desperate to repeat that experience.</text></comment>
<story><title>Marelle: logic programming for devops</title><url>http://quietlyamused.org/blog/2013/11/09/marelle-for-devops/</url></story><parent_chain></parent_chain><comment><author>mickeyp</author><text>Prolog&amp;#x27;s a surprisingly good fit for many every-day tasks where people otherwise invent DSLs or poorly-defined state machines and pattern matching algorithms.&lt;p&gt;So how come we don&amp;#x27;t use it more often? Well, the reason is actually quite simple:&lt;p&gt;Prolog&amp;#x27;s incredibly difficult to reason about once you grow past trivial facts and clauses like in the OP&amp;#x27;s article -- the examples given by him would&amp;#x27;ve been introduced to you in the first lesson on Prolog in, say, University. The complexities of green&amp;#x2F;red cuts, backtracking and the procedural nature of Prolog makes it a really difficult language to truly learn -- much less one to specify complex programs in.&lt;p&gt;I&amp;#x27;ve never programmed in a language where 5-6 lines of errant Prolog code could stump myself, a post grad and a professor before until I did Prolog.</text></comment>