{'fraction_non_alphanumeric': 0.023696682464454975, 'fraction_numerical': 0.004739336492890996, 'mean_word_length': 5.604166666666667, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Problems in the ontology of computer programs

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 inventory of programs and related objects and conclude that the notions of abstraction and concretization take a central role in this investigation.