Skip to content
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

Open
wants to merge 12 commits into
base: trunk
Choose a base branch
from
Open

Interactive Debugging #10

wants to merge 12 commits into from

Conversation

dm0n3y
Copy link

@dm0n3y dm0n3y commented Nov 6, 2019

No description provided.

Copy link
Contributor

@cyrus- cyrus- left a 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.

src/live-programming.rst Show resolved Hide resolved

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
Copy link
Contributor

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still need this

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
Copy link
Contributor

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
Copy link
Contributor

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 Show resolved Hide resolved
src/live-programming.rst Outdated Show resolved Hide resolved
Interactive Debuggers
---------------------

describe history of transition from physical computing
Copy link
Contributor

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.


*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.
Copy link
Contributor

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
Copy link
Contributor

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.

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
Copy link
Contributor

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

@dm0n3y dm0n3y changed the title first draft Interactive Debugging Nov 14, 2019
@dm0n3y
Copy link
Author

dm0n3y commented Nov 20, 2019

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.

Copy link
Contributor

@cyrus- cyrus- left a 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.

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},
Copy link
Contributor

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still need this

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.
Copy link
Contributor

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

Copy link
Author

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.

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)
Copy link
Contributor

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

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
Copy link
Contributor

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

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
Copy link
Contributor

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

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,
Copy link
Contributor

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

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)
Copy link
Contributor

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

:filter: key == 'nilsson1994lazy'

.. todo::
write bib entry
Copy link
Contributor

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
Copy link
Contributor

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

Copy link
Contributor

@cyrus- cyrus- left a 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

Base automatically changed from master to trunk February 14, 2021 02:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants