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