{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,4,12]],"date-time":"2025-04-12T05:48:13Z","timestamp":1744436893012},"reference-count":22,"publisher":"Cambridge University Press (CUP)","issue":"6","license":[{"start":{"date-parts":[[2011,6,30]],"date-time":"2011-06-30T00:00:00Z","timestamp":1309392000000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2012,11]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Coding standards and good practices are fundamental to a disciplined approach to software projects irrespective of programing languages being employed. Prolog programing can benefit from such an approach, perhaps more than programing in other languages. Despite this, no widely accepted standards and practices seem to have emerged till now. The present paper is a first step toward filling this void: It provides immediate guidelines for code layout, naming conventions, documentation, proper use of Prolog features, program development, debugging, and testing. Presented with each guideline is its rationale and, where sensible options exist, illustrations of the relative pros and cons for each alternative. A coding standard should always be selected on a per-project basis, based on a host of issues pertinent to any given programing project; for this reason the paper goes beyond the mere provision of normative guidelines by discussing key factors and important criteria that should be taken into account when deciding on a full-fledged coding standard for the project.<\/jats:p>","DOI":"10.1017\/s1471068411000391","type":"journal-article","created":{"date-parts":[[2011,6,30]],"date-time":"2011-06-30T08:44:56Z","timestamp":1309423496000},"page":"889-927","source":"Crossref","is-referenced-by-count":5,"title":["Coding guidelines for Prolog"],"prefix":"10.1017","volume":"12","author":[{"given":"MICHAEL A.","family":"COVINGTON","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"ROBERTO","family":"BAGNARA","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"RICHARD A.","family":"O'KEEFE","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"JAN","family":"WIELEMAKER","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"SIMON","family":"PRICE","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"56","published-online":{"date-parts":[[2011,6,30]]},"reference":[{"key":"S1471068411000391_ref22","volume-title":"Handbook of Greek and Latin Pal\u00e6ography","author":"Thompson","year":"1893"},{"key":"S1471068411000391_ref19","first-page":"224","volume-title":"Proceedings of the 18th International Conference on Logic Programming (ICLP 2002)","author":"Schimpf","year":"2002"},{"key":"S1471068411000391_ref16","unstructured":"Moura P. 2003. Logtalk \u2013 Design of An Object-Oriented Logic Programming Language. Ph.D. thesis, Department of Computer Science, University of Beira Interior, Portugal."},{"key":"S1471068411000391_ref12","first-page":"128","volume-title":"Proceedings of the 23rd Australasian Computer Science Conference (ACSC 2000)","author":"Jeffery","year":"2000"},{"key":"S1471068411000391_ref15","volume-title":"Professional Software, Vol. 2: Programming Practice","author":"Ledgard","year":"1987"},{"key":"S1471068411000391_ref9","first-page":"1345","volume-title":"Computational Logic: Proceedings of the First International Conference (CL 2000)","author":"Hermenegildo","year":"2000"},{"key":"S1471068411000391_ref3","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-55481-0"},{"key":"S1471068411000391_ref1","volume-title":"Ada 95 Quality and Style, Guideline for Professional Programmers","author":"Ausnit-Hood","year":"1997"},{"key":"S1471068411000391_ref20","first-page":"499","article-title":"Mercury: An efficient purely declarative logic programming language","volume":"17","author":"Somogyi","year":"1995","journal-title":"Proceedings of the 18th Australasian Computer Science Conference (ACSC '95)"},{"key":"S1471068411000391_ref2","volume-title":"\u2018Runsort\u2019\u2014An A daptive Mergesort for Prolog","author":"Brady","year":"2005"},{"key":"S1471068411000391_ref8","unstructured":"Green R. 1996\u20132010. Unmaintainable code [online]. Retrieved 14 June 2011. Available at http:\/\/mindprod.com\/jgloss\/unmain.html"},{"key":"S1471068411000391_ref14","volume-title":"The Elements of Programming Style","author":"Kernighan","year":"1978"},{"key":"S1471068411000391_ref6","volume-title":"Prolog Programming in Depth","author":"Covington","year":"1997"},{"key":"S1471068411000391_ref7","doi-asserted-by":"publisher","DOI":"10.1017\/S1471068401001120"},{"key":"S1471068411000391_ref5","unstructured":"Covington M. A. 2002. Some coding guidelines for Prolog [online]. Retrieved 14 June 2011. Available at http:\/\/www.ai.uga.edu\/mc\/plcoding2002.pdf"},{"key":"S1471068411000391_ref18","volume-title":"The Craft of Prolog","author":"O'Keefe","year":"1990"},{"key":"S1471068411000391_ref17","doi-asserted-by":"publisher","DOI":"10.1016\/0004-3702(84)90017-1"},{"key":"S1471068411000391_ref10","volume-title":"The G\u00f6del Programming Language","author":"Hill","year":"1994"},{"key":"S1471068411000391_ref4","first-page":"34","article-title":"Computer languages in type","volume":"26","author":"Covington","year":"1994","journal-title":"Journal of Scholarly Publishing"},{"key":"S1471068411000391_ref11","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/5.1.10"},{"key":"S1471068411000391_ref21","unstructured":"Sun Microsystems. 1999. Code conventions for the Java programming language [online]. Retrieved 14 June 2011. Available at http:\/\/java.sun.com\/docs\/codeconv\/."},{"key":"S1471068411000391_ref13","volume-title":"The Practice of Programming","author":"Kernighan","year":"1999"}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068411000391","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,4,24]],"date-time":"2019-04-24T17:42:24Z","timestamp":1556127744000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068411000391\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,6,30]]},"references-count":22,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2012,11]]}},"alternative-id":["S1471068411000391"],"URL":"https:\/\/doi.org\/10.1017\/s1471068411000391","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2011,6,30]]}}}