{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,10,26]],"date-time":"2023-10-26T05:10:34Z","timestamp":1698297034469},"reference-count":11,"publisher":"Wiley","issue":"9","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4807,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1993,9]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Sloth is a simple Unix\u2010based tool for creating and maintaining large C programs built from reusable \u2018modules\u2019. Sloth is a collection of UNIX shell commands for creating and editing modules, and for producing executables by linking compiled code from the modules comprising a program. Sloth in a sense extends C by providing module facilities similar to those built in to newer languages such as Modula\u2010II. The Sloth \u2018extensions\u2019, however, are at the shell level only. No changes are required in C itself; in fact, the Sloth commands invoke the standard Unix C compiler.<\/jats:p><jats:p>A Sloth module contains a set of C procedures and local declarations, a set of global definitions and variable declarations, an initialization routine and an \u2018import\u2019 list of other modules containing declarations referred to, but not defined by, the module in question. The Sloth link command has one argument, the name of a \u2018root\u2019 directory. The link command automatically identifies all those modules imported directly or indirectly by the root module, checks that the object code for each module is up\u2010to\u2010date and recompiles where necessary. It then creates a main program in which the various initialization routines are executed in the correct order (most primitive first), compiles it and links it with all the object files and produces an executable program.<\/jats:p><jats:p>Individual modules can be compiled without any knowledge of the application that uses, directly or indirectly, the module in question. Two applications that both use a collection of modules can therefore share the <jats:italic>object<\/jats:italic> code for these modules.<\/jats:p><jats:p>The use and implementation of Sloth are presented, as are the experience in using it, programming techniques developed to take full advantage of its facilities, as well as several extensions, either completed or planned.<\/jats:p>","DOI":"10.1002\/spe.4380230902","type":"journal-article","created":{"date-parts":[[2006,11,18]],"date-time":"2006-11-18T05:45:01Z","timestamp":1163828701000},"page":"933-948","source":"Crossref","is-referenced-by-count":1,"title":["A unix tool for managing reusable software components"],"prefix":"10.1002","volume":"23","author":[{"given":"John","family":"Plaice","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"William W.","family":"Wadge","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/947886.947893"},{"key":"e_1_2_1_3_2","volume-title":"The C++ Programming Language","author":"Stroustrup Bjarne","year":"1986"},{"issue":"5","key":"e_1_2_1_4_2","first-page":"78","article-title":"A 3\u2010D spreadsheet based on intensional logic","volume":"16","author":"Du Weichang","year":"1990","journal-title":"IEEE Trans. Software Engineering"},{"key":"e_1_2_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/948176.948178"},{"key":"e_1_2_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/948576.948578"},{"key":"e_1_2_1_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/382284.382285"},{"key":"e_1_2_1_8_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380200303"},{"key":"e_1_2_1_9_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380171204"},{"key":"e_1_2_1_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/71052.71058"},{"key":"e_1_2_1_11_2","doi-asserted-by":"crossref","unstructured":"J. A.PlaiceandW. W.Wadge \u2018A new approach to version control\u2019 IEEE Trans. Software Engineering (1993).","DOI":"10.1109\/32.221137"},{"key":"e_1_2_1_12_2","unstructured":"J. A.PlaiceandW. W.Wadge \u2018Reducing the complexity of software configuration\u2019 in M. Tchuente (ed.) Proc. 1st African Colloquium on Research in Computer Science Yaound\u00e9 Cameroon October1992. INRIA (B.P. 105 78153 Le Chesnay Cedex France) pp.85\u201396."}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380230902","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380230902","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,25]],"date-time":"2023-10-25T03:30:23Z","timestamp":1698204623000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380230902"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993,9]]},"references-count":11,"journal-issue":{"issue":"9","published-print":{"date-parts":[[1993,9]]}},"alternative-id":["10.1002\/spe.4380230902"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380230902","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1993,9]]}}}