quote:
Well basically if OO were just a minor syntactic extension to a procedural language (i.e. a simple addition of classes/objects as enriched data structures) then I wouldn't really have a problem with it. But taking the idea of objects and then orienting the whole programming approach around it doesn't really make sense.
That
is pretty much how Python works. Ruby is the fully OO language where everything is an object. You can use it to program procedurally, or use OO, or make a hybrid-type program, just as you would if using C++. Furthermore, Python is probably one of the best ways to start. It's easy to learn, it's interpreted so that you get to see all the mistakes at once (like BASIC), and isn't just something you learn with before moving onto something better.
quote:
Python's class mechanism adds classes to the language with a minimum of new syntax and semantics. It is a mixture of the class mechanisms found in C++ and Modula-3. As is true for modules, classes in Python do not put an absolute barrier between definition and user, but rather rely on the politeness of the user not to ``break into the definition.'' The most important features of classes are retained with full power, however: the class inheritance mechanism allows multiple base classes, a derived class can override any methods of its base class or classes, a method can call the method of a base class with the same name. Objects can contain an arbitrary amount of private data.
In C++ terminology, all class members (including the data members) are public, and all member functions are virtual. There are no special constructors or destructors. As in Modula-3, there are no shorthands for referencing the object's members from its methods: the method function is declared with an explicit first argument representing the object, which is provided implicitly by the call. As in Smalltalk, classes themselves are objects, albeit in the wider sense of the word: in Python, all data types are objects. This provides semantics for importing and renaming. But, just like in C++ or Modula-3, built-in types cannot be used as base classes for extension by the user. Also, like in C++ but unlike in Modula-3, most built-in operators with special syntax (arithmetic operators, subscripting etc.) can be redefined for class instances.
____________________________________
Live Free or Die: Linux
If Software can be free, why can't dolphins?
[ May 23, 2004: Message edited by: jtpenrod ]