This paper investigates intensional differences between programming languages—understood as differences in how computational processes are expressed, structured, and specified rather than merely in what they compute. While such differences have been studied in classical models of computation, they remain underexplored in the context of programming languages. Yet, programming languages undeniably compute, and any account of what “computing” means must include the ways in which they do so. The paper first clarifies the extensional/intensional distinction and introduces a methodological framework to study this distinction based on Carnapian explication. It then follows an idealized programming workflow, which I structure according to the Carnapian framework, to identify where and how intensional differences arise—including during problem specification, algorithm design, language choice, data representation, and physical implementation. The final part situates intensionality within the broader epistemology of programming practice, examining how it is shaped by type-theoretic assumptions, social and historical context, and the implications of bounded outcomes. Throughout, the paper examines both the “nature” (inherent features of computable functions) and “nurture” (human factors influencing programming language design and use) of intensional differences.
Paula Quinon (2025) studied this question.