Version française
Home     About     Download     Resources     Contact us    
Browse thread
Class/prototype-based OO
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: skaller <skaller@u...>
Subject: Re: [Caml-list] Class/prototype-based OO
On Thu, 2006-08-31 at 15:36 +0900, Jacques Garrigue wrote:
> From: skaller <skaller@users.sourceforge.net>
 
> > Try to tell someone in the C++ community that C++ is severely 
> > constrained because it doesn't have first class lexically
> > scoped functions, variants, or pattern matching .. even
> > if you explain what they are they'll just say "Oh, we can
> > do that this way .. but don't have much call for it".
> 
> Here you have to read between lines :-)

Spying between the cracks between the boards whilst ROFL?

> I am a user of the debugger, and I also use objects at times, so I
> have a personal interest in having better support for objects in the
> debugger, through RTTI for instance. But this would be quite a bit of
> work, 

.. especially in the native code system ..

> so this is difficult to justify if I'm the only user. Hence the
> above wording...

> If you think of it, debugging contains all the difficulties of RTTI,
> but without the justification for _not_ having it, that is, you clearly
> want to break abstraction when debugging. 

Good point.

> So that to do things
> properly, we would even want to now dynamic type information about
> polymorphic types, which is even harder than for objects.

It is my guess (and only a guess!) that there is a balance
between run time checks and compile time checks.

Typing is always an abbreviation (abstraction) and sometimes
stronger or weaker than desired: for example array bounds
checks at run time, because the type system doesn't cope
with array sizes as part of the type.

All compilers do this. Some delegate a lot more
to run time than others eg Java: I pick Java because
contrary to popular opinion it is basically a dynamically
typed language, with a bit of static typing thrown in
for a few scalar types :)

C++ tends to err the other way: it is basically
statically typed, with exceptions and casts using RTTI.

Plus of course in *all* cases programmers spend a lot
of time implementing their own application specific kind
of run time typing .. because in some sense that is what
a program does: there is no clear boundary between
the concept of 'type' and 'data'.

The real issue here is surely how to do dynamic typing
systematically and coherently *within* the confines
of static typing regime.

The most interesting recent example I've seen of this
is in Alain's XDuce stuff, where 'regular expression'
actually becomes a type not a data structure.

In this case, programmer want so often to play with
XML and keep repeating the same run time coding patterns,
it is worthwhile enriching their environment with a typing
regime based on those patterns. This is a very beautiful
piece of work!

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net