On Mon, 2007-04-16 at 22:55 -0400, Jacques Carette wrote:
> I should have mentioned LabVIEW too (don't know about Max/MSP).  It 
> appears that Chris and I are completely on the same page on this one.

Actually Simula was probably the pre-cursor of a lot of this:
It was around in 1973 on Syd Uni's Cyber .. funny they didn't
even have an Algol compiler, just Compass (assembler), Fortran
and Simula. Even C didn't exist then -- the first PDP machines
provided BCPL.

> Felix seems to have all the right 'stuff' (including axioms, etc) in 
> which to specify high-level components (by various means), and then 
> connect then together in a typed way.  Plus, it can do it in a 
> control-agnostic fashion as well.  That's where things get really cool.

The control agnostic (I called it control neutral) is vital IMHO,
because it allow you to remodel either as a client or server
(master or slave .. whatever).

Users -- particularly ones with imperative programming 
backgrounds -- normally want want to be masters. People with
more functional programming experience want to be slaves
more often (declarative programming etc) because they know
it is easier to work with slaves: compiler optimisations,
proof of correctness etc.

Any 'component' model should allow components to be used
easily in BOTH styles .. as well as development of
new neutral components.

I expect the category theorists studying coalgebras to
show there are some limits on using self-dual (control
neutral) structures.

Yep. Modularity and abstraction have limits. But we
ordinary programmers already know this: what we need
is a way to shift the boundaries between specific
and abstract around more easily .. i.e. without
continually having to rewrite code to do it.

You should one all note one UGLY problem: because Felix uses
the C/C++ object model, the only way to control inverts
with functions (as opposed to procedures) is to use pthreads.

If Felix were to use a CPS based model for functions instead
this problem would go away. AFAIK Mlton can do it because
they use a very clever mmap() based stack of their own
for functions, which allow high speed context switching.

The current Felix design will never be perfect from
this viewpoint. Actually Windows has fibres already.
Posix can also do non-premptive stack swapping
(context swapping function, forget the name) .. but
it isn't clear how this plays with C++, particularly
exception handling.

I'm seriously tempted to make a new version which generates
native code to work around this problem: the more libraries
in C/C++ I look at the less value I see in them.


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

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to