On 21/11/2012, at 8:21 AM, Dobes Vandermeer wrote:

> Ah right, the closures would have to use a uniform calling style, no way 
> around that.

As you're aware from previous discussions, Felix makes some
uncomfortable compromises, including allowing uninitialised variables,
using the machine stack, and other stuff, in order to maintain some
semblance of "compatibility" with C/C++.

Some of the compromises are historical, some are just guesses that
had consequences which are much uglier than expected, and some
can be fixed if sufficient resources are thrown at them.

Without actual users writing actual code there is no way to
weigh the actual costs and benefits -- and very little incentive
to allocate resources.

At the moment, I am so impressed with the simplifications that streams/iterators
have made, I look for something else that can also provide similar
improvement. By far the least understood and used feature of the language
is the one it was actually designed for: synchronous threads.

I know from experience that the low level primitives are very
hard to use right. Machine I constructed with them don't work
unless everything is started up and connected in exactly
the right order (otherwise you get a deadlock suicide),
and there's a lot of housekeeping to share about the schannels.

So in a similar way the "java like objects and interfaces" leverages
simple primitives like records and closures and a bit of syntax
to provide a new high power subsystem, I'd like to find a nice
DSSL that can be implemented with threads/channels.

Streams/iterators actually use continuations now, but they're
not using schannels. Yielding generators are much weaker
than channels -- but this weakness of semantics is also a 
sufficient simplification that the system fits easily with the
usual subroutine call mechanism and "for v in iterator" is
a very simple syntax extension which just provides some
minor cleanup.

I have only two use cases for threads/channels. One is a too
simple: the webserver. The other is broken and hard to share:
the SDL examples. SDL is no longer supported by the developers.
It also failed to provide the consistency really required.

Still, using synchronous channels to make some simple examples
work demonstrated just how powerful the "chip" paradigm really is.
Parts of games that are normally coupled in code were easily
separated using this technology.

One use case I think about is generalised parsing, i.e. a parser
which, when there are alternatives, launches a fibre to explore
each alternative. But that may need broadcast which schannel
doesn't support .. hmm ...

Anyhow what is needed now are developers who can see the
potential of the system and stick with development long enough
to realise goals. The system is highly flexible, maybe too much
for the average programmer: there isn't even a fixed "language"
(other than the C++ on which the run time is based).

--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to