??? 01/25/11 20:54 Modified: 01/25/11 20:57 Read: times |
#180792 - Yes. Fight. Responding to: ???'s previous message |
It's been some time and I am craving for some GOOD flamewar... ;-)
Neil Kurzman said:
It is all about time. The Time to be a productive C Programmer is less then the Time it take to be equally skilled ASM Programmer. This is a very often quoted statement in favour of C in the C/asm flamewars, but I don't think this is true, at least not universally. And I don't think there is a relevant study supporting this. I know that there are studies comparing "productivity" (whatever that might mean) in various languages including asm, but I believe all of them are related to the "big" computers (and were performed around the PDP-11 era). Remember, we are here still talking 8051, a small 8-bit microcontroller with very limited resources. And let me add, that the times when complex designs were based around 8051 used as a general-purpose microprocessor rather than microcontroller (out of necessity/cost) are over. Also note, that none of us are to tell, based on personal experience, that a C programmer is more productive or what. ALL of us DO have the asm background the novices don't have anymore. Neil Kurzman said: Not only I. Given adequate training, I believe Joe The Average Programmer can. Again, in the realms of 8051.
While you can turn out an ASM Program as quickly as a C programmer [...] And let's drop the "turn out", as it too closely resembles "churn out (code)". The only relevant outcome of the programming process is a working program. And to achieve that, more than just "turning" is needed, and all those steps are the same or similar for all languages: problem analysis, program design, testing and debugging. The "turning" is only a fraction of the time. (I hope nobody will come up with the ridiculous argument of "doing math in C is faster" - we all know what the word "library" means, right?) Neil Kurzman said: This is again an argument from the wars, in favour of asm, and is completely wrong as it completely misses the point, and is then turned around by the C fans.
I will assume the your code will be faster and smaller. maybe it fits into the next smaller chip. Writing in asm (as opposed to C) is much more about retaining full control. In the debugging phase, that might prove a far better productivity booster than the ability to "turn out" code faster in C. Ever been caught by surprise by how the compiler understood "volatile"? Being stunned by overhead of an ISR prologue/epilogue? Atomicity issues in view of code reordering, anyone? Don't get me wrong again. I don't say asm is going to salvage the 8-bitters or what. I just say, the "C is better", without context, is a gross overstatement. JW |