On Thu, 2007-04-26 at 09:47 -0700, James Dennett wrote:

> 
> All potentially interesting, but what it needs, IMO, is detailed
> examples that motivate why a C++ user would want to read on, 
> and explanations of why Felix has chosen the approaches it
> has.

This is hard for me!

My personal motivation is:

(a) I learned Pascal first, my main tool was Borland Pascal
    which was and perhaps still is the very best Integrated
    Language Development System ever created

(b) When C++ got multiple inheritance, I grabbed the ARM
    and learned C++ (I had done a bit of C before that,
    but never seriously)

(c) At the time I was doing my pure maths degree at QU,
    and the first thing I tried to encode was an abstract
    group and failed -- it cannot be done by OO due to
    the covariance problem.

(d) In the interest of getting programmers a better language,
    and recognizing the need to be pragmatic too, I joined
    the C++ committee. I worked for over a decade on it,
    spending most of my time on committee matters instead
    of my business (which failed, partly because of this).

(e) I achieved almost nothing tangible: I helped delay
    standardisation (the document was downright disgusting),
    I insisted on exception safe pointers which lead to the
    autoptr fiasco ..

(f) .. and basically I learned that most of the committee
    didn't have the faintest idea about language design ..
    unfortunately including Bjarne. To his credit Bjarne
    was a master politician, and he has good intuition,
    but no concept of the important role of theory and
    modelling in language design.

(g) In the end I quit, believing I would get further
    convincing people by *showing* them than trying
    to teach them.

(i) but 5 years before I quit .. I discovered a language
    that could already do almost everything I wanted,
    namely Ocaml.

(j) The one solid and crucial thing I learned from Bjarne
    and the experience in general was the importance and
    role of compatibility in language design, and how
    politics -- that is, people -- are an essential ingredient
    in that consideration

(k) But I would want Felix to include a fair share of
    academics and theoreticians as well as pragmatists and coders --
    something I learned from the Ocaml experience

given all of that personal history, Felix tries to be BOTH
a good academic language and an entirely pragmatic upgrade
from C++, with an upgrade path something like:

        C --> C++ --> Felix --> (Oca)ML --> Haskell

illustrating where I see it placed. Note that Felix today
has considerable features NOT found in Ocaml, for example
support for dynamic loading of shared libraries, 
shared memory multi-processing, fibres (fthreads),
a simple integrated development environment and build system
(the flx script + flx_pkgconfig) and quite a bit of 
'scripting language' features like string interpolation ..
heck, felix actually has *recursion* which Ocaml hardly
supports at all! (and it's a FPL FFS!!)

.. all whilst retaining, or even -- hehe! -- surpassing --
the performance of C/C++.

Felix tries to retain enough 'flavour' of C++ to make it
easy to learn for C++ programmers. At the same time, it fixes
a lot of the design problems in C and C++, and provides
many of the features a C++ programmer either wants --
or SHOULD be wanting if they knew any theory or had any
experience with advanced languages.

However the C++ community has repeatedly been attacked by
everyone else, including even the C community and so they're
very defensive .. and my personal style is aggressive,
abrasive and annoying at best .. I am just not the right
person to try to talk C++ people into using Felix.

Just try to tell one of the people that like 'meta-programming'
that it is a load of rubbish and that templates are one of 
the things Felix deliberately replaces (with parametric
polymorphism and typeclasses) .. well of course I'm going
to get off on the wrong foot, trying to explain what's
wrong with templates and why C++ 'meta-programming' is 
a complete and utter joke.

It's true .. but it requires a diplomat such as a 
professional teacher to actually explain it without
getting people offside.

Someone needs to explain, for example, how utterly and 
completely the lack of type recursion condemns templates.

Felix is, after all, not only *intended* to let C++
programmers move on, without losing the good features
of C++ (including performance and access to extensive
libraries) .. the design process is intended to be public
and allow working programmers to actually contribute
effectively (much easier to svn commit than to effect
changes via a paper to the ISO C++ committee .. ;(


-- 
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