On Tuesday, October 4, 2016 at 4:29:12 PM UTC-4, Bart wrote:
> On 04/10/2016 20:08, Rick C. Hodgin wrote:
> > On Tuesday, October 4, 2016 at 3:00:45 PM UTC-4, John Gordon wrote:
> >> In <
20aae408-4b77-483a...@googlegroups.com> "Rick C. Hodgin" <
rick.c...@gmail.com> writes:
> >>
> >>> For me? Barring the obvious things like functionality and error-free binary
> >>> code, it would have to be edit-and-continue. And without equal.
> >>
> >> So when the compiler encounters an error, it retains the compilation
> >> artifacts (parse tree, symbol table, etc.) up to that point, and when the
> >> user corrects the error it continues compiling where it left off?
> >>
> >> What if the correction changed something that has already been compiled?
> >>
> >> How much time can it possibly save? Compilation is pretty fast, no?
> >
> > There are two approaches to the design. Microsoft uses the top-down
> > recompilation which then looks for the deltas or diffs between the
> > generated binary images, and then updates things accordingly. It often
> > breaks data or functions on the stack, or fails to compile completely
> > if you stray away.
>
> Microsoft Visual Studio, if that's what you're using, is a massive 1.5
> million *file* application. Files, not lines!
Visual Studio is a full IDE with a lot more features than I intend for my
IDE. It has SQL query abilities, editors for GUI components, etc. I
will offer those types of features via extensions that people can add.
> Maybe you need something along those lines for an application that could
> otherwise take *hours* to rebuild.
The largest application I have compiles in about 10 seconds in Visual
Studio, and about the same in GCC.
I don't need all of the functionality of Visual Studio. The main features
I use are the general IDE ability to redefine the workspace as required,
the Code Definition window (invaluable), and the refactoring abilities it
has, and those it can feed into add-on programs like Visual Assist X by
Whole Tomato (worth its weight in gold).
> It might well however have taken them considerably more than 21 man years.
No doubt.
> > The model I'm using for CAlive takes the approach of saving the full
> > compilation state. Compilation is carried out continuously as things
> > are changed. But in general, dependency trees are maintained and if
> > things which were dependent upon something that's changed has changed,
> > the entire related lines of source code are stricken and recompiled.
>
> I used a completely different approach decades ago when developing
> applications. Most user-level commands and features were implemented as
> independent scripts. Scripts could be edited, compiled, run and re-run
> from within the application, without needing to restart the app or go
> through the same series of steps necessary to set up the data. If it
> went wrong, I was still in the application.
I've thought a lot about how to implement what I call LiveCode (edit-and-
continue). I concluded that I want the ability to connect to a running
binary image that's been deployed on a user machine, to be able to remote
into that binary image, apply the appropriate program database, and allow
full editing as it is. But the goals of having an end-user application
is speed and efficiency. As such, support for the binary image must exist
through the entire compiler stack, including optimizations.
It's a tall order. I'm giving it my best and it's undoubtedly less than
I could do along with others helping me. It has always been my intention
to have others helping me, but so far no one's come on board to help. A
few inquiries, a few promises, but nothing's come to fruition yet.
> But this is much, much simpler than what I think you're trying to do,
> which I believe is some restart at the statement level rather than module.
CAlive allows something I call Horizontal Debugging, which allows you to
even step into an expression, through individual components. So, CAlive
has to maintain context information about where to restart for the inner
parts of an expression, as well as lines.
It's a comprehensive project. Everyone I've shown the details to in person
so far tell me I'm crazy. But, it's the goal I have and it's what's upon
my heart. It's been there since the early 90s. I've worked on various
parts at various times since then, but as I matured and began to look at
the larger "life's meaning" questions, I began to look into the philosophy
of what I was trying to do. I stepped back and considered the project in
the overall scheme of things, and not just as a tool, but as an offering
unto the Lord, unto mankind, one given over to helping other people and
making their lives better, rather than doing it for money. It's an outward
expression of the love I feel inside from the relationship I have with my
Lord and Savior, which is also why I haven't found anyone to come on board
and help me yet ... because I note that point in my source code, mention it
in emails, and wear it outwardly in the things I do. People recognize that
for what it is and stay away, always to my pain.
I don't imagine it will always be like this. Either the end-time events
will make it impossible to continue to develop due to life's hardships at
that time, or the rapture will take place, or other people will ultimately
at some point see the value in helping me and then come on board to do just
that, also helping themselves and other people as well.
I keep longing for that day when developer #2 comes on board to help out
on an ongoing basis. So far, I've had a couple nibbles, but other than that
it's just me and the crickets ongoing, and let me tell you that four years
of that kind of not only isolation in development, but to have people keep
telling you over and over what a ludicrous idea it is, or how I'll never be
able to complete it, or how I odn't have the skills to complete it, it is
really quite a continuous pounding to endure when all you possess within is
the desire to give people the absolute best of what you have, coupled to
the absolute best of what they have, as a collaborative effort given over
to make other people's lives better (and also my own of course, as I think
these tools will be wonderful when completed).
There's only one reason I am able to keep going. I've tried many times to
quit, and literally every time I've gotten to the point where I'm ready to
walk away, that very day something would come which encouraged me anew.
I've actually stood there at times with my mouth hanging open in disbelief
at how it's all happened.
I'm resolved now to continue on so long as I can. But, I can also tell
that as I'm getting older I'm not able to think as clearly as I used to,
or go as deep as I used to, or work for as long on a problem as I used to.
I'm losing my edge and things just take longer now. But, it's all part
of it. Whereas things used to come to me so easily, now they're harder.
I have to really want it now, whereas before it was just given to me and
I ran with it.