<div class="notebook"> <div class="nb-cell markdown" name="md1"> # Notes on using PLUnit and PLDoc _Robert Laing_ These notes are based on my efforts to apply "good design" as learnt from an online course given by Brown University's [Gregor Kiczales](https://www.cs.ubc.ca/~gregor/) which sadly no longer appears to be available, but luckily the textbook it used, [How To Design Programs](https://htdp.org/), is freely available online. While the HTDP textbook uses an open-source version of Lisp called Racket, the principles it teaches are universal and can be applied to any programming language. At the heart of the course is a [six step "recipe"](https://htdp.org/2019-02-24/part_preface.html#%28part._sec~3asystematic-design%29), which overlaps a lot with _Agile_, specifically Test Driven Development (TDD). I've never been part of an Agile team, so don't have the bad experience described in a recent [Forbes article](https://www.forbes.com/sites/cognitiveworld/2019/08/23/the-end-of-agile/#4d950ce02071). But I have seen Youtube videos in which Agile consultants say silly things like: "Computers ignore comments, humans ignore comments, so why bother them?". The idea of intertwining comments and documentation dates to [Donald Knuth's Literate Programming](http://www.literateprogramming.com/knuthweb.pdf) paper. For a software project to be successful, as much care needs to be taken writing the documentation as the code. SWI-Prolog has the tools, [PLDoc](https://www.swi-prolog.org/pldoc/doc_for?object=section(%27packages/pldoc.html%27)) and [PLUnit](https://www.swi-prolog.org/pldoc/doc_for?object=section(%27packages/plunit.html%27)) </div> </div>