You made it perfectly clear in an earlier post that you have virtually
now experience in embedded systems. That's fair enough - no one has
experience of everything. But since you have almost no idea about
embedded development, you sound foolish with statements like your claims
of 50x greater productivity.
It wasn't an exact number. I was using "50x" as "an exceedingly greater
degree of productivity" because I know how I code and I have languages that
don't have edit-and-continue, and having to stop and fix things and restart,
it's a constant drain on productivity, and a simultaneous source of
frustration because I know that were edit-and-continue available it wouldn't
be like this.
I have done development at the opposite end of your scales - where
programs were burned into EPROM chips and mounted on a board for
testing. Being able to re-flash the program in system is certainly a
big step up for debugging productivity, but even there the factor is
closer to 2 or 3 than 50. And that is just for the debugging part of
the development, which is a small part of the process.
If you use an emulator, and are able to immediately update the code without
the physical hardware mechanics of flashing, you'll find your productivity
goes up even more. This is akin to edit-and-continue.
I am well aware of the benefits of modifying code while running, as I do
it with Python code on PC's. Like Lisp, as mentioned by another poster,
it is possible to do this in a consistent and safe manner, with
real-world code - unlike with C. It can be convenient, but it is not
"shocking", nor does it make a huge difference to development or debug
time.
It is in my development. And there are certain aspects I'm able to
completely develop within the debugger. In fact, I've made the claim on
my toolset's edit-and-continue abilities that my goals are a person
could launch my IDE, create a new project, and open the document with
nothing in it except the equivalent of void main(void) { }, and launch
the debugger with a breakpoint set on the empty main function, and then
code the entire project from there without ever leaving the debugger.
That's how edit-and-continue should operate. Total knowledge of the
system it's writing for. Total knowledge of the code. Total knowledge
of how to execute the diffs between compile changes ... in fact, instead
of mass compiles as is done today, a continuous line-by-line compiler
which even conveys errant code into the executable so that when it hits
those lines it triggers a debugger exception which will stop the code
so it can be corrected at runtime. And so on.
Getting the wrong words on occasion is not dyslexia, nor is it a related
condition
Read more:
http://www.dyslexia.com/library/symptoms.htm
"Difficulty putting thoughts into words; speaks in halting
phrases; leaves sentences incomplete; stutters under stress;
mispronounces long words, or transposes phrases, words, and
syllables when speaking."
http://www.dyslexiamylife.org/signs_dsy.html
"Hesitant speech; difficulty finding appropriate words."
http://www.beatingdyslexia.com/dyslexia-symptoms.html
"Forgetting names of people or objects."
(though continuously failing to learn or remember correct
terms /can/ be related to dyslexia). But such conditions affect many
people to a greater or lesser degree - I don't find my mild dyslexia
affects my programming. My documentation would be "entertaining" if it
weren't for spell checkers, but I don't think it excuses bugs in my code.
Dyslexia research is continuing. In Indianapolis, Indiana there is the
Dyslexic Institute of Indianapolis that my wife is working closely with
because our son has dyslexia. It was because of her work with this
organization that I discovered I also have dyslexia.
A video my wife made for the organization:
My son, Alex, is there on the first slide, front row, all the way to
the left. My wife is up against the wooden fence at around 1:00.
Let me further qualify and say that the processes I listed are typical
for a professional /embedded/ developer - there are many types of
software development, and the processes and balances are not the same.
Agreed. All of them would be better served with immediate edit-and-continue
abilities. It is toward that future I am striving. I am not looking at
what is here today, but what is and must come. I actually have long term
goals of getting these toolsets working, and then moving to create my own
microprocessor, called Craetis, based on a design I began on Thanksgiving
Day in 1993, revised over the years to be closer to that which my OBED
virtual machine design is like, yet with several non-software components
removed, and several hardware components added. This design will include
the ideas I have for the multiple threads available for increasing the
throughput of serial code using parallelization.
However, I cannot imagine any serious development process which involves
/major/ amounts of fiddling around with changing live code, at least
with a language and system that is not designed for it. I can well see
that it can be useful on occasion - but nothing remotely like the
benefits you are claiming.
Because it doesn't often exist or happen today.
There was a time when the idea of having a pickup truck was insane. Hundreds
of pounds of refined steel. Expensive glass. Electricity. Specialized
components that couldn't be easily found. Gallons and gallons of refined
fuel. It would cost a fortune! And be so difficult to maintain! Compare
that to a horse you can feed grass and water ... it's a no brainer! Yet
how many people today consider horses to be superior to pickup trucks? Not
many. And that's because the infrastructure is now here, and it makes
sense to do things a certain way.
The same will be true when the ability to do live updates is readily
available. My plan is to introduce this ability through my compiler and
IDE for all applications written therein, and then later in my operating
systems. If you take the time to study how I designed the device driver
code for Exodus, then you'll see that such a design was already there in
that version. My plan was even to allow, at the system level, dozens of
simultaneously installed versions, even able to share algorithms between
versions if needed.
Best regards,
Rick C. Hodgin