As a first step in the larger project of charting the ontology of computer programs, we pose three central questions: (1) Can programs, hardware, and metaprograms be organized into a meaningful taxonomy? (2) To what ontology are computer programs committed? (3) What explains the proliferation of programming languages and how do they come about? Taking the complementary perspectives software engineering and mathematical logic, we take invenprograms and related objects and conclude that the notions of abstraction and concretization take a central role in this investigation. Key words: Philosophy of computer science, software ontology, science of software design. Related terms: Mathematical logic, finite model theory, programming languages. (1 ) Corresponding author, address: Department of Computer Science, University of Essex Colchester, Essex CO4 3SQ, United Kingdom, phone: +44 (1206) 872677, fax: +44 (1206) 872788
Amnon H. Eden, Raymond Turner