Could it also have made sense to call it a "Form", as in the Platonic sense of the ideal form that represents the thing which earthly objects strive to emulate?

closed as primarily opinion-based by Andres F., Greg Burghardt, Philip Kendall, Bart van Ingen Schenau, gnat Jan 21 at 12:22

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    Can you clarify and narrow your question? It is not quite clear to me, which concrete software engineering problem you are having. If you simply want to know why Ole-Johan Dahl and Kristen Nygaard chose the term "class", you are out of luck, since they are the only ones who can tell you that, and both died in 2002. And yes, you can call it a whole lot of different things if you want. E.g. Beta, Simula's successor, unifies classes and procedures into one concept, called pattern. The Scala Language Specification calls the union of classes and traits templates. – Jörg W Mittag Jan 19 at 23:46
  • An abstract data type (ADT) is not a class in the sense of object oriented programming. The inverse may be true. Are you asking why OOP "classes" were named so? – Andres F. Jan 20 at 0:05
  • 1
    Aside from the reasons related to CS history (the fact that some people at some point in the history of programming language development choose this name), in math, there are different words used to name sets of objects, often with associated additional meaning, to indicate that these sets have certain properties - e.g., "collection", "family", "class", "type". Somewhere "under the hood", they all really mean "set" - and in some sense, a class, as used in programming, is abstract description of all possible objects in that class. In other words, it demarcates a certain set of objects. – Filip Milovanović Jan 20 at 11:12
  • BTW, in functional programming, in Haskell, there's a concept called type class, which essentially allows you to define a set of types by using a type parameter (again, at the most fundamental level, "type class".just means "a set of types" - with the exact meaning being further refined by the intricacies of the language and conceptual considerations). – Filip Milovanović Jan 20 at 11:23
  • The problem I see with "form" is that it's already used for the computerised equivalent of a piece of paper with boxes for you to enter data. – Simon B Jan 21 at 10:49

Just did some googling and it seems the terms were invented by Ole-Johan Dahl and Kristen Nygaard for their Simula programming language

We chose the terms “class” and “objects” of classes for our new Simula. The notion of subclass was especially appealing to us, since we had seen many cases of objects belonging to different classes having common properties.


The main impact of Simula 67 has turned out to be the very wide acceptance of many of its basic concepts: objects, but usually without own actions, classes, inheritance, and virtuals, often the default or only way of binding “methods’’ (as well as pointers and dynamic object generation).



Because 'class' is a great choice for the concept?

"A set or category of things having some property or attribute in common and differentiated from others by kind, type, or quality."


  • I don't think this is actually a good analogue to what we do when programming. The construct doesn't lay out a bunch of things that will just have some property in common. It defines what each thing will emulate when we bring it in to existence. – NonSecwitter Jan 23 at 1:24

Not the answer you're looking for? Browse other questions tagged or ask your own question.