<story><title>The FAQ of comp.lang.prolog is maintained as a Prolog source file</title><url>https://www.metalevel.at/prolog/faq/</url></story><parent_chain><item><author>rho4</author><text>Story of my life. In my opinion the best tool for basically all jobs is usually the main programming language of your project &amp;#x2F; team &amp;#x2F; company. Everyone can read it, change it and run it. It can do everything. It has the best tooling support. The best IDE, which everyone has installed, licensed and knows how to operate. It is hopefully compile- and type safe. It is hopefully under source control. And hopefully a mainstream language, so you can find tons of help and resources online.&lt;p&gt;But for some reason, every f* new task is always first solved with some interpreted weakly typed scripting language, shell script or batch file, config file, xml programming, open source tool or web service. Unversioned, and with the weakest tool and team support imaginable. Probably a separate git repository with separate login credentials is created somewhere along the way as well.</text></item></parent_chain><comment><author>dkarl</author><text>Totally with you, except you need to choose your primary language carefully if you want it to scale up and down like that.  Don&amp;#x27;t expect people to write little command-line tools and one-off scripts in C or Java.  You&amp;#x27;ll see an apparent lack of tooling for little tasks, as people hoard their secret scripts.  And it&amp;#x27;s really important to get people to check code like that in, as then it will be subject to PRs where bugs will be spotted, documentation requested, and general awareness of the code&amp;#x27;s existence raised.&lt;p&gt;Also, junior people will translate &amp;quot;code I will never be able to check in anyway&amp;quot; to &amp;quot;perfect opportunity to play around with that new language I want to learn&amp;quot; and then you&amp;#x27;ve got them making the usual mistakes as noobs in that language.</text></comment>
<story><title>The FAQ of comp.lang.prolog is maintained as a Prolog source file</title><url>https://www.metalevel.at/prolog/faq/</url></story><parent_chain><item><author>rho4</author><text>Story of my life. In my opinion the best tool for basically all jobs is usually the main programming language of your project &amp;#x2F; team &amp;#x2F; company. Everyone can read it, change it and run it. It can do everything. It has the best tooling support. The best IDE, which everyone has installed, licensed and knows how to operate. It is hopefully compile- and type safe. It is hopefully under source control. And hopefully a mainstream language, so you can find tons of help and resources online.&lt;p&gt;But for some reason, every f* new task is always first solved with some interpreted weakly typed scripting language, shell script or batch file, config file, xml programming, open source tool or web service. Unversioned, and with the weakest tool and team support imaginable. Probably a separate git repository with separate login credentials is created somewhere along the way as well.</text></item></parent_chain><comment><author>YeGoblynQueenne</author><text>I feel your pain. For me the worse case of this is web dev, where there&amp;#x27;s a different language for every task: html, CSS, javascript, SQL, your back-end language, XML, JSON, and so on.&lt;p&gt;But, Swi has my back on that, too:&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.swi-prolog.org&amp;#x2F;FAQ&amp;#x2F;PrologLAMP.txt&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.swi-prolog.org&amp;#x2F;FAQ&amp;#x2F;PrologLAMP.txt&lt;/a&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;  Can I replace a LAMP stack with SWI-Prolog?
  
  Yes, you can, and you&amp;#x27;ll be happier for it.
  
  LAMP is short for the following open source components to realise a web
  server:
  
      Linux
      Apache
      MySQL
      PHP
  
  In this picture, Linux provides the OS, Apache the web server, MySQL the
  database and PHP server-side scripting facilities. In fact, most of these
  components can be replaced. One can replace Linux with almost any other OS,
  Apache with Nginx, MySQL with PostgreSQL. PHP is similar to ASP.
  
  There are also larger replacements of this stack, such as Tomcat, which
  replaces both Apache and PHP. Similar architectures are available for Python
  (django), Ruby (Ruby on Rails) etc. As we will see below, this is the picture
  into which SWI-Prolog fits.  

  The SWI-Prolog web framework
  
  The SWI-Prolog web framework (obviously) does not replace the OS. It does
  replace Apache, PHP and to some extent MySQL. We could refer to the stack as
  LP (Linux Prolog). Below, we point at the various libraries that make up the
  stack and relate them to the LAMP components they replace.
&lt;/code&gt;&lt;/pre&gt;
You can&amp;#x27;t quite replace html&amp;#x2F;css&amp;#x2F;js of course, since the browsers depend on them- but they can be embedded in Prolog easily. I believe the http library in my other comment here has facilities to do this.&lt;p&gt;Also- if you ever need to write a parser for some topsy-turvy ad-hoc markup language some third-party is using that you are forced to process, Prolog is probably the best language to do this, thanks to its Definite Clause Grammars notation that&amp;#x27;s basically BNF, except that it&amp;#x27;s not restricted to context-free grammars:&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;en.wikipedia.org&amp;#x2F;wiki&amp;#x2F;Definite_clause_grammar&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;en.wikipedia.org&amp;#x2F;wiki&amp;#x2F;Definite_clause_grammar&lt;/a&gt;</text></comment>