Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
07/20/09 08:42
Read: times


 
#167576 - If you want 8051 user, push for efficient 8051 developers
Responding to: ???'s previous message
Just a quickie:
By the way: "There are things they can do ... but should they?"
Who are they? It sounds like you are not including yourself among "them".

The thread title is ""C gives 2K of binary for just a few source lines". Discuss."

The agenda I'm trying to push is that C is a very economical (not lazy) tool for developing embedded applications, and that the 8051 processor is no exception from that rule. It is one of the more HLL-challenged processors out there. But the compiler manufactuers have managed to make wonders. Knowing 8051 assembler will not automagically be enough to beat the compiler. And when the compiler ends up short, it will often still be in the neighbourhood. The compiler/linker can often to optimizations that an assembly programmer would not want to do, because such rewrites in the assembly code becomes too hard to read. The compiler don't have to care - it is enough that the code is correct, and that the C source is readable.

But you are doing your best to avoid any arguments:
- C generates too big code.
- C generates too slow code.
- C coders can't really program if they can't do it in assembler
- C coders who can do it in assembler but still do it in C does it because they are lazy.
- 8051 has so little code space that it isn't meaningful to look at different HLL.
- Keil C51 evaluation allows too little code space to be meaningful to evaluate.
- Cellular phones are a good example of why C results in buggy programs.
- C programmers are "PC programmers" where anything "PC" is your best insult.
- ...

The license may have expired on the 8051 core, but that does not mean that the 8051 is without economical competition. So if you do want people to use the 8051 to an economical advantage, they will have to make sure that they look at the full life cycle of the products. For a large number of products, or for a large part of the code inside a specific product, it is not economical to use assembler.

About C++:
"I did assume that you'd be unaware of them,"
Which seems to imply that you assumed that I would be unaware of them, making it worthwhile to try and attack my statement.

"...] a couple of C++ toolsets. I wasn't aware that their existence was so prominent."
No, I do not think they are prominent. I'm not sure if IAR got C++ support just because their compiler have C++ support for other architectures, or if it was a decision from the marketing department to make their compiler stand out. In the end, it is from the start a special embedded subset of C++, and even that subset will probably be hard to take advantage of on the 8051 platform. I say "probably" because I have never tested any C++ implementation on the 8051. I'm only speculating based on experience with the 8051 instruction set.

"When C++ was being introduced, it was touted as an advance for programming in the large."
When a new language gets introduced, a lot of people will try a lot of different marketing strategies. Some because people will like to sell new compilers. Some because people will like to sell training coursers. Some because people will like to sell books.

An important thing in C++ - and all other object-oriented languages - is the improvement of encapsulation. That is something you can get gains from in both small and large projects. In small projects, encapsulation can help with code reuse. But the huge money savings comes in large companies that are already fighting to get all their concurrently working developers from making changes that breaks someone elses code. Big companies had the most to gain from being early adopters. Big companies are also the ones who are easiest to sell courses to. But almost all sizes of programs are suitable for C++. A few hardware platforms are not so suitable for C++.

"I didn't realize that 'C' was inadequate and that large-scale programming techniques and tools needed to be introduced to the 805x market."
C is not inadequate. However, large-scale programming techniques and tools should always be looked at. A 10k line C program is still a program that can have a significant maintainance cost through the full life cycle. For a 8051, I don't think C++ would be a good way to go. But there are other tools that could be suitable to discuss in other threads. Such as tools for source code management. Tools for requirements management. Tools for regression testing. Tools for matching requirements with test protocols. QA stands for a significant percentage of the development cost, and that development cost can stand for a significant per-unit cost. It is quite easy to add new source lines for a new feature. It can be very hard to find and remove old source lines in case a feature is to be removed.

List of 140 messages in thread
TopicAuthorDate
"C gives 2K of binary for just a few source lines". Discuss.            01/01/70 00:00      
   What's there to discuss?            01/01/70 00:00      
      Just use macros creatively            01/01/70 00:00      
         It doesn't take a genius ot make things worse            01/01/70 00:00      
   C timing loops...            01/01/70 00:00      
      tsk, tsk...            01/01/70 00:00      
         Hard to make simple "hello world" applications            01/01/70 00:00      
         Yes, I Do            01/01/70 00:00      
   and that's exactly the problem            01/01/70 00:00      
      Generalisations            01/01/70 00:00      
      So stop blaming the tools!            01/01/70 00:00      
         C intentionally designed to support "clever" developers            01/01/70 00:00      
         It's not the tools ... It's the folks who choose them!            01/01/70 00:00      
            So don't keep blaming the tools, then!            01/01/70 00:00      
               I've repeatedly said ...            01/01/70 00:00      
                  where is the qualifier?            01/01/70 00:00      
                     ISTM that some things simply won't work in 'C'            01/01/70 00:00      
                        Of course that is true            01/01/70 00:00      
                        exactly!!!            01/01/70 00:00      
                           The reverse            01/01/70 00:00      
                  But you have also repeatedly said            01/01/70 00:00      
                     another misnomer            01/01/70 00:00      
                        misnomer            01/01/70 00:00      
                           It's not entirely separate ... but it is an eval-issue            01/01/70 00:00      
                     That's a KEIL-specific limitation. it IS a KEIL problem            01/01/70 00:00      
                        It is a universal problem for all software makers            01/01/70 00:00      
                           last I evaluated ...            01/01/70 00:00      
                              4K Limited            01/01/70 00:00      
                                 One coud try SDCC, too            01/01/70 00:00      
                           Yes, this IS a problem for them            01/01/70 00:00      
                              30 days            01/01/70 00:00      
                                 locked tools            01/01/70 00:00      
                                    RE: locked tools            01/01/70 00:00      
      And ????            01/01/70 00:00      
         Do they need to use hammers for a few year before they can u            01/01/70 00:00      
            Good Idea vs The Real World            01/01/70 00:00      
               In the real world...            01/01/70 00:00      
                  get job in airline.            01/01/70 00:00      
                     Read the mail trail!            01/01/70 00:00      
      re: .. and that's exactly the problem            01/01/70 00:00      
         Does it work ?            01/01/70 00:00      
            there is another reason            01/01/70 00:00      
               little bits of asm            01/01/70 00:00      
                  Not just fast            01/01/70 00:00      
            If you were the manager ...            01/01/70 00:00      
               What's the collective noun for False Assumptions?            01/01/70 00:00      
                  Going with that            01/01/70 00:00      
                     It's a tradeoff ... Isn't it?            01/01/70 00:00      
                        More generalisations            01/01/70 00:00      
         It's already been "rolled"            01/01/70 00:00      
            If that was Only True            01/01/70 00:00      
         Not so fast ...            01/01/70 00:00      
            preaching to the choir            01/01/70 00:00      
            that whooshing sound ..            01/01/70 00:00      
            Off on the wrong track again...            01/01/70 00:00      
               Who cares which library?            01/01/70 00:00      
                  Talking out of both sides of the mouth            01/01/70 00:00      
                     I just come to think of it and ...            01/01/70 00:00      
                     You've got to pay closer attention, Erik!            01/01/70 00:00      
                        the pot calling the kettle black.            01/01/70 00:00      
      In the real world            01/01/70 00:00      
         So, it's your position that cost doesn't matter?            01/01/70 00:00      
            Complexity - not size - affects development time/cost            01/01/70 00:00      
            .            01/01/70 00:00      
   Getting the Least Out of Your C Compiler            01/01/70 00:00      
      An excellent article            01/01/70 00:00      
   It is Programmers Decision            01/01/70 00:00      
      Not so trivial to decide            01/01/70 00:00      
         The problem isn't with 'C' vs ASM ...            01/01/70 00:00      
            How many 'C'-coders would be willing?            01/01/70 00:00      
               Not the worst examples, but the preponderance, Andy            01/01/70 00:00      
            Much use of fixed-point in C code            01/01/70 00:00      
               It's not what they're taught to consider            01/01/70 00:00      
                  I don't know about everyone else            01/01/70 00:00      
                     Now wait a minute ...            01/01/70 00:00      
                        Lots of people can't program...            01/01/70 00:00      
                           What are you advocating, Per?            01/01/70 00:00      
                              Oh, Come On Now...            01/01/70 00:00      
                                 I have to admit ...            01/01/70 00:00      
                                    TTM and product lifetime            01/01/70 00:00      
                                       That's very true ... sadly ... but ...            01/01/70 00:00      
                                 if you really did do this you would come away a convert            01/01/70 00:00      
                                    C++ and 8051 are not a really good match            01/01/70 00:00      
                                       In general            01/01/70 00:00      
                                       C++            01/01/70 00:00      
                              C++            01/01/70 00:00      
                              oh, how 'crappy' they would be            01/01/70 00:00      
                                 Don't be so sure ...            01/01/70 00:00      
                                    irrelevant to C or asm,            01/01/70 00:00      
                                       Nobody has questioned your competence            01/01/70 00:00      
                                          you missed the point            01/01/70 00:00      
                                             Don't you think design style has something to with that?            01/01/70 00:00      
                                                you must be off your rocker            01/01/70 00:00      
                                          Don't confuse the tool with the user            01/01/70 00:00      
                  What evidence?            01/01/70 00:00      
                     Maybe not so ridiculous ...            01/01/70 00:00      
                        A + B != C            01/01/70 00:00      
                           Fine, but what are you advocating?            01/01/70 00:00      
                              ass-u-me            01/01/70 00:00      
                                 There are things they can do ... but should they?            01/01/70 00:00      
                                    If you want 8051 user, push for efficient 8051 developers            01/01/70 00:00      
                     few to none            01/01/70 00:00      
                  this has NOTHING o do with C            01/01/70 00:00      
                     I don't think so much PC either - just beginner accidents            01/01/70 00:00      
                        That may be one of the reasons we disagree ...            01/01/70 00:00      
                           Not a short-story            01/01/70 00:00      
                              which reminds me            01/01/70 00:00      
                           It is worth exploring C properly            01/01/70 00:00      
                              One has to be prepared.            01/01/70 00:00      
                                 You can't assume that just because it's ASM, it's messy            01/01/70 00:00      
                                 So your experience is >20 years out of date?            01/01/70 00:00      
                                    Not exactly            01/01/70 00:00      
                                 Just try some modern tools.            01/01/70 00:00      
                                    It's not quite like that ...            01/01/70 00:00      
                                       Project management            01/01/70 00:00      
                                          I have to make a distinction            01/01/70 00:00      
                                             non-sequitur            01/01/70 00:00      
                                                Hardly!            01/01/70 00:00      
                                             Out of interest            01/01/70 00:00      
                                                My bad! Sorry!            01/01/70 00:00      
                                       Negative reset too            01/01/70 00:00      
                                          Yes, there are a few.            01/01/70 00:00      
                              thoughts on this ...            01/01/70 00:00      
   Real Programmers don't write assembler            01/01/70 00:00      
      Ouch            01/01/70 00:00      
      What, hexadecimal?!            01/01/70 00:00      
         Hex            01/01/70 00:00      
            That's how a lot of us started out ...            01/01/70 00:00      
               And then life stood still            01/01/70 00:00      
                  Is it 23 May 2005 already?            01/01/70 00:00      
                     Not exactly            01/01/70 00:00      
                         8kB of object code            01/01/70 00:00      
                           If you'd had the experience ...            01/01/70 00:00      
                              You can use a monitor or ICE or whatever            01/01/70 00:00      
                              nostalgia is a great thing thing            01/01/70 00:00      
   C gives 2k....            01/01/70 00:00      
      Intel APP Builder            01/01/70 00:00      
         Intel AppBuilder and similar            01/01/70 00:00      
            Going off-topic            01/01/70 00:00      
               The are also MCUs with 1K            01/01/70 00:00      

Back to Subject List