|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: C or C++
Quote:
|
|
#2
|
||||
|
||||
|
Re: C or C++
I think most of us would agree that we would rather have the flexibility and added features of C++, particularly object oriented-ness.
The problem with C++ is that along with its added features comes added bloat and inefficiency. Unless the architecture and processing power were SUBSTANTIALLY and unnecessarily upgraded, all of the people who keep complaining that C is primitive would be complaining that their code wouldn't run if we upgraded to C++. Memory allocation/deallocation is no small task, especially when handled in software. C++ is good for PCs where functionality is a greater priority over efficiency and there is an abundance of computational power, but not so great for our application. In industry, C is not considered outdated, it is the standard in the world of embedded programming and for good reason. C is sleek and slim. Heated seats, radios and air conditioning are good to have but race cars don't have them and do just fine without them. Our robots, like race cars are designed minimalistically. There is nothing on a FIRST robot that is not absolutely necessary and that goes for code too. Any problem that can be solved in C++ can be solved in C. The solution may not be as coder friendly, but chances are it will be smaller and take fewer processor cycles to execute. Last edited by Rickertsen2 : 14-11-2006 at 21:02. |
|
#3
|
|||||
|
|||||
|
Re: C or C++
Quote:
Quote:
![]() |
|
#4
|
|||||
|
|||||
|
Re: C or C++
Quote:
|
|
#5
|
|||||
|
|||||
|
Re: C or C++
Quote:
Modular programming is obviously a good thing, but I don't really see a good use for classes and inheritance and polymorphism and such. |
|
#6
|
|||
|
|||
|
Re: C or C++
It's amazing the misconceptions that have been posted here about the differences between C and C++. C++ code doesn't have to be bloated compared to equivalent C code. When using the advanced features you do have to know what you're doing if you don't want to pay a size or performance penalty.
I used C for years and then moved to C++. Moving back to C was an extreme shock. Having to jump through hoops to do reasonable encapsulation and using funky naming conventions to keep the code organized and readable is a roaring pain. The lack of proper const types is inhibiting. Some here seem to think that using C++ entails a lot of new and free calls to create and destroy objects. If your C code isn't using a lot of malloc and free calls, there will be no difference. And for a FIRST robot you really don't need any dynamic memory allocation. C++ is a much better language and with proper use can even produce smaller, faster code than C. Not to mention if the code is properly written, it's easier to understand, maintain, and more robust. |
|
#7
|
|||
|
|||
|
Re: C or C++
I always thought the problem with object oriented languages and microcontrolers was the async nature of OO. In other words OO is terrible for RTOS's.
|
|
#8
|
||||
|
||||
|
Re: C or C++
Quote:
|
|
#9
|
|||
|
|||
|
Re: C or C++
Quote:
That said, however, most microcontroller programs have to deal with asynchronous events. |
|
#10
|
|||
|
|||
|
Re: C or C++
http://www.virginiafirst.org/workshop_info.shtml
I figure it just a typo but look at "Beginning Programming - part 1". Maybe they know something we dont know. Im pretty sure its a typo though. |
|
#11
|
|||
|
|||
|
Re: C or C++
I screw it all. Let's go back to the PBASIC boards from a few years ago.
|
|
#12
|
|||
|
|||
|
Re: C or C++
Quote:
|
|
#13
|
|||||
|
|||||
|
Re: C or C++
I'm going to try to clarify somethings about using OOP on the current breed of controllers.
Using any kind of memory management on the PIC18s would incur a performance penalty in terms of pointers, indirect addressing, management overhead, etc. I don't care how few malloc()/free() calls there are; it only takes one. In order to perform indirect addressing, you have to copy the pointer to a special register. Every dereference requires this, on a byte-by-byte basis. I'm not even sure you can perform an indirect function call. (Remember, code is stored seperate from data.) I agree that using OOP principles is a Good Thing(tm). But the limits of the PIC18 processors are such that full-blown OOP (or even just objects) as it is normally implemented is impractical. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|