Class based JavaScript or not?

About a week ago, I reblogged a paper by Antero Taivalsaari under the title of Classes Versus Prototypes: Some Philosophical and Historical Observations. This was written in late 1997 and still has great relevance to programmers today. It has important implications for prototype languages, such as JavaScript, and the push to make these more class based (please read on).

Taivalsaari’s paper highlights that the class-based worldview (programmatic or otherwise) is Aristolean. Aristotle’s class-based worldview had two major flaws:

  1. He made the assumption that there is a universal taxonomy; and
  2. The “class” (perfect type) is more real than the “instance” (the concrete example of the type).

Both of these assumptions were challenged in later Wittgenstein’s work. Despite that much of what the later Wittgenstein wrote did not make much sense, it is surprising to find, in hisĀ Philosophical Investigations, an explanation of how nuanced the Aristolean picture is when he considers the meaning and definition of “game”. Due to these nuisances, Wittgenstein ended-up to opt for the idea of family resemblances or prototypes.

Taivalsaari claims that Aristotle is the conceptual father of class-based object-oriented programming, whereas the work of Wittgenstein has served as an inspiration for the alternative prototype-based approach. Given this, Taivalsaari argues that class-based object-oriented programming suffers the same defects as the Aristolean worldview. Furthermore, many programmers are unaware of this.

So, if the class-based worldview is more flawed than the one of prototypes then when we consider the arguments to make or to adapt JavaScript to be more class based, should we tread carefully?