An Object-oriented programming language is one that allows or encourages, to some degree, object-oriented programming methods. See object-oriented programming for details about those methods.
Though Simula (1967), a language created for making simulation programs, was probably the first language to have the primary features of an object-oriented language, Smalltalk is arguably the canonical example, and the one with which much of the theory of object-oriented programming was developed.
These languages include "pure" object-oriented languages such as Smalltalk and Ruby, which were designed specifically to facilitate--even enforce--object-oriented methods; languages such as Java, Eiffel, and Python, which are primarily designed for object-oriented programming but have some procedural elements; and languages such as C++ and Perl[?], which are historically procedural languages that have been extended with some object-oriented features.
Some languages include abstract data type support, but not all of the features of object orientation. These are sometimes called object-based languages. PHP 4, for example, includes no provisions for inheritance or polymorphism, but does allow for a concept of "class", and thus enables the programmer to use unenforced versions of abstraction and encapsulation. This is often useful--inheritance and polymorphism are usually used to reduce code bloat[?], but abstraction and encapsulation are used to increase code clarity, quite independent of the other two.
wikipedia.org dumped 2003-03-17 with terodump