Abstract
Tylman (Found Sci, 2017) has recently pointed out some striking conceptual and methodological analogies between philosophy and computer science. In this paper, I focus on one of Tylman’s most convincing cases, viz. the similarity between Plato’s theory of Ideas and the object-oriented programming (OOP) paradigm, and analyze it in some more detail. In particular, I argue that the (Neo)platonic doctrine of the Porphyrian tree corresponds to the fact that most object-oriented programming languages do not support multiple inheritance. This analysis further reinforces Tylman’s point regarding the conceptual continuity between classical metaphysical theorizing and contemporary computer science.
Similar content being viewed by others
Notes
The historical development of the Porphyrian tree is surprisingly similar to that of another logical diagram, viz. the square of opposition. The theory embodied by this diagram was first expounded by Aristotle, but the actual diagram was only constructed by a later commentator (Apuleius, 2nd century CE). It, too, was highly popular among medieval logicians and is nowadays still used in logic and philosophy, but also in various other disciplines, including linguistics and computer science (Parsons 2012; Smessaert and Demey 2014, 2015; Demey and Smessaert 2016, 2017).
For reasons of space, I will not go into the details of these various programming languages. However, it should be mentioned that some of these languages do support some ‘lightweight version’ of multiple inheritance. For example, in Java, a class is not allowed to inherit from multiple superclasses, but it is allowed to implement multiple interfaces (Gosling et al. 2015). Finally, there also exist languages that fully support multiple inheritance, such as C++, Python and Perl.
A similar issue arises in non-monotonic logic, where it is sometimes called the ‘Nixon diamond’ (Strasser and Antonelli 2016): consider the defeasible statements that Quakers are usually pacifists (cf. class B with one method) and that Republicans are usually not pacifists (cf. class C with a conflicting method). Given that Richard Nixon happens to be both a Quaker and a Republican (cf. class D inheriting from both B and C), it is not at all clear whether we should conclude that he is or that he is not a pacifist.
References
Archibald, J. D. (2014). Aristotle’s ladder, Darwin’s tree. The evolution of visual metaphors for biological order. New York, NY: Columbia University Press.
Barnes, J. (Ed.). (2003). Porphyry’s introduction. Translation and commentary. Oxford: Oxford University Press.
Blum, P. R. (2012). Studies on early modern Aristotelianism. Leiden: Brill.
Chisholm, R. M. (1989). On metaphysics. Minneapolis, MN: University of Minnesota Press.
Copenhaver, B. P., Normore, C. G., & Parsons, T. (Eds.). (2014). Peter of Spain, summaries of logic. Text, translation, introduction and notes. Oxford: Oxford University Press.
Demey, L. (2014). Believing in logic and philosophy. Ph.D. thesis, KU Leuven.
Demey, L., & Smessaert, H. (2016). Metalogical decorations of logical diagrams. Logica Universalis, 10, 233–292.
Demey, L., & Smessaert, H. (2017) Combinatorial bitstring semantics for arbitrary logical fragments. Journal of Philosophical Logic. doi:10.1007/s10992-017-9430-5.
Diestel, R. (2006). Graph theory. Heidelberg: Springer.
Emilsson, E. (2015). Porphyry. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.
Franklin, J. (1986). Aristotle on species variation. Philosophy, 61, 245–252.
Gosling, J., Joy, B., Steele, G., Bracha, G., & Buckley, A. (2015). The Java ® Language Specification, Java SE 8 Edition. Redwood City, CA: Oracle America.
Hacking, I. (2007). Trees of logic, trees of Porphyry. In J. L. Heilbron (Ed.), Advancements of learning: Essays in honour of Paolo Rossi (pp. 221–263). Florence: Olschki.
Joque, J. (2016). The invention of the object: Object orientation and the philosophical development of programming languages. Philosophy and Technology, 29, 335–356.
Kaczmarek, J. (2002). On the Porphyrian tree structure and an operation of determination. Bulletin of the Section of Logic, 31, 37–46.
Malayeri, D., & Aldrich, J. (2009). CZ: Multiple inheritance without diamonds. OOPSLA ’09 (pp. 21–40). New York, NY: ACM.
Martini, S. (2016a). Several types of types in programming languages. In F. Gadducci & M. Tavosanis (Eds.), History and philosophy of computing (HaPoC 2015) (pp. 216–227). Berlin: Springer.
Martini, S. (2016). Types in programming languages, between modelling, abstraction, and correctness. In A. Beckmann, L. Bienvenu, & N. Jonoska (Eds.), Pursuit of the Universal (Computing in Europe 2016) (pp. 164–169). Berlin: Springer.
Mitchell, J. C. (2004). Concepts in Programming Languages. Cambridge: Cambridge University Press.
Moktefi, A., & Shin, S. J. (2012). A history of logic diagrams. In D. M. Gabbay, F. J. Pelletier, & J. Woods (Eds.), Handbook of the History of Logic (Vol. 11, pp. 611–682)., Logic: A History of its Central Concepts Amsterdam: North-Holland.
Parsons, T. (2012). The traditional square of opposition. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.
Sakkinen, M. (1989). Disciplined inheritance. In S. Cook (Ed.), ECOOP ’89 (pp. 39–56). Cambridge: Cambridge University Press.
Seuren, P., & Jaspers, D. (2014). Logico-cognitive structure in the lexicon. Language, 90, 607–643.
Smessaert, H., & Demey, L. (2014). Logical geometries and information in the square of opposition. Journal of Logic, Language and Information, 23, 527–565.
Smessaert, H., & Demey, L. (2015). Béziau’s contributions to the logical geometry of modalities and quantifiers. In A. Koslow & A. Buchsbaum (Eds.), The road to universal logic (pp. 475–494). Basel: Springer.
Strasser, C., & Antonelli, G. A. (2016). Non-monotonic logic. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.
Studtmann, P. (2013). Aristotle’s Categories. In E. Zalta (Ed.), Stanford encyclopedia of philosophy. Stanford, CA: CSLI.
Thomasson, A. L. (2004). Methods of categorization. In A. C. Varzi & L. Vieu (Eds.), Formal ontology in information systems (pp. 3–16). Amsterdam: IOS Press.
Tylman, W. (2017). Computer science and philosophy: Did Plato foresee object-oriented programming? Foundations of Science. doi:10.1007/s10699-016-9506-7.
van Benthem, J. (2007). Logic in philosophy. In D. Jacquette (Ed.), Philosophy of Logic (pp. 65–99). Amsterdam: North-Holland.
Verboon, A. R. (2008). Einen alten Baum verpflanzt man nicht. Die Metapher des Porphyrianischen Baums im Mittelalter. In I. Reichle, S. Siegel, & A. Spelten (Eds.), Visuelle modelle (pp. 251–268). Fink: Munich.
Verboon, A.R. (2010) Lines of thought: Diagrammatic representation and the scientific texts of the Arts faculty, 1200–1500. PhD thesis, Leiden University
Verboon, A. R. (2014). The medieval tree of Porphyry: An organic structure of logic. In P. Salonius & A. Worm (Eds.), The tree: Symbol, allegory, and mnemonic device in medieval art and thought (pp. 95–116). Turnhout: Brepols.
Acknowledgements
I would like to thank Hans Smessaert, Margaux Smets, Wouter Termont, Leander Vignero and two anonymous referees for their helpful feedback on an earlier version of this paper. The two issues discussed in Sect. 5 were first raised by Vignero and Termont, respectively. The ideas presented in this paper were first proposed in one of the additional theses of my PhD dissertation (Demey 2014). My research is financially supported by a Postdoctoral Fellowship of the Research Foundation–Flanders (FWO).
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Demey, L. The Porphyrian Tree and Multiple Inheritance: A Rejoinder to Tylman on Computer Science and Philosophy. Found Sci 23, 173–180 (2018). https://doi.org/10.1007/s10699-017-9531-1
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10699-017-9531-1