Re: relative complexity of hardware and software (was: pick 'n' place machines
- From: Terry Given <my_name@xxxxxxxx>
- Date: Mon, 12 Sep 2005 12:23:29 +1200
Walter Harley wrote:
"John Larkin" <jjlarkin@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:2a83i1l2lgqk5tvaits5o8acob6rfo41v9@xxxxxxxxxx
Except that huge, complex, synchronously-clocked hardware logic systems seldom have bugs. But most software has bugs. The design methodologies are distinct: in hardware logic, the current system state is unambiguous, and combinational logic based on the current state sets up the next state, which is implemented, across the entire chip, at the next clock. People get into trouble whan they break that paradigm. In software, the execution point is local, but wanders all over the place in often unpredictable paths, and in a multitasking system (ie, most systems nowadays) there is seldom any decent mechanism for coordinating tasks.
Interesting observation.
But are you saying that the transitions in hardware logic systems are conceived and described as system-wide (what the software world would call "global variables")? Surely that's not true in a large system; as you said earlier, things are broken into functional blocks, "Multipliers, adders, fifos, PID controllers, ..."
Seems to me that as soon as you have a system consisting of smaller components that themselves embody some complexity, but that are described in a simplified form, the opportunity for bugs arise. For instance, one might thing of a block as an "adder" but in fact it can overflow and wrap, a condition that would only be obvious in hindsight.
Similarly I would think that the same opportunities for multithreading bugs that exist in software, also exist in hardware. (Put it this way: I'm sure I could write a threading bug in hardware if I tried.)
Perhaps the differences have more to do with how concisely small functional blocks can be fully described (in software, even something as basic as a scrolling listbox is hard to fully specify concisely enough to be useful to a programmer), and with the number of layers of functional composition (>10 for even a simple desktop app, versus I imagine many fewer for a hardware logic system)?
I don't design hardware logic so I'm just guessing. (I do design software, so I'm all too familiar with the processes that lead to bugs on that side.)
I reckon its down to the ease of upgradeability. its *easy* to change a piece of software on a PC. type away for a few minutes and hey presto, its changed. IMO this has led to a dreadful culture of coders whereby they dont design, they just code, and are almost deliberately sloppy, because hey, its ISP right.
its much harder to change analogue electronics, so its more important to get it right first time. or at least close enough that {insert name of best tech here} can easily rework it. So designers think about transient states, startup, shutdown, fault conditions, emissions, immunity, temperature, humidity, PCB flexure etc *before* building anything.
oops, I think I just said many coders are lazy and poorly schooled. that would explain why so much code is crap. Revenge of the bell curve. I'm sure it has nothing whatsoever to do with the fact that its a lot cheaper to train a student to play with a PC than to be an engineer, but they pay similar fees...
programmable logic does indeed allow for rat*** programming. I think the trick is to not hire rat*** programmers.
look at the number of screw-ups intel makes, versus micro$oft. The hardware guys are winning hands down.
Cheers Terry .
- Follow-Ups:
- Re: relative complexity of hardware and software (was: pick 'n' place machines
- From: Walter Harley
- Re: relative complexity of hardware and software (was: pick 'n' place machines
- References:
- Re: OT 0805 resistor noise
- From: SioL
- Re: OT 0805 resistor noise
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Winfield Hill
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: Walter Harley
- Re: pick 'n' place machines (was: OT 0805 resistor noise)
- From: John Larkin
- Re: relative complexity of hardware and software (was: pick 'n' place machines (was: OT 0805 resistor noise))
- From: Walter Harley
- Re: OT 0805 resistor noise
- Prev by Date: Re: wideband RF impedance matching
- Next by Date: Re: Bainter notch filter, anyone?
- Previous by thread: Re: relative complexity of hardware and software (was: pick 'n' place machines (was: OT 0805 resistor noise))
- Next by thread: Re: relative complexity of hardware and software (was: pick 'n' place machines
- Index(es):