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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
07/16/09 16:36
Read: times


 
Msg Score: +2
 +2 Good Answer/Helpful
#167430 - Complexity - not size - affects development time/cost
Responding to: ???'s previous message
You still live in a world where the time to implement something is proportional to the number of lines of code, or possibly proportional to the number of kB of code space.

In real life, you can have a block of code that are just acouple to thousand lines of code, and requiring 10-20kB of code space, but that contains one or more man years of know-how. And you can have 100 lines of code that takes two weeks to perfect.

From your posts, you are a coder. You just follow a list: Print x. Set y. Wait until z.

A lot of people are not coders but developers. There are way more things to developing than just coding. You may need to translate a seemingly trivial requirement into a very complex algorithm, spending weeks just optimizing parameters.

But the next thing here is that testing all branches of a 1000-line C program, including full-range analysis of variables, is way easier than performing the same operation on the corresponding assembler program. That was one of the reasons why many HLL spends such focus on locality-of-reference, encapsulation/namespaces and data types.

Your programs seem to contain tables of data to just send out. But what if every single line is real code, making real computations or decisions?

If I produce 10k units of a product, and can save $1 by selecting a smaller processor, then I will only gain something if I can prove that I will not reach the $10k in extra development time, maintainance, support, warranties. If you count $100/hour, these $10k are only 100 hours.

Exactly how many lines of assembler code do you manage to document in 3 months, if we ignore the coding? How do you document the testing?

I took a look at some project.
One was 9k source lines in C. > 1000 conditionals, 270 loops. Resulted in 60kB flash use for a PIC. About 6.5 byte/source line.
One was 16k source lines in C. > 2600 conditionals, 600 loops. Resulted in 80kB flash use for an ARM. About 5 byte/source line.
One was 15k source lines in C > 1900 conditionals, 625 loops. Resulted in 97kB flash use for an ARM. About 6.5 byte/source line.
One was 4800 source lines of asm. About 350 conditionals/loops. Resulted in 4760 bytes flash use for an AVR. About 1 byte/source line.

If I should evaluate the complexity of the above projects, I would say that the comparative complexity/functionality follows quite linear to the number of source lines. The first project in the list is about twice as complex (amount of functionality, documentation, ...) as the last.

All of the above did take 4-6 months each, with the majority of time spent documenting, cross-correlating requirements with code, modifying code and documentation based on customer feedback, creating test reports, ...

What they have in common is that they have a quite high percentage of conditionals. Of 15k C lines, there are about 2600 lines with "if", "else" or "case". And about 600 loops. Each and every one of them represents a "corner case" that has to be explicitly tested and documented to catch off-by-one errors, worst-case running times, ...

The interesting thing here is that the 5k of assembler for the AVR chip has less than 30% of the features of one of the C projects mentioned above, despite having similar development time/costs. Even more interesting? The ARM chip was cheaper. And the C code (which about three times the functionality) has had maybe 40% of the code reused by a totally different product and been spun off to a different platform with other hardware. The AVR assembler solution has only consumed 60% of the flash, and 70% of RAM. But no one is interested in spending the time and money trying to teach that product some of the tricks the newer product can. The ARM implementation is at 30% flash, which means that it can store two complete images (allowing safe over-the-air updates), and still allow the application to grow with over 60%.

But the total cost for a product can't just be seen as the number of kB of flash consumed. On one hand, the price of the chips does not follow the size of the flash or RAM, unless you compare two chips within the same family. On the other hand, the maintainance cost of a product can represent several times the cost of developing the initial software. Don't say the maintainance cost is because of bad programmers producing buggy code. In real life, you often get request to modify a product. Extend it with new features. Possibly create a hardware variant with different numbers of I/O or adding a new interface. Maybe a move to a newer processor to allow reduced power consumption or updating a 10Mbit ethernet interface to 100Mbit. A lamp timer may be possible to produce in 100k units and never touch the software. But a lot of products requires constant updates because of unknown external factors.

A large number of products can't just be seen as commodity products, where all manufacturers have identical products, and where price or warranty or color of the box is the deciding factor. Quite a number of products are either technological races - who is first with GPRS? Edge? 3G? HSUPA? Who is best at releasing at responding to specific customer requirements, releasing adaptations? Who has best availability on installed products? Who can best show that every dollar spent in buying a product will result in x dollars of savings each year? If a customer can save $1k each year, they will not care if the product they have to buy costs $400 or $450. But they will care about the delivery date - how soon they can get their 1k units adapted to their specific requirements, since their savings will not start ticking until they have the new equipment installed. And they will care about reputation. And about reference customers.

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