Search code examples
programming-languagescomputer-sciencedefinitionsemantics

Simple definition of "semantics" as it is commonly used in relation to programming languages/APIs?


It occurred to me today that although I've adopted and don't infrequently use the term "semantics" when referring to language elements and naming conventions, I don't have any sense of a formal definition.

My attempt to find a formal definition in the programming domain made my eyes glaze over.

I have a sense of its meaning from the contexts in which I've encountered it, and from its more common usage with respect to linguistics, and I typically use the term to refer to the meaning or expressiveness of the language element, or the fidelity of nomenclature to the intent, behaviour, or function of that which it names.

This definition, though, is my own idea. I was an Anthropology/English major and have never taken a Computer Science course. Is this taught in CS?

Is there a more accurate definition that can be boiled down to a statement or two, rather than an exhaustive and exhausting article?


Solution

  • A definition cribbed from here is The semantics of a programming language describe the relationship between the syntax and the model of computation.. This is pretty much exactly what your inferred definition was. The sticking point, and what made your eyes glaze over is precisely defining the model of computation.

    There are many different formal models of computation and each leads to a different form of semantics. Operational Semantics is probably closest to the way most people informally model the semantics, having each fragment of code run through an interpreter and changing the state of an abstract routine. This approach breaks down in many models where concurrency or nondeterminism, etc., so there are other sematics better suited to these situations.