On Fri, 2007-02-16 at 14:49 +0100, Ramon Diaz-Uriarte wrote: > On 2/16/07, skaller <[EMAIL PROTECTED]> wrote:
> > Hehe .. and Felix started out as a competitor to Erlang > > in exactly the same application domain :) > Uhmm. This is _most_ interesting. I see no mention of Erlang on the > main page, nor on the docs I've been browsing. It takes time and effort to write good docs -- much less to spout off in an email. I was employed by a major Australian telco software vendor to solve a productivity problem they were having. Their key application was a Service Control Point (SCP) program. An SCP is a computer which is connected to an analogue switch to provide business services such as Freecall, Conferencing, Pre-Paid Phone (the big money spinner), and other such things that a dumb switch cannot handle. The SCP basically intervenes in the switch call handling cycle on the one side, and accesses a database on the other. There is an Euro Standard for how to do this, amenable to construction of the services with graphical building blocks, much like a flow chart: the GUI is a major selling point for the software "Look, you can design your own services!". Unfortunately the building blocks are primitive and the system was designed by engineers with no understanding of software construction .. there's no way of building real services within the Standard. The company had an implementation of the Standard using C++ classes .. which had to be painfully and manually hooked together to implement a service. Pre-paid phone took 3 people over a year to build. Now before I go on, a key feature of the system is that hundreds of thousands of calls can be handled simultaneously, roughly by keeping track of where in the flow chart you're up to: a program counter. So context switch is very fast. But some services require things like finding an optimal route for a call to calculate when a Pre-paid customer is out of cash, and the call has to be disconnected: and given various timezones, network topologies, and plethora of 'products' telcos like to offer, this is fairly difficult recursive exploration problem: WAY too hard for the brain dead standardised model to handle. So they wanted a LANGUAGE which could be used to implement the business rules efficiently, but which could also support hundreds of thousands of concurrent phone calls (threads). And, it had to sit on top of their 2 million lines of C++ code which handled networking, events, management, reporting etc (they used ACE, ACN1.1 compiler and other such stuff). Ideally they'd have just used C. The problem is that the only way to run lots of threads in C is to use stack swapping.. and it is not only not certain to work in C++ due to exception handling etc, it is also quite slow and horribly resource hungry because stacks are linear and you have to allocate enough (address) space for their maximum usage. So I wrote a program in Ocaml (GASP! Functional programming in industry) which translated a basic language into C++ code, but which *control inverted* the code so that whilst you wrote algorithmic master code (read and write channels), the translated code was actually event driven. [The company fell over in the .com crash .. ] I have redeveloped those ideas into a full scale language, always preserving the C++ compatibility and high performance user space threading capabilities which were the original requirements. Today, I don't really seen Felix as a competitor to Erlang: the models are quite different: Erlang is purely functional, does message passing, is process oriented, and dynamically typed, whereas Felix is imperative, shared memory, statically typed. It's more like they're complementary than competitive. Felix would be used to create high performance building blocks that Erlang would manage at a higher level. But then, I'm not an Erlang programmer .. but it would be cool to have a paying contract to actually do some of this: Ericsson would make a cool business partner .. :) -- John Skaller <skaller at users dot sf dot net> Felix, successor to C++: http://felix.sf.net ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Felix-language mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/felix-language
