From: Jim Newton
Subject: Re: what kind on programming is lisp?
Date: 
Message-ID: <38s5jqF5ov6baU1@individual.net>
is java really object oriented?  it is more of
a strictly typed language than object oriented
right?  or am i mistaken?

-jim

AnonymosX wrote:
> c - process oriented programming
> java - object oriented programming
> lisp - ?
> 

From: Pascal Costanza
Subject: Re: what kind on programming is lisp?
Date: 
Message-ID: <d0h8i4$phe$1@snic.vub.ac.be>
Jim Newton wrote:
> is java really object oriented?  it is more of
> a strictly typed language than object oriented
> right?  or am i mistaken?

I would agree with you that Java's static type system turns it almost 
into a non-OOP language, but Java is usually considered OOP. Check out 
the proceedings of the major OOP conferences of the last decade and 
estimate the percentage of papers focused on Java... :(


Pascal
From: John Thingstad
Subject: Re: what kind on programming is lisp?
Date: 
Message-ID: <opsm9sh8vzpqzri1@mjolner.upc.no>
On Fri, 04 Mar 2005 23:23:15 +0100, Jim Newton <·····@rdrop.com> wrote:

> is java really object oriented?  it is more of
> a strictly typed language than object oriented
> right?  or am i mistaken?
>
> -jim
>

I believe it is normal to distinguish between static OOP languages
and dynamic OOP. Yes, these systems idea of OOP are quite different.
Obviously the possibility of changing a class definition or reordering
a hierarchy go out the window when the classes aren't available at runtime.
So unlike human classes we can't categorize and adapt hierarchies
as we learn more. In a static library it is written in stone.
Not that this is much done in dynamic languages either.
Object orientation in a static language does, however, provide
encapsulation and inheritance.
Important also is polymorphism. (a result of inheritance)

class general { generic print () {} ... };
class special_1 : public general {... print ...};
class special_2 :public general {... print ...};

array gen of general..

func () { itterate cur on gen: cur->print().. };

This gets around many of the hurdles of static typing without sacrificeing
type safety.

(I have taken some liberties with the language to get the point better  
across.)
I mentioned earlier Norvig's discussion on software patterns.

http://norvig.com/design-patterns/ppframe.htm

Note in particular:
Design patterns in dynamic languages and
Design patterns in Dylan and Lisp

So object orientation in static languages tends to lead to far more  
patterns
and idioms. This leads to repetitious code. Of course a Java fan would  
probably
see this *sameness* as a virtue rather than a waste of time :)


-- 
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
From: Ulrich Hobelmann
Subject: Re: what kind on programming is lisp?
Date: 
Message-ID: <394sjmF5r4q3tU1@individual.net>
John Thingstad wrote:
> Important also is polymorphism. (a result of inheritance)

No, it's a result of subtyping (like Java interfaces).  Inheritance lets 
you import white-box code from a class that's typically (in OCaml IIRC 
it doesn't have to be) a supertype.  Java & Co mix these up, well...
From: John Thingstad
Subject: Re: what kind on programming is lisp?
Date: 
Message-ID: <opsnbi5kt8pqzri1@mjolner.upc.no>
On Mon, 07 Mar 2005 23:47:33 -0600, Ulrich Hobelmann <···········@web.de>  
wrote:

> John Thingstad wrote:
>> Important also is polymorphism. (a result of inheritance)
>
> No, it's a result of subtyping (like Java interfaces).  Inheritance lets  
> you import white-box code from a class that's typically (in OCaml IIRC  
> it doesn't have to be) a supertype.  Java & Co mix these up, well...

I suppose you are right. I was thinking more in terms of C++ than Java.

-- 
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/