-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Interactive Debugging #10
base: trunk
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good writing and overall organization. However, the first draft should be a bit more fleshed out than this -- hard to provide feedback when your summaries are just lists of TODO items.
|
||
Much of the activity of programming involves **debugging**, i.e., | ||
diagnosing and preventing undesired program behavior. | ||
Wilkes's early realization of this fact was echoed and amplified in a 2002 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Results from publications need to be cited. This should be a bib-item, either directly inline here or at the end of this section with a citation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
still need this
src/live-programming.rst
Outdated
Using these terms, debugging may be understood | ||
more precisely as the collective processes of determining what runtime | ||
faults led to a runtime failure, determining what software errors | ||
led to those faults, and modifying the code to prevent the faults from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"modifying the code to prevent the faults from occurring", i.e. eliminating the errors?
faults led to a runtime failure, determining what software errors | ||
led to those faults, and modifying the code to prevent the faults from | ||
occurring. A **debugger** is a tool that allows the programmer to observe | ||
the machine state during program execution, thereby making it possible to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might be worth explicitly connecting this to the concept of "live programming"
src/live-programming.rst
Outdated
Interactive Debuggers | ||
--------------------- | ||
|
||
describe history of transition from physical computing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure you include an introduction to this topic in the second draft.
src/live-programming.rst
Outdated
|
||
*Algorithmic debugging* (also called *declarative debugging*) is a semi-automatic | ||
debugging technique in which the debugger automatically generates a series of | ||
questions to which the programmer's answers guide the search toward the bug. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"the debugger guides the programmer toward the bug by asking a series of questions"
*Algorithmic debugging* (also called *declarative debugging*) is a semi-automatic | ||
debugging technique in which the debugger automatically generates a series of | ||
questions to which the programmer's answers guide the search toward the bug. | ||
The debugger constructs an *execution tree* (ET), a data structure representing a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
An ET is just one way to do algorithmic debugging.
src/live-programming.rst
Outdated
Although algorithmic debugging can be applied in any language paradigm, it is most | ||
suited for declarative languages, e.g., pure functional languages. | ||
to determine whether an ET node for a pure functional program is correct, the | ||
programmer need only check that the return value of the corresponding, referentially |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"referentially transparent" -- you should define this if you want to use it, but I don't think you need to say it at all
This is as far as I'm gonna take it tonight. All bib items are completed. There are a couple more paragraphs to be inserted here and there in section intros. I've converted the intro section on early history of debugging into a TODO because I think I'm covering enough here. Debugging history + interactive breakpoints would be its own entire compendium assignment. If you disagree, I'll add something in next iteration. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nicely written, but needs to be put into a finished state for the final draft -- see notes here. grade will be sent by email.
src/debugging.bib
Outdated
author = {Lawrance, Joseph and Bogart, Christopher and Burnett, Margaret and Bellamy, Rachel and Rector, Kyle and Fleming, Scott D.}, | ||
title = {How Programmers Debug, Revisited: An Information Foraging Theory Perspective}, | ||
journal = {IEEE Trans. Softw. Eng.}, | ||
issue_date = {February 2013}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove the extra information that shows up in the bibliography entries -- authors, title, venue, year, and for journal articles the vol/issue/page numbers are all that is necessary
|
||
Much of the activity of programming involves **debugging**, i.e., | ||
diagnosing and preventing undesired program behavior. | ||
Wilkes's early realization of this fact was echoed and amplified in a 2002 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
still need this
src/live-programming.rst
Outdated
Wilkes's early realization of this fact was echoed and amplified in a 2002 | ||
study of the U.S. software industry, which found that software engineers | ||
spent an average of 70-80% of their time testing and debugging, with | ||
the average bug taking 17.4 hours to fix. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is an unexpectedly large number, might need to dig into this / provide some context
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not a surprising number imo. I definitely spent 2-3 days on several bugs as an engineer. Makes more sense when you consider the time it takes to reproduce the bug, which may be super dependent on a user's data, which you then might have to check out an encrypted copy of on a remote server, debug remotely (which is slow), repeat long repro steps each time you wanna investigate something new, etc.
I took out the mysterious 70-80% figure.
src/live-programming.rst
Outdated
spent an average of 70-80% of their time testing and debugging, with | ||
the average bug taking 17.4 hours to fix. | ||
Thus, debuggers form a crucial component of an effective programming system. | ||
(needs better finish) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
make any changes you want to make by the final draft
src/live-programming.rst
Outdated
over environmental and (minimally assumed) cognitive constraints---in | ||
particular, without reliance on hypothesized mental structures. | ||
This paper followed Sjøberg et al.'s theory-building process | ||
:cite:`sjoberg2008building`: it adapted the constructs of information |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
every paper should have a bib-item
src/live-programming.rst
Outdated
practical advice to builders of software engineering tools. | ||
This paper presented a theory of programmer navigation when debugging | ||
based on information foraging theory. | ||
Information foraging theory is an instance of rational analysis, a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This definition should probably not be in the summary of the lawrence paper -- instead find the paper that they based it on and make it a bib-item
src/live-programming.rst
Outdated
deleting program statements that do not affect the criterion variables' runtime | ||
values at the criterion statement. | ||
|
||
(another short paragraph about how program slicing has been generalized, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
finish this by final draft
src/live-programming.rst
Outdated
values. | ||
|
||
Despite their useful guarantee of bug diagnosis, algorithmic debuggers have yet to enter | ||
widespread use. (add note about functional programming research lagging in tooling) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't need that note
src/live-programming.rst
Outdated
:filter: key == 'nilsson1994lazy' | ||
|
||
.. todo:: | ||
write bib entry |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
write this bib entry
an algorithm for slicing ARTs. | ||
|
||
.. note:: | ||
The debugging interface sketched in :cite:`perera2012explain` may be viewed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe make a forward reference to algorithmic debugging in the summary for roly's paper above
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
great. will send final grades via email soon
No description provided.