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?

  • 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 '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 '19 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 '19 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 '19 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 '19 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. – Jonathon Anderson Jan 23 '19 at 1:24
  • I agree with @JonathonAnderson on this one. Type, Prototype, Entity, Definition, Blueprint, Declaration, Structure, Element ... all would have been better names in my opinion. - Class has the advantage of being short though, and perhaps type had already some other meaning. And I guess more creative words like Pojo, Bean, Def, Struct, Drop were too far-fetched at that time. – bvdb Aug 21 '20 at 21:37

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