I'm referring to being able to derive from and change the behavior of the "basic" types (int,float, etc.). This is possible in, e.g., Smalltallk because *everything* is an object.
C++ makes a clear distinction between them. So does Java for that matter, but at least Java provides [separate] object versions of the basic types.
Sure you can ... just hold it at the end of your nose 8-)
You clipped a lot of what I said. As I stated before, I believe a good designer naturally uses both models because our thinking processes naturally do. Trying to rigorously apply just one design method is, IMO, a mistake which leads to convoluted solutions and therefore directly to buggy software. I believe the problem should be solved in the most natural way of thinking about it - sometimes that is OO and sometimes it is functional.
My definition of support is that the language can express the abstraction within its syntax and using its semantics. BASIC's constructs cannot model OO abstractions ... C's can. Assembler can model any abstraction and is not relevent to this discussion.
I will agree that the problem is a confluence, but I don't believe the statement that it is solely a mistake of the programmer. In order to be a "mistake", the programmer must have been aware of the problem and still chosen to use the problematic feature.
I'm had no preconceptions about what you do. I also use C++, instead of C or asm, for embedded programming whenever possible. But I recognize its limitations and don't try to hammer screws with it. I also recognize the difference between language and implementation, however the implementation is what ultimately matters.
I'm a big fan of interpreted (or incrementally compiled) languages that can be compiled to produce the final application. Development of complicated code is, IMO, made much easier when you can test your idea immediately upon coding it. Having to wait out the typical compile and link cycle to test something too easily breaks the train of thought (the phone rings, someone knocks on the door, etc.). Embedded programming adds "download to target/simulator" and makes the process even longer. I believe writing correct software is easier when you can focus on solving one problem at a time rather than trying to cover several (or several dozen) issues in a single build because the turnaround on a new build is so long.
I don't get to actually write code that way ... but I can dream.
I am concerned by long compile times (which seem to get longer with every new compiler release). But in the end I am far more concerned about the performance of the resulting executable than I am about how long it took to produce it. To that end, I want all the analysis and optimization the compiler can deliver.
The topic was "C++ in embedded systems".
Who mentioned performance problems? Anyway I agree that C++ has equivalent performance to C for most programs. I also agree that a problem that is a good fit to the OO model can have a smaller code footprint using C++ than using C. However I think this saving is partly illusory - the runtime data footprint is larger with C++ and I believe equivalent programs use approximately the same resources in total. YMMV.
George