Please read carefully the logical responses to your statements before
making another hasty judgement. It is my intent to be courteous. I
apologies if the choice of words imply otherwise. Thank you.
C++ is the most complicated language. Improvements need more than a good argument.
Is it the language, or the libraries for various platforms that is the
most complicated? C++ does have several issues that Z++ systematically
resolves, including static class members (I will generally point one or
two items. You need to read some of the many white papers at
www.zhmicro.com to get a better idea of the improvements).
Z++ reduces the complexity of third-party and other libraries by
several orders of magnitude. You can only judge after at least looking
at some of the example programs. You will be surprised with the degree
of reduction in complexity.
However, linguistic extensions of Z++, such as tasks for
object-oriented multi-threading, as well as the simplicity of creating
platform independent global threads, and indeed a lot more, is what
reduces the complexity. The lack of such linguistic constructs and
relying on system calls and libraries is the bulk of complexity, not
the size of the language. I am not familiar with any Eiffel library to
make a judgement.
C++ as better Eiffel? No.
Eiffel is a good language. However, the invariants and contracts of Z++
are not a copy of Eiffel. In particular the flavor of contracts is more
object-oriented and in Z++ they are called Constraints, not contracts.
By the way, Eiffel differs from C++ not because of Invariants. It is a
fully object-oriented language lacking the notion of global space with
many defending articles. You should also read my view on that in the
bloggers posted at the site.
Extending enumerations. What for?
Just because Eiffel does not support something it does not make it
unnecessary. The what for is answered in one of the white papers.
Namespaces with private and public sections.
Better: "exported" and not-exported symbols (like in Win-DLL).
Well. You must have been tired. Z++ is the language for platform free
component oriented software development, but that is not related to
namespaces at all. Any program in Z++ can execute as standalone, or
simply used as (universal DLL) without any of those export/import mess.
The export that you are mentioning, when taken in context of namespaces
of Z++, maps to the public section of a namespace. By the way, in Z++
namespaces can be derived from one another.
Maybe a threading library on top of platform primitives.
What are platform primitives? Why a set of primitives and then a set of
libraries? What is wrong with a simple linguistic universal solution
that conforms to the overall design of the base language, in this case
C++? It would be nice to know what you have in mind, indeed. The
statement is too vague.
Platform independent serialization. Not nececcary, IMO.
The point here is that, you can simply send and receive programming
objects in binary the same way you do input and output in C++. You
simply overload operators << and >> for your object, just as simply as
you do for stdin and stdout. So, what do you mean not necessary. How
did you judge that, if I may ask?
At the end you are listing several languages and making a correct
comment "It is easier to invent new languages". The whole point is that
Z++ is a superset of C++, and is not a new language. Relatively
speaking, Eiffel is a new language (although goes back to early
eighties).
I also started in early eighties, as a mathematician (PhD) and my first
attempt was a form of BASIC in 1984. It was successful for its time but
I contiued my research until 1989 when I decided to go with C++. I
presented Z++ in 1993 as my proposal for second PhD in Computer
Science, and completed the prototype in 1996. Z++ is not an invented
language. It has gone through years of research and refinement. The
main point is that, enforcing a new language (including Eiffel and ADA)
is like a conquerer forcing invaded countries to speak their language.
You should read my article on Evolution and the reasons for taking the
path C, C++ and Z++.