Bjarne, C++ is without a doubt the masterwork of language design, but we just aren't up to it. Mastering C++ in all its beauty is simply beyond 99% of the programmers out there, even among those who have mastered the pointerish issues of C and the OO issues of Smalltalk independently. Its just too hard.
For you maybe, but those of us who are not trying to write C and Smalltalk programs in C++ really like it. Powerful and flexible often means that it takes a while to get used to it. Generally it is also worth the effort.
1) Simplify syntax.
How? What part?
2) Eliminate type casting. Require user specified conversion functions (standard types included with standard library, of course).
This is for C compatibility. If you don't like it, don't use it.:-)
3) Eliminate pointer arithmetic.
There are some uses for this in the standard library. If you don't like it, don't use it.:-)
4) Range types.
Might be slightly useful.
5) Standard garbage collection inclusion.
I believe the committee didn't feel that garbage collection was ready for standardization. It is also not wanted by some users, like real-time embedded systems.
If you really need one, you can add a 3rd party collector.
6) Persistant storage. Preferable by a directly included B+Tree database.
This would *require* external storage for all implementations. Do you want a hard disk in your VCR?
7) B+Tree database as a part of the standard library.
The problem is that the standard library is *required* for every compliant implementation. You can't require database support for embedded controllers...
8) Foreign Function Interfaces (not just to C, but to, O, Fortran, Python, Ruby, OCaML, Ada, Eiffel... all the standard suspects).
See 7!
Bjarne, C++ is without a doubt the masterwork of language design, but we just aren't up to it. Mastering C++ in all its beauty is simply beyond 99% of the programmers out there, even among those who have mastered the pointerish issues of C and the OO issues of Smalltalk independently. Its just too hard.
:-)
For you maybe, but those of us who are not trying to write C and Smalltalk programs in C++ really like it. Powerful and flexible often means that it takes a while to get used to it. Generally it is also worth the effort.
Keep up the good work Bjarne!
Ok, so have a look at Bjarne Stroustrups paper "Learning Standard C++ as a new language"
Learning
where he shows some cases where C++ is *way* faster than plain old C.
1) Simplify syntax. How? What part? 2) Eliminate type casting. Require user specified conversion functions (standard types included with standard library, of course). This is for C compatibility. If you don't like it, don't use it. :-)
3) Eliminate pointer arithmetic.
There are some uses for this in the standard library. If you don't like it, don't use it. :-)
4) Range types.
Might be slightly useful.
5) Standard garbage collection inclusion.
I believe the committee didn't feel that garbage collection was ready for standardization. It is also not wanted by some users, like real-time embedded systems.
If you really need one, you can add a 3rd party collector.
6) Persistant storage. Preferable by a directly included B+Tree database.
This would *require* external storage for all implementations. Do you want a hard disk in your VCR?
7) B+Tree database as a part of the standard library.
The problem is that the standard library is *required* for every compliant implementation. You can't require database support for embedded controllers...
8) Foreign Function Interfaces (not just to C, but to, O, Fortran, Python, Ruby, OCaML, Ada, Eiffel ... all the standard suspects).
See 7!