In my opinion, C++ is one of the most expensive programming languages out there in terms of development costs, debugging, maintaining, etc. One of the many problems in the industry is the belief that this cost can be reduced to practically nothing through the use of one or more "process(es)" and then they are surprised when it doesn't work. I have not seen anyone actually look at the tools that are being used as a way to reduce the expense of development, even though you gain the biggest improvement by moving away from C++ and to Eiffel. And, of course, you can't move the decision makers to this conclusion, because they are typically not technically savvy, so they only base their decisions on what is "popular". And C++ is popular, since it has 8 million books on the matter. Of course, these books mostly try to help work around the problems with C++...:-).
In the case of Java, I'll say this: "Java was written by people that knew that C++ had problems...they just did not understand what the problems were."
Eiffel, on the other hand, is the best programming language out there...and I've studied a lot of them. Out of the list that you gave, the only one that I haven't written stuff in (some was a long time ago, though) is OCaML, which looks like a version of ML. I disagree with the comments about it being slow...although this might be because I'm using the latest stuff, but it hasn't had any noticable problems with that.
Anyway, I'll say this about the original topic. Teach Eiffel! It will help the students learn the concepts of OO Programming, without the garbage that C++ throws in. If the students then have to use C++, it will be painful, but doable. I haven't seen too many people that have really understood the OO approach through learning C++. Remember that a programming language is really a tool. Once the students have learn the concepts, moving from tool to tool should not be that hard (I know that that is not always the case).
Hopefully this isn't too late...but I just found out about this list.
Gary M. Smithrud
|
|