3 ms·
For more than two decades now, I've been using the limited availability of reversible debugging as an example of just how dysfunctional software engineering is
by mncharity 9y ago
For more than two decades now, I've been using the limited availability of reversible debugging as an example of just how dysfunctional software engineering is as a field. The shoemaker's family's tattered feet.
Reversible debugging been around for six decades (eg EXDAMS on Multics), been generally practical for two or three, been available in gdb for one, and now, finally, here we are. It's taken two bloody human generations to get this close to widely deploying TTD.
So yay. Maybe I can now retire TTD as an example of glacial progress. There's no shortage of others. Sigh.
- csours 9y agoI'm curious to hear some. Are you thinking of stuff like Plan 9 files/services?
- mncharity 9y agoGP> example[s] of glacial progress > I'm curious to hear some. How many keyboard keys can you hold down without interference effects? Some keyboards offer 10-ish. Or keycaps which are touch pads. Or change color. Or are little active displays. And touch pads which are pressure sensitive. Or detect proximity. Or have a nice stylus. But not mine. It's not space-cadet, or old thinkpad, but chicklets. One nifty aspect of VR is that a lot of things get unstuck. Even if you're legally blind, VR brings you hand tracking, and vibrational haptics, and spatial audio. You might stroke home-row keys, and make little 3D gestures with fingers. But current Leap Motion hand-tracking software doesn't do linux, so you have to run it in a VM, and point a camera at the keyboard, and... Here we are on HN. USENET had kill files - people you didn't want to see again. Recommendation systems track preferences and predict what might be of interest. Filters and hints - at lunch I only want to see high value content, but after work, I don't might conversational humor, but that varies by thread topic. But here we are on HN. I was recently playing python 2 vs 3 games again. So that's an easy "from __past__ import python2", right? Not without scoped method dispatch. Like Ruby's refinements. Here we are using browsers. Self language prototypical programming now available to the masses? Smalltalk-like live coding? Well, sort of. But try inheriting from a built-in "object" - "error: magical method X only works on magical pseudo-object type Y". Browser implementations have sometimes written the fast path, skipped implementing the general case, and considered themselves done. So does the dearth of prototypical-style code mean it's not a useful style, or is inaccessible, or still hasn't been widely tried? Shrug. We increasingly attempt to decompose our big math, algorithm, and data structure libraries along orthogonal and algebraic lines. Sketching lattices of theories, with types and operators and laws. "1 is not an object; + is not a message" (1980's Smalltalk critique - does anyone remember where to find this? a technical memo?). If an algorithm only depends on + and a partial order, it says that. But it's not yet common. How often do you use units, instead of a primary school "what's the resistance? 3! Three what? 3!... volts!". And how many languages let you be explicit about laws? Or help you avoid "well, in wetware I model the problem domain, and in wetware I design the solution, and in wetware I compile the solution to an intermediate form... which is at long last understood by the idiot software compiler of narrowly circumscribed helpfulness". And how many such lattices support pushouts? Add a law, add an operator, and you get the same thing as if done in the other order. Haskell spent what, a half decade?, with lots of commitee and community discussion, and broken code, just to insert Applicative in its type hierarchy. ARPA folks were once considering adding lots of little "lubricant" grants, analogous to the WWII troubleshooters which scurried around industry asking "what are you bottlenecked on? what might speed your work?" A new adminstration, and ARPA had more existential worries. But one strawman was something like "much of our knowledge about how to write good VM's is in person X's head; they've been meaning to write a book, but aren't getting to it; instead of waiting years for that knowledge to slowly diffuse, it would be inexpensive to pay someone to help, sitting outside their office, and stand on their desk". Instead we did the wait for years thing.
- roca 9y agoAs far as I can tell EXDAMS was never implemented. The RAND EXDAMS memo is more of a thought experiment than anything else. Getting reverse-execution debugging to work adequately at scale is difficult. gdb's approach doesn't scale at all. I dispute that reversible debugging has been "generally practical for two or three decades"; as far as I know the first practical products were UndoDB and VMWare.
- mncharity 9y ago> EXDAMS [...] a thought experiment Ah, good point. > "generally practical for two or three decades" [...] the first practical products I was thinking of "we now know how to do this" (snapshot and replay (and input log)), rather than "and it's a product". Which seems sometimes valid, and sometimes not. We know how to make a 4K/eye VR HMD with existing parts, and it's simply a market failure that one's not on my desk. But for other things, "know how to do it, sort of, in a lab" and "know how to do it, practically, for real" can be greatly separated in time and effort. > first practical products were UndoDB and VMWare My very fuzzy recollection is DEC alpha had a reversible debugger in the late 1990's? - but I'm not finding it.
- mncharity 9y ago> As far as I can tell EXDAMS was never implemented. The RAND EXDAMS memo is more of a thought experiment than anything else. The memo[1] mentions > Since EXDAMS is currently being debugged and is not operational, no performance statistics are available. [p12] Suggesting implementation was attempted, though perhaps not successfully? [1] "EXDAMS: extendable debugging and monitoring system" Memo RM-5772-ARPA APRIL 1969 http://www.dtic.mil/get-tr-doc/pdf?AD=AD0686373 http://www.dtic.mil/get-tr-doc/pdf?AD=AD0686373