Slashdot Mirror


Taking the Pain Out of Debugging With Live Programming

angry tapir writes "'Everyone knows that debugging is twice as hard as writing a program in the first place,' Brian Kernighan once wrote (adding: 'So if you're as clever as you can be when you write it, how will you ever debug it?') However, Sean McDirmid, a researcher at Microsoft, has been working to remove some of the pain from debugging. McDirmid, based at Microsoft Research Asia, has been studying ways of implementing usable live programming environments: a solution that is less intrusive than classical debuggers. The idea is to essentially provide a programming environment in which editing of code and the execution of code occur simultaneously — and in the same interface as code editing — with tools to track the state of variables in a more or less live manner."

254 comments

  1. Greenspun's Tenth Rule by White+Flame · · Score: 2, Insightful

    This will no doubt become an ad hoc, informally-specified, bug-ridden, slow implementation of half of a REPL.

    1. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      I rather think that read-eval-print is the thing that is informal and half-specified, myself. It was a great technique in the days of QBASIC and the TI-85, but VS breakpoints are POWERFUL. Trying to do the same thing with read-eval-print would quickly turn in to a game of Dwarf Fortress.

    2. Re:Greenspun's Tenth Rule by charles2678 · · Score: 5, Insightful

      I suspect you haven't seen a Common LISP debugging environment. Yes, they allow breakpoints, as well as live code modification. (And if you were lucky enough to have a LISP machine, you could dive into the code behind your libraries, your operating system, etc. -- updating state on the fly, all the way back to tweaking a driver on a running machine... on the fly, in LISP).

      What we have these days (say, Clojure's nrepl) isn't as powerful as that, but it's pretty damned powerful even so. Want to tie into your production system and see what a new version of a function would do against currently live production data, without actually changing the production system's behavior? If you're writing purely functional code, you can do that trivially... and the language strongly encourages pure functional code (as opposed to many "modern" languages where trying to write things to be side-effect-free is working against the grain).

      If the best example you can think of is QBasic, you have no idea what a REPL can do.

    3. Re:Greenspun's Tenth Rule by ByOhTek · · Score: 1

      I'm thinking more like the Python interpereter, but with your code being stored in your source files automatically. You can then open the files and add breakpoints as you like. If a function isn't defined, it'll request you build it on call.

      Note: for particularly lazy programmers, this could add more issues, especially with functions that are only called on rare cases.

      It'll be a nice feature I'm sure. I just think the suggestion of the TFS, as if it is something revolutionary... is a few decades out of date.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    4. Re:Greenspun's Tenth Rule by TechyImmigrant · · Score: 1

      If you're writing purely functional code, you can do that trivially...

      But if you're writing purely functional code, you can't have any output, because that would be a 'side effect'.

      Functional programming is an unnatural act.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    5. Re:Greenspun's Tenth Rule by sourcerror · · Score: 2

      That's why they have monads. But LISP isn't a purely functional language anyway.

    6. Re:Greenspun's Tenth Rule by TheRaven64 · · Score: 4, Informative

      Smalltalk-80 (or even Smalltalk-76) is more akin to what they seem to be describing than most lisp implementations. In Smalltalk-80, you can inspect every object in the system, visually, including the objects that comprise the inspector for whatever you're looking at, and you can modify any value on the stack, at any depth, unwind it and so on.

      --
      I am TheRaven on Soylent News
    7. Re:Greenspun's Tenth Rule by kfsone · · Score: 1

      Squeee! Microsoft have disc^H^H^H^Hinvented REPL! Now to enable it in IIS, Exchange, and - hell - Metro. Its not like it could have any security implications.

      --
      -- A change is as good as a reboot.
    8. Re:Greenspun's Tenth Rule by serviscope_minor · · Score: 1, Funny

      But if you're writing purely functional code, you can't have any output, because that would be a 'side effect'.

      Anyone who claims that deserves a swift kick to the monads.

      --
      SJW n. One who posts facts.
    9. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      Oh boy, LISP. A language to revolutionary it still has not found a mainstream use after 5 decades. I'm sorry, but if LISP was really that great, we'd all be using it, QED.

      I respect the concept of LISP, but fact of the matter is that the good bits have already been stolen and integrated into where appropriate. I think at this point we can declare that any time a technical argument touches on LISP, whoever mentioned it first loses, with a possible exception for arguments over graphing calculators of the late 80s and early 90s.

    10. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      If Lisp was really useless, I'm sure everybody else would think so, QED.

    11. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      That was the first thing I thought as well.

    12. Re:Greenspun's Tenth Rule by TechyImmigrant · · Score: 1

      'monad' is the politically correct term for 'side effect'.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    13. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      Nonsense, if I want to output a character to a device, I just pass the device into the output function. That function returns a new device that contains the outputted character.

    14. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      Yes, you're absolutely right. People who have studied functional programming for the last 60 years are deluded and stupid, any computation done by purely functional code is useless because you can never see the result, as that would be a side effect.

    15. Re:Greenspun's Tenth Rule by TechyImmigrant · · Score: 1

      You could think of it that way. But I may have designed that device and I'm telling you, an instruction copied the character into a register in the hardware, causing a change of the hardware state, or given the nature of the times, a pcie bus master sucked it from a cache line.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    16. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      Somehow the arguments against side-effect free programming feel like stating the Earth as being isolated system (form the Sun). Only side-effects affecting the state of the program should be considered side-effects and not those affecting the state of the system as there are multiple programs running in the system anyway, but what do I know..

    17. Re:Greenspun's Tenth Rule by White+Flame · · Score: 1

      This sort of stuff is available in most Common Lisp dev environments as well, though it's not standardized between implementations.

    18. Re:Greenspun's Tenth Rule by Ed+Avis · · Score: 2
      So you have your nicely written function of type int -> int, but now you want to add some trace statements while it executes, but you can't because it is purely functional. Then someone helpfully suggests monads. Now all you have to do is rewrite it to be of type int -> IO int, and rewrite all of the calling functions to be of monadic type too, and so on all the way up to the top level of the program...

      The fundamental problem is that you need some way to separate the program itself (which is purely functional) from whatever scaffolding and diagnostic code you put in to help test and debug it. In imperative languages you can happily mix the two together but in pure functional programming you can't, and the language environment has to provide explicit support for trace messages and the like.

      --
      -- Ed Avis ed@membled.com
    19. Re:Greenspun's Tenth Rule by Anonymous Coward · · Score: 0

      "Anyone who claims that deserves a swift kick to the monads."

      Are you by any chance a finn or an estonian?
      "A kick to the 'monads'" would mean "a kick to the 'balls'".

      http://translate.google.ee/#et/en/munad
      http://translate.google.ee/#fi/en/munat

    20. Re:Greenspun's Tenth Rule by charles2678 · · Score: 1

      But if you're writing purely functional code, you can't have any output, because that would be a 'side effect'.

      The side effects in the scenario I proposed are in the printer, or the nrepl code that speaks to the socket you're connected over. Those side effects are, thus, not in the actual code under test, allowing that code to be safely run against the production system in question.

      There's functional programming for purists, and there's functional programming for people who want to get things done. In the latter case -- a set I belong to -- it's all about isolation and management of side effects, not about attempting to avoid them altogether.

    21. Re:Greenspun's Tenth Rule by TechyImmigrant · · Score: 1

      I agree completely. I was just nit picking the idea of writing 'purely functional code'. In the real world, purely functional code doesn't happen.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    22. Re:Greenspun's Tenth Rule by charles2678 · · Score: 1

      In the real world, purely functional code doesn't happen.

      Sorry -- I can't buy that quite as-written. Complete projects composed only of purely functional code don't happen, sure. Purely functional code certainly does happen -- if you're doing a good job of isolating your state to small chunks of code, and building the rest of your codebase to be easy to cache, easy to memoize, easy to test, easy to parallelize and optimizer-friendly, it happens quite a lot.

    23. Re:Greenspun's Tenth Rule by TechyImmigrant · · Score: 1

      I think I should go to a different thread where I can be less accurate.

      I have a book called "Purely Functional Data Structures". Half the book is talking about all the things you can't do and why. I don't recommend it unless that's a topic that interested you. If it is, the title is spot on..

      Functional HDLs are where you can write purely functional code all day, The fit to instantiated silicon is perfect. There are no side effects in logic gates.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    24. Re:Greenspun's Tenth Rule by cduffy · · Score: 1

      Hmm. A publication date of 1999 predates some of Bagwell's work, but that does look like interesting reading.

      My apologies for the pedantry.

  2. Re:Visual Studio by Anonymous Coward · · Score: 1

    Compiling these two will lead to synergies.

    Obvious troll is obvious.

  3. Re:Visual Studio by Anonymous Coward · · Score: 1

    Hah, beautiful.

    Well done, love your work!

  4. Re:Visual Studio by gabereiser · · Score: 4, Interesting

    seriously? Now I admit that Visual Studio is feature rich, only on windows, only with microsoft stacks, and doesn't compile things in a normal fashion (see #pragma) this above comment just oozes microsoft troll...

  5. And Stroustroup said... by Anonymous Coward · · Score: 1

    "'Everyone knows that debugging is twice as hard as writing a program in the first place,' Brian Kernighan once wrote (adding: 'So if you're as clever as you can be when you write it, how will you ever debug it?')

    And Stroustroup said, "sounds like weakness! Here, have some templates!"

  6. Eclipse by roman_mir · · Score: 2

    I've been using this amazing technique for a long time now, IDEs like Eclipse make it fairly easy to do that. TFS doesn't explain what is it that he is doing differently.

    1. Re:Eclipse by rwise2112 · · Score: 2

      Yeah. This sounds just like a profiler, which has been around forever. Is there something new here, or am I totally off base here?

      --

      "For every expert, there is an equal and opposite expert"
    2. Re:Eclipse by ByOhTek · · Score: 1

      OK, in Eclipse, how do I code & run at the same time.

      I can alter things in the debugger and push them back to the live application, but I can do that in VS too. This is reading more like Python/Lisp, where you can edit as you run, and (as with some of their IDEs) the code gets saved to source files for later use.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    3. Re:Eclipse by H0p313ss · · Score: 1

      OK, in Eclipse, how do I code & run at the same time.

      Type and save it?

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    4. Re:Eclipse by roman_mir · · Score: 1

      What do you mean, everybody knows that's not how you program. You have to create a GUI interface using Visual Basic that's how you track an IP address and incidentally that's how all modern applications are written.

    5. Re:Eclipse by ByOhTek · · Score: 1

      Umm... You can do that in Visual Studio also.

      My suspicion is it's something slightly more integrated, like you can see with a CLI interpereter in Python or Lisp. Particularly the latter, where you just code, and when you are done, you have have it save the most recent version of ever function into a file.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    6. Re:Eclipse by H0p313ss · · Score: 2

      What do you mean, everybody knows that's not how you program. You have to create a GUI interface using Visual Basic that's how you track an IP address and incidentally that's how all modern applications are written.

      In the past few months I've been watching 24 on Netflix since I missed the original broadcasts. Their mis-application of technology is fantastic.

      A drinking game where you take a shot for every time someone uses "port" or "socket" incorrectly would probably get me arrested, I simply can't metabolise alcohol that fast.

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    7. Re:Eclipse by Anonymous Coward · · Score: 0

      A drinking game where you take a shot for every time someone uses "port" or "socket" incorrectly would probably get me arrested, I simply can't metabolise alcohol that fast.

      Actually, that gets you dead. Arrested would be the least of your worries.

    8. Re:Eclipse by H0p313ss · · Score: 1

      A drinking game where you take a shot for every time someone uses "port" or "socket" incorrectly would probably get me arrested, I simply can't metabolise alcohol that fast.

      Actually, that gets you dead. Arrested would be the least of your worries.

      Based on previous experience, extreme silliness usually manages to disrupt the activity of ingestion.

      For the record; It wasn't me. I don't even know the girl. Besides she said she was 18.

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
  7. my old pascal compiler from 1996 had this by Anonymous Coward · · Score: 1

    Old pascal compilers had a crude version of this baked right in. You could watch lines of code blink and change color as they ran.

    OO makes this kind of idea almost infinitely more complex, however. It was a nice feature for procedural programming, saved me a lot of time.

    1. Re:my old pascal compiler from 1996 had this by progician · · Score: 1

      I wonder how would work that code colouring in a multi-thread environment too.

  8. Good, but... by ControlFreal · · Score: 3, Insightful

    ... this should be in addition to good coding/style standards, proper design, proper source revision control, proper code reviews, and continuous testing/integration. Without any of the former, using this tool does not provide that much information: You first want to know whether your code does what you think it should do, whether it is thread safe, whether it is leaking memory, etc., etc., etc.

    --
    Support a Europe-related section on Slashdot!
    1. Re:Good, but... by Anonymous Coward · · Score: 0

      Well, it does execute the piece of kernel level code you just wrote.. BSOD should be a punctuation mark.

  9. Microsoft Foundation Classes by Latent+Heat · · Score: 2, Interesting
    Yeah, yeah, reinventing LISP.

    Forget that, will this be reinventing, dunno, "MFC .NET", where software is effortlessly implemented, tested, and documented using a mix of object classes, C++ templates, custom extensions to C++ that break portability, "wizard" (i.e. obscure template) generated code, a virtual machine, and calls between "managed code" on the virtual machine and native code that break security and prompt stern security scoldings when your code is on a virtual drive or "network share"?

    1. Re:Microsoft Foundation Classes by Anonymous Coward · · Score: 0

      Or smalltalk.

  10. If it uses .NET then I'll pass by RogueWarrior65 · · Score: 0

    Nothing pisses me off more than programs written dependent on .NET except perhaps every government website that requires you to use IE instead of pretty much every other browser. On further thought, the fact that government websites require you to use effing Lotus to submit forms instead of PDF also sucks.

    1. Re:If it uses .NET then I'll pass by gbjbaanb · · Score: 1

      don't worry - Microsoft broke "edit and continue" in .NET so it doesn't work at all (in the case of 64-bit code) and doesn't work well the rest of the time, something that was awesome in C++ and VB coding.

  11. Re:Visual Studio by DJ+Jones · · Score: 5, Funny

    Have you tried the new VS2012? They took a shotgun to the UI and the file menu is still screaming from the trauma.

  12. Re:Visual Studio by Anonymous Coward · · Score: 0

    *golf clap*

  13. Prograph by MrLizard · · Score: 1

    Prograph did this in the early 1990s. Way to innovate, Microsoft!

  14. 1980 called... by Anonymous Coward · · Score: 2, Funny
  15. Re:Visual Studio by Anonymous Coward · · Score: 2, Insightful

    seriously? Now I admit that Visual Studio is feature rich, only on windows, only with microsoft stacks, and doesn't compile things in a normal fashion (see #pragma) this above comment just oozes microsoft troll...

    It's a troll alright, pretending to be over-the-top-Microsoft shill and still getting some Slashdotters riled up, even though this has been going on for a long while and obvious troll is obvious.

  16. Wow by LizardKing · · Score: 5, Funny

    They've reinvented Smalltalk. Let's party like it's 1980.

    1. Re:Wow by Anonymous Coward · · Score: 0

      Why is the computer industry hell bent on constantly reinventing the wheel?

    2. Re:Wow by FalcDot · · Score: 2

      Sounds more like they reinvented the Python console...

      Or, you know, bash.

      Any shell, reallly.

    3. Re:Wow by JackPepper · · Score: 1

      I was going to type FORTH. Or colorFORTH because it has that wonderful colored interface.

    4. Re:Wow by Spudley · · Score: 3, Informative

      Why is the computer industry hell bent on constantly reinventing the wheel?

      Because the computer industry (and certainly the louder and more vocal parts of it) has a heavy bias of young excitable developers who are talented enough to create these things from scratch, and not experienced enough to think that others might have done similar things in the past.

      --
      (Spudley Strikes Again!)
    5. Re:Wow by ranton · · Score: 4, Insightful

      Why is the computer industry hell bent on constantly reinventing the wheel?

      Why are people in the computer industry hell bent on complaining when people take concepts from well designed software of the past an implement it in more popular development tools? Can you imagine how annoying it would be if architects kept saying "The Romans figured out arches two thousand years ago, why do these new kids keep reinventing the wheel" ?

      IMHO, I welcome most attempts to take the good features from Smalltalk and implement in more heavily used languages.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    6. Re:Wow by Anonymous Coward · · Score: 0

      Or Matlab/Octave

    7. Re:Wow by bored · · Score: 1

      Can you imagine how annoying it would be if architects kept saying "The Romans figured out arches two thousand years ago, why do these new kids keep reinventing the wheel" ?

      Uh, I think you got your analogy a little wrong. What happens in software is more like "Arches suck cause they are old, and suspension bridges are hard to build. Steel is cheap, lets just build a couple stone pillars and layer on steel to span the gap".

    8. Re: Wow by Anonymous Coward · · Score: 0

      Because wheels go round and round?

    9. Re:Wow by Splab · · Score: 1

      If you think debugging in the console has anything to do with debugging, you are missing out.

      Connecting a debugger to python and stepping through your code is by far the smartest way to figure out what the freck is going on - no printing xyz all the time to see what happens. You just put a break point and you will have all the juicy goods, including stuff you didn't think of looking at.

      Personally I use IntelliJ with the Python plugin (essentially PyCharm), it rocks.

    10. Re:Wow by Anonymous Coward · · Score: 0

      You mean like this? http://www.youtube.com/watch?v=xfNluQ888g4 (NSFW I guess, it's a music video)

    11. Re:Wow by Giant+Electronic+Bra · · Score: 1

      I never really 'got' colorFORTH. Good old FIGForth and its descends are still out there chugging away though.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    12. Re:Wow by ceoyoyo · · Score: 1

      Hm. 90% of the bridges I see are just that.

    13. Re:Wow by ceoyoyo · · Score: 1

      Yes, that's one way. It can be useful. Another way is just to put a code.interact() in as a breakpoint and then paste or type lines in as you go. That way if you find a bug you can fix it and continue without restarting the program. Which is what I assume the article is talking about, except with a nice GUI plastered on top.

    14. Re:Wow by Anonymous Coward · · Score: 0

      If you think debugging in the console has anything to do with debugging, you are missing out.

      Connecting a debugger to python and stepping through your code is by far the smartest way to figure out what the freck is going on - no printing xyz all the time to see what happens. You just put a break point and you will have all the juicy goods, including stuff you didn't think of looking at.

      Personally I use IntelliJ with the Python plugin (essentially PyCharm), it rocks.

      Woosh.

      Programmers go through a few phases when learning the art:

      1) Print/log data to understand what is happening on a locally running program.
      2) Use an interactive debugger to step through a locally running program.
      3) Write smoke tests on tricky code, and see that it passes before plugging the parts together into a full program.
      4) Use correct-by-construction methods to tie the parts together.

      You are stuck at step 2. This conversation is aimed at people who are moving from step 3 to step 4.

    15. Re:Wow by bored · · Score: 1

      Are you sure? Because where I'm at (Texas), the steel is in the form of rebar. Concrete is the main structural component. Steel bridges are usually trestle. Because even back when steel bridges were popular there was incentive to save money on the steel.

      But, Yah that is the problem with analogies now isn't it...

    16. Re:Wow by ceoyoyo · · Score: 1

      I'm not sure what you mean. 90% of the bridges I see are pillars supporting spans - they use material strength (reinforced concrete) instead of engineering (arches and such).

      The older bridges (and there are several steel bridges here) are all arches and triangles and suspension. The older concrete bridges make extensive use of arches.

    17. Re:Wow by Anonymous Coward · · Score: 0

      I'm not sure what you mean. 90% of the bridges I see are pillars supporting spans - they use material strength (reinforced concrete) instead of engineering (arches and such).

      We are in agreement. Both on the concrete, and the fact that analogies, including mine suck.

    18. Re:Wow by Anonymous Coward · · Score: 0

      Because we aren't reinventing the wheel. People are just too lazy to think and read the paper.

  17. Live Syntax checking. by cant_get_a_good_nick · · Score: 1

    Though not quite the same I like an IDE (like Eclipse) for Live Syntax Checking. What makes it better than a text editor is that It can check syntax on the fly, and remove some of the edit/compile/broken-compile/swear/re-edit/recompile loop.

    No, it's not as cool as potential Live Running, but it helps a lot to keep your mind on code flow rather than language syntax.

    1. Re:Live Syntax checking. by CastrTroy · · Score: 5, Interesting

      Welcome to VB.Net. It's been there for ages. Mind you you have to pause the debugger to edit the code, but that's probably a good idea anyway. VB.Net also has some of the best pre-compile (it has a background compiler) syntax checking of any language I've ever seen. The only time you actually have to compile the program is when you want to run it, you never have to compile to make changes show up for auto-complete. And once you're running in the debugger you can edit the code anytime the code is stopped. There's a few limitations. I'm not sure if you can add a whole class while it's running, but you can definitely fix all those little off-by-one errors and continue running the program.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    2. Re:Live Syntax checking. by Wormsign · · Score: 1

      I came here to say this. Or, rather, "Welcome to VB scripting!"

    3. Re:Live Syntax checking. by geek · · Score: 1

      Yeah but then you have to use VB and "dot Net"............ I'll pass

    4. Re:Live Syntax checking. by Anonymous Coward · · Score: 0

      These features are available for C++ as well in Visual Studio since... well, at least VS 6.0 I think.

      Visual Studio 2012 provides an amazingly rich development environment.

    5. Re:Live Syntax checking. by TangoMargarine · · Score: 1

      There's a few limitations. I'm not sure if you can add a whole class while it's running, but you can definitely fix all those little off-by-one errors and continue running the program.

      E.g. you can't add/edit/delete function prototypes or the contents of try-catches. In C#/C++, anyway. Which makes a lot of sense.

      --
      Unity? Screw that: XFCE. Slashdot Beta? Screw that: SoylentNews. Australis? Screw that: Pale Moon. UX developers DIAF
    6. Re:Live Syntax checking. by gbjbaanb · · Score: 1

      Agreed VB.NET is much better than C# (ironically), its strange that MS spent so much effort in developing C# when its just VB.NET with curly brackets and a heap of missing functionality!

      BTW, C++ has had this "edit and continue" functionality since VS6, and it works a hell of a lot better than the .NET version. You can even e&c 64-bit code!

  18. Little more than eye candy by Anonymous Coward · · Score: 0

    An approach to address debugging of defects that are easily addressable by other means, albeit with less in the way of eye candy. Wake me up when this approach effectively addresses timing issues.

  19. Spreadsheet by vgerclover · · Score: 1

    So, it's a spreadsheet, basically? It isn't a bad idea at all.

    1. Re:Spreadsheet by SJHillman · · Score: 2

      Reminds me of batch files, personally. As long as the script runs in a loop of some sort, you can have Notepad open to edit the script while it's still running. I think shell scripts are the same way, although I haven't done much with shell scripts in years.

  20. Re:Visual Studio by Anonymous Coward · · Score: 0

    I saw #pragma. What's the problem?

  21. Re:Visual Studio by Anonymous Coward · · Score: 1, Interesting

    Visual Studio is by far the best debugger in the industry, and one of the reasons I've decided to stay out of Windows development from now on. It attracts crowds of people who rely extensively on code wizards and the debugger for all phases of development including initial coding, and if you're on that team you'll be stuck maintaining their code.

    Torvalds has said some characteristically blunt words on the subject of relying on the debugger for development (not Visual Studio per se). I don't think I'd go that far.

  22. Re:Visual Studio by neminem · · Score: 4, Interesting

    Apparently you're a troll? A weird one, because I kind of agree with you (except about Express: yes, it's free, but it's also so limited as to be basically crap.) VS *is* really the greatest IDE I've ever used. It's not perfect, but it is the best I've used. I obviously have not used every IDE ever, and I will also admit that it's much better at debugging .net code than unmanaged c++ code, but still. Microsoft has pushed a lot of crappy, worthless software, but VS 2008 was quality, and 2010 even better (apart from a couple minor UI mistakes, easily fixable with free extensions). Notably, at least far as the summary went, it's done everything this guy is claiming he invented, since basically forever. (Though I personally leave the "recompile on the fly" option turned off; I think it's more trouble than it's worth.)

  23. borland Turbo Pascal 2.0 ! by Anonymous Coward · · Score: 0

    Still a dream today .....

  24. 1990s style version of this by concealment · · Score: 1

    VIM editing Perl code in one window, another for an execution trace, and a third to run the program. Ugly and basic but it gets the job done.

  25. Re:Visual Studio by ByOhTek · · Score: 2

    OK. I've yet to find a better overall environment (though Eclipse + Java beats VS in some aspects of debugging, neither seems better at every aspect). However, I don't see the point of your post. In reality "care" would have been implementing this YEARS ago. I mean, I've used Python for a long time, and all I can think is "I have this in Python. WTF is novel or research about this? Just %$#@ing do it.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  26. Re:Visual Studio by LordThyGod · · Score: 1

    All in all, Microsoft Visual Studio keeps getting better!

    Yea, but its from Microsoft.

  27. input? by schlachter · · Score: 1

    how would it integrate data/network/user input?

    how does it know when to start live testing, as pieces of interdependent code are being written?

    --
    My God can beat up your God. Just kidding...don't take offense. I know there's no God.
    1. Re:input? by war4peace · · Score: 1

      I was wondering about this myself. I would have it generate "fake" sample data, much like "previews" work for reporting enviromnents (Tableau and OBIEE for example). A wee bit difficult to implement that for networking, but user input can be easily interpreted (the GUI allows you to set some defaults) and regular data input can be set up through data templates (use this table, use that CSV, etc).

      --
      ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
  28. Re:Visual Studio by progician · · Score: 3, Informative

    You must be very unbiased guy in general. No MS partisanship, whatsoever.

    While I agree that the MS Visual Studio is a good IDE over all, there are better alternatives out there. The first real problem with it is that it's single-platform. You can't use it anywhere.
    The extensibility is a bitch in VS. It takes too much time and effort to figure out it's API, and it's quirks. Not to mention the support for these retarded languages that VS supports, apart from C++ and C#. That is the only two that worth even to look at.
    The debugger is great... except that the whole IDE is based around their own debugger, and you making a debugging interface in VS takes more time than any other IDE out there.
    Visual Studio also very rigid on your project structure, and if you don't subscribe to their project file model, you are basically screwed.
    Not to mention, that Visual Studio is a resource hog only running on very beefy configuration. Oh, and don't get me started with the useless packages that installs on your system for no apparent reason. Finally, if you want to do refactoring, you have to purchase an external tools, like VAX.

    So, while it has some good features for which MS deserves a candy, overall it isn't that good, no need for jumping up and down like a puppy dog.

  29. they have a word for this by waddgodd · · Score: 4, Informative

    "a programming environment in which editing of code and the execution of code occur simultaneously" is commonly called an interpreter, welcome to 1975

    --
    Just because you're paranoid doesn't mean they aren't out to get you
    1. Re:they have a word for this by gmcclel · · Score: 1

      As I work daily in BBx (still), a Business Basic interpreter, I too wonder what the big deal is.

      --
      --- Gary McClellan
    2. Re:they have a word for this by DavidHumus · · Score: 2
  30. Finally, A Silver Bullet by dcollins · · Score: 1

    For I have been looking for one, lo, these past 27 years.

    --
    We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
  31. Good Testing helps debugging by realsilly · · Score: 1

    I do not code or develop code any more, but I'm great for finding bugs in code which irks my developers to no end. But conversely, they really like when I test their code, especially when they want to have bugs found. I know how to recall what I did when creating my bug report. I almost never report something as a bug until I can repeat the issue and then I usually re-create the issue two more times to ensure I recall just how I got to that bugged state. I document step by step instructions and follow it up with screen shots. If weird occurrences are also observed, I note those as well. I also try to note down what version of software I am running, because that also helps to narrow down an issue.

    While all of the info I provide doesn't always help in debugging all code, it certainly simplifies the process by the developer to figure out what's wrong and where it's taking place. In essence, my good testing and regurgitation of information help cut down debugging efforts by a large percent.

    God knows it's better than "I clicked a button and the program blew up".

    --
    Life takes interesting turns, but the most interest is when you're off the beaten path.
    1. Re:Good Testing helps debugging by Anonymous Coward · · Score: 0

      We call this delivering 'Bugs on a sliver platter'.

      Getting a bug like this, especially an obscure one is to be treasured.

    2. Re:Good Testing helps debugging by war4peace · · Score: 1

      The problem is that most corporations reduced UAT and bugtesting to... nothing, really. They just launch the product and then patch it endlessly, basically using their customer base as bug testers.
      I've seen bugs in end products that were ridiculously OBVIOUS, e.g. the program wouldn't install on ANY x64 Windows OS (XP, Vista, 7). That's the sad state most software products are in right now...

      --
      ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
  32. Will this work for large projects? by Anonymous Coward · · Score: 0

    How is the implementation going to dynamically show me the output of my 1million LOC 3D game? This sort of stuff is useful when scripting for games in Lua, Python or JS but a fibonacci example is not really proving a thing.

    1. Re:Will this work for large projects? by ceoyoyo · · Score: 1

      If you've got bugs that have effects everywhere in your 1 million LOC 3D game no debugger is going to help you.

      One of the biggest advantages of live code editing (otherwise known as an interpreter) is that you don't have to rerun the whole thing after every little change. So if the boss at the end of level 143 glitches you get execution to that point, see what happens, try a fix, see if it works, etc., without having to quit the game, restart, and get back to the boss.

  33. Good to do the debug thinking while writing code by Anonymous Coward · · Score: 1

    While I'm writing code is the easiest time to think about how it might misbehave.
          I put in debugging in the form of asserts.

    Debugging often consists of just making a strongly typed, picky compiler happy and then clearing the asserts.

    Sometimes it takes a week or so before there is enough surrounding code to actually debug anything.
          Without the asserts, I have get back to the frame of mind I had early in the week.
              With the asserts, I don't.
                  As a bonus, the asserts are still around for regression testing for later code mods.

    The model they propose (simultaneous coding and debugging) doesn't work until you have a 'quorum' of code to do incremental improvements on.
        If you want to stop an spend a week restructuring, same story.

    But for incremental improvements, sounds great.
          Again, you are in the best possible frame of mind to think about how code can misbehave while you are writing it.
       

  34. Bret Victor by Anonymous Coward · · Score: 0

    Already done, much better, by Bret Victor. See http://vimeo.com/36579366 at time 3:36.

  35. nice but limited, what would be cooler... by Anonymous Coward · · Score: 1

    Very nice, but its usefulness is really limited to functions where the parameters are simple objects or native types. Complex objects would require too much initialization to make the unit test worthy.

    Here's what would be more useful for anyone out there working on debuggers to consider:

    Typical step debugging has a really pathetic interface with the following interface:

    - break
    - step
    - step over
    - step out
    - resume

    I've been using that now for 20 years. What would be nice would be to add the following:

    A resume with a reduced speed option. In other words, start stepping with a slight delay, with visual feedback, so the developer can see the code as it is stepped through. Allow the developer to control the speed of the stepping (mouse-wheel or some dial) as well as dynamically prompt the debugger to step out (climb back up the stack) when the debugger gets too far down into weeds.

    Replay. Vmware is making this happen with their tools, but it would be nice if this were more ubiquitous. The developer should be able to start "recording", and every memory/register change from then on is tracked, such that the developer can rewind instead of only being able to move forward.

    And for anyone working on language development, my 20 years experience has shown that the null-pointer exception is the most common problem that people run into. It would be nice if coding languages enforced natively the concept of a object reference/pointer parameter not being null at compile time. The C/C++ reference (&) comes close, but you can still circumvent it by simply de-referencing the pointer. You can get around this with templates/generics/etc but it is a hassle.

    Please implement.
    Thanks

    1. Re:nice but limited, what would be cooler... by CrackHappy · · Score: 1

      OMG - rewind/replay. That would make my day. Then I could record the output to that and make a scratch mix of code going backwards and forwards.

      --
      1f u c4n r34d th1s u r34lly n33d t0 g37 l41d Capitalization really works: i helped my uncle jack off a horse
  36. No silver bullet by dkleinsc · · Score: 1

    Fred Brooks noted this one years ago, and it's still true: The reason programming is complicated is frequently because the real-world problem you're trying to model in software is complicated. The reason debugging is even more complicated is that not only do you need to understand what you're trying to model, you also need to understand exactly how the existing software modeled the real-world problem.

    --
    I am officially gone from /. Long live http://www.soylentnews.com/
    1. Re:No silver bullet by H0p313ss · · Score: 1

      ... you also need to understand exactly how the existing software modeled the real-world problem.

      Well... usually how the existing software failed to model the real-world problem. (That and understanding the difference between the code and the comments, never trust the comments.)

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    2. Re:No silver bullet by gweihir · · Score: 1

      Very true. All this tool does is to suggest to people of even lower skill level that they can be programmers.Writing good code is hard and one way to learn avoiding making mistakes is if mistakes have consequences. With this tool, even more people will start to use an experimental approach to coding, where thinking about what they want to do beforehand is not part of the process anymore. That can only lead to disaster.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  37. This should be fun by Anonymous Coward · · Score: 0

    INSERT...

    No!!!!!!!!!!

  38. Modern projects make it more complex by unfortunateson · · Score: 1

    At first glance, I just want to say, "Hey, Basic Interpreter from the 70's, you're finally getting some respect!"
    But there are some deep issues that are, even with these techniques, going to be very hard to debug:
    1) Large I/O situations -- real time data collection and display. Weather reporting, gaming, etc. How is debugging on the GPU going to be helped by this, would be one of my first questions.
    2) Networked, distributed code -- with clients on multiple platforms (CPU, browser, Java version, etc.), and clustered virtual servers, where do you debug? Just locating which side is in error (wrong message being sent, wrong message being heard, wrong result being stored/displayed) is a challenge, and real-time transactions (for instance, race conditions on a resource that could be anything from an interrupt bit to a piano in inventory) further complicate this.

    If they ever come up with a debugger that will let me hook into both the client and the server at the same time, that would be brilliant.

    --
    Design for Use, not Construction!
  39. Like a Lisp REPL then? by CptPicard · · Score: 1

    Cool, I knew this would make a comeback from the 60s or something.

    --
    I want to play Free Market with a drowning Libertarian.
    1. Re:Like a Lisp REPL then? by michael_cain · · Score: 1

      Or IBM's APL interpreters from the end of the same decade. Talented programmers have known what a debugging environment should provide for more than 40 years. Interpreted languages got there first, for all the obvious reasons. Same stuff just keeps getting reinvented for different languages and systems. That doesn't mean the new stuff isn't good, it just means it's not really new.

  40. Re:Visual Studio by ByOhTek · · Score: 1

    From my understanding, I thought that was exactly the purpose of #pragma - nonstandard stuff.

    As for windows-only stacks... That's BS, at least for .NET.

    However, yeah, the compiler is stuck to Windows, and their C++ interpretation (not including pragmas, which are for non-standards), is... at best "wonky"

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  41. Re:Visual Studio by Chrisq · · Score: 2

    Compiling these two will lead to synergies.

    Obvious troll is obvious.

    Do you mean shill? If so I agree.

  42. Re:Visual Studio by ByOhTek · · Score: 3, Insightful

    You must have closed your eyes and plugged your ears at the shotgun. I admit it was pretty gruesome. However, after wards they brought out the chainsaw, boiling acid and a couple of fighter jets for good measure... It was horrible.

    The sad thing is... They already did that once before to get to the UI that was in 2010... The UI does seem to be getting worse and worse... Just like with their OS and Office products (and it seems, many others to a lesser degree).

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  43. VB6 by MNNorske · · Score: 1

    Pretty sure these were features of VB6. I remember hacking out code, using the immediate window to trace values, setting break points, stepping through the code, modifying in the middle of execution, and then resuming execution. The language itself may have had a lot of issues and performance issues, but the IDE and development environment had some very nice features.

    1. Re:VB6 by Anonymous Coward · · Score: 0

      Yes, I was thinking the same thing. I think an early version of .Net had it as an option as well.

    2. Re:VB6 by DarkOx · · Score: 1

      Your memory is a bit off. You could modify variables, call subs, functions, that might change values from immediate while stepping or stopped on a break point. You could not change code; though.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    3. Re:VB6 by Anonymous Coward · · Score: 0

      And that functionality was available as early as in QuickBasic which came out in 1985.
      TFA itself is almost completely content-free; the only kernel of information is the video (youtu.be/UVf1SJnNb6E) which didn't leave a positive impression with me.

  44. Does not solve the problem, may make it worse by gweihir · · Score: 1

    The problem is that so many programmers need debuggers in the first place. That is a sign of low competency levels. I found that using methods from design by contract basically eliminate the need for debuggers as they lead to much, much better code and give you errors that are directly meaningful. Of course, this requires thinking about what you want to program before doing so, as you are actually implementing a check of its implementation before you implement the actual code. And it can be done in any language once you have understood the concept. The only time I use a debugger is when diagnosing obscure problems, but that requires a lot of thinking about the state I see anyways, and DDD is perfectly fine for it.

    This tool does nothing than making programming seemingly accessible to programmers of even lower skill. Writing code that does what you want is easy, but writing it as simply as possible (maintainability), with clear and clean interfaces, robust, aware of special cases, fast, etc. is not. Hence the only thing this tool will is to decrease code quality overall.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:Does not solve the problem, may make it worse by Anonymous Coward · · Score: 0

      Debugging is not just about finding errors, it can be an interactive tool to help you understand a problem. If you don't need debugging, perhaps you're working on problems below your pay grade? Personally, I don't use debugging much for my "work" code - but I debug all the time when doing more complicated problems on personal projects or TopCoder (particularly in marathons).

    2. Re:Does not solve the problem, may make it worse by Anonymous Coward · · Score: 0

      way to sound like an elite asshole.

      ps -fuck you.

    3. Re:Does not solve the problem, may make it worse by Anonymous Coward · · Score: 0

      You're funny.

    4. Re:Does not solve the problem, may make it worse by david_thornley · · Score: 1

      Once you work on real projects, you'll find that they include a lot of code you don't get to rewrite from scratch, no matter how much better you'd do it. I'm not nearly as interested in techniques of how to write good new programs as I am in techniques of how to work on programs that have been evolving for fifteen years or more, changed heavily in that time, by people of varying (usually quite good, in this shop) ability levels. Debuggers can be very useful to figure out what the code does currently.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    5. Re:Does not solve the problem, may make it worse by gweihir · · Score: 1

      You did notice that the story was about a tool helping you debug while you write code, right?

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    6. Re:Does not solve the problem, may make it worse by gweihir · · Score: 1

      Interesting how some people lose all manners once they think they are anonymous. Hint: Civilized behavior is something you do for yourself because you undertand it is right. But I guess that thought is way beyond you.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    7. Re:Does not solve the problem, may make it worse by gweihir · · Score: 1

      No. I have looked at quite a bit of code written by people this tool is targeted at. It stops being funny very fast. Then it starts being tragic, because while there surely is some things these people _can_ do well, coding is not one of them.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    8. Re:Does not solve the problem, may make it worse by david_thornley · · Score: 1

      Yup. I've written lots of code in my time, and relatively little of it was on new projects. Most of it was new features on code bases that had been around a long time, and none of them had design-by-contract built in from the start. I don't think I'm at all unusual in that.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  45. Re:Visual Studio by ByOhTek · · Score: 1

    Heh. That is most certainly not the product most people would go for. And honestly, I'd just as soon go with Professional or Express & use Mercurial to make up the difference.

    Ultimate has features you only need if you are in a huge corporation/project setting

    A more normal user might go for this ($500)
    http://www.amazon.com/Microsoft-Visual-Studio-Pro-2012/dp/B008RW3XIO/ref=sr_1_1?s=software&ie=UTF8&qid=1366038707&sr=1-1&keywords=Visual+Studio+2012

    Which, I admit, is a bit high for most, but if you don't need a lot of the code sharing or installer building tools, (and why should you, there's Mercurial for the former, and the latter isn't so hard to roll your own), you can always go for the Express edition, which is free/

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  46. give me the ability to reverse system time by Chirs · · Score: 2

    I just want the ability to detect a fault and then run my entire system backwards to figure out where the problem came in. Wind River Simics can do this, but it's expensive and time-consuming to get a model of your hardware unless it happens to be something they already support. It's also slow to run (as you'd expect).

    1. Re:give me the ability to reverse system time by eric2hill · · Score: 2
      --
      LOAD "SIG",8,1
      LOADING...
      READY.
      RUN
    2. Re:give me the ability to reverse system time by jgrahn · · Score: 1

      I just want the ability to detect a fault and then run my entire system backwards to figure out where the problem came in. Wind River Simics can do this, but it's expensive and time-consuming to get a model of your hardware unless it happens to be something they already support. It's also slow to run (as you'd expect).

      Stuff from Lauterbach also gives you that. Not slow, but expensive and hard to set up, and the user interface was hell ten years ago. Still, running the state backwards from a breakpoint was a real eye opener.

    3. Re:give me the ability to reverse system time by Anonymous Coward · · Score: 0

      You mean like this obscure tool's reverse debugging: http://www.gnu.org/software/gdb/ ?

    4. Re:give me the ability to reverse system time by Anonymous Coward · · Score: 0

      Love it. But I need it to work
      - on DirectX/OpenGL/etc
      - on a couple hundred thousand line codebase
      - on a performance-demanding application
      - within a reasonable amount of time (if the bug happens after 20 minutes of running, it looks like VMWare needs to replay those 20 minutes first before it can tell me the last change).

      Are those supported?

    5. Re:give me the ability to reverse system time by cgdae · · Score: 1

      You can run a single process backwards and forwards on Linux with UndoDB.

      E.g. after a SEGV caused by dereferencing a bad pointer, set a watchpoint on the pointer value and then run backwards to see where the pointer was last modified.

      [Disclaimer: i'm a founder of Undo Software]

      --
      http://op59.net/
  47. slowpoke by equex · · Score: 1

    Hah, this techinque is called PHP+println() and is not new by any means. I programmed PHP live with 50-100 clients ready to kill me if i clicked Ctrl-S a bit too early. Noobs.

    --
    Can I light a sig ?
  48. Welcome to smalltalk, circa 1980's... by zaroastra · · Score: 2

    This looks soooo much like the way smalltalk engines where implemented in the 80's it's boring.
    One can always count on MS to bring the latest in software innovation

    --
    I'm trying to get modded "Interesting Flamebait Informative and Insightful Redundant Troll" *-* Please Help *-*
    1. Re:Welcome to smalltalk, circa 1980's... by turkeyfeathers · · Score: 2

      They've brought smalltalk into the 21st century... by adding Clippy!

  49. Heisenbugs by Anonymous Coward · · Score: 0

    I need to read up on this but my first reaction is that you wouldn't run production code in this new debug environment, so how do you know code that works in this new debug environment will work after being compiled (to .NET or native code - remember MS is pushing C++ native code again, and this new debug environment sure wouldn't do much with C++!) and put into production?

    1. Re:Heisenbugs by ceoyoyo · · Score: 1

      Others have done this trick with C++ code, I don't know why MS couldn't.

  50. I am sure it is not totally useless. by 140Mandak262Jamuna · · Score: 1
    Just as I am crunching down on my last bunch of some 40 odd bugs to make it for the release such news stories come as a welcome day dream. I am sure there are products where you could edit source code while running and the running code dynamically responds to code changes.

    But the most difficult bugs are not the crashes or randomization introduced by the thread completion order. What is difficult is the bug that happens after several hours of computation. Longer it takes for the bug to manifest itself, harder it is to debug. Of course it is my luck I end up with coding for such products. Not that I am complaining. It needs a special skill have such products humming along, and it takes a long time on the job to develop it. The pay, benefits and job security are good. So I am not threatened ...

    BRB

    What Bob? Boss wants to see me? Why is she having these gentlemen from security and the HR blond boy with her?

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  51. Oh good. You have discovered the interpreter. by Anonymous Coward · · Score: 0

    Good work. Great to see R&D money is not going to waste.
    Might want to talk to the VB6 guys if there are any left.

  52. Sigh by Anonymous Coward · · Score: 0

    My first reaction was:
        I've been doing this in python for at least 5 years, and it's probably been around longer.

    Then I thought for a second about a CS prof I had who had a MIPS course where they did this in emacs back about 2000...

    Then I thought about EMACS.... oh yeah... LISP, SCHEME, rep loops...

    Then I thought on LISP -- oh yeah, MIT built fucking hardware and o/s that did this shit in the 70's.

    I may find the idea of LISP fairly distasteful... but this idea is nothing new under the sun. It's in fact older than I am, and older than some of my friends that have kids...

  53. Re:Visual Studio by gabereiser · · Score: 1

    Sure you can compile mono code with vs. But it's still a windows stack just ported to *nix. I love mono, don't get me wrong. I also love C# even though I'm a more java guy than anything. But for this guy to oogle over visual studio with such fanboi-ism as to neglect the fact that TFA talks about live programming and how awesome it would be for direct feedback of variables and scope and the like to preach the microsoft kool-aid to us /.'s is ridiculous.

  54. Limitations. by QilessQi · · Score: 1

    McDirmid notes that there are limitations to his prototype. For example, the approach used by LPX won't work for "interactive programs whose inputs consist of time-ordered events and whose outputs can vary over time

    You mean, such as programs which offer a user interface, and which both write to and read from some kind of persistence layer or document storage on the backend?

    Well, at least there can't be too many of those....

  55. A better method... Incremental by Anonymous Coward · · Score: 0

    Why would anyone try to write a program all at once, then debug? I've always written software in pieces, and each piece gets compiled and tested before moving further along. That irons out 99% of the bugs, and using an actual debugger is unnecessary (printed messages from testing can reveal any bug). The remaining 1% of bugs jump out along the way (or after finishing), and looking at the code with a problem in mind is all it takes to find and fix them.

    No debugger or elaborate runtime compiler necessary.

  56. Apple quote in article by CODiNE · · Score: 4, Informative

    What's funny about this article is it's focused on a very limited text based debugging system where the author is already apologizing for bugs while demo'ing it.

    It mentions a quote from an Apple guy on the same topic. Wait a minute... Apple is working on this too? So you click the link and find a much better article with a similar system that's way more advanced and live connects the graphics with the code.

    Just kind of sad, I RTFA and think "Huh, that's interesting, someday" then check out the link inside the article and find a much more informative and interesting story that I'm still reading. Read THAT article instead. Looking forward to seeing this creep into Xcode updates.

    --
    Cwm, fjord-bank glyphs vext quiz
    1. Re:Apple quote in article by MouseR · · Score: 1

      The sad part is we had that in XCode years ago, called "Fix And Continue". But it was always a hit-or-miss thing. Could only tweak leaf functions and depending on link scenario didnt always work. They pulled it out a few releases back (XCode 3.5?) in order to concentrate work on LLDB.

    2. Re:Apple quote in article by TheLongshot · · Score: 1

      Course, your comment would be more informative if you posted a link to the article in question. Instead, we have to RTFA above to find the link you are talking about.

    3. Re:Apple quote in article by ceoyoyo · · Score: 1

      I saw a demo of live debugging in Xcode years ago at WWDC when Apple was showing off bits of Clang. Not sure if it's still there or it got taken out.

    4. Re:Apple quote in article by Anonymous Coward · · Score: 0

      Has also been in Visual Studio for many, many years, called Edit and Continue.

    5. Re:Apple quote in article by Anonymous Coward · · Score: 0

      I'm only going from what you wrote, so I might be wrong, but:
      Visual Studio had "Edit and Continue" since VS 2005.

    6. Re:Apple quote in article by Anonymous Coward · · Score: 0

      Well some how, all that dynamic flexibility its the core of GNUStep derivative eToile, with their extended openstep Objective-C runtime... but in a much more SmallTalk kind of way for mac and linux ( on windows, as i mentioned before dolphin smalltalk or blackbox component pascal are closer to the goal )

      http://etoileos.com/etoile/

    7. Re:Apple quote in article by loneDreamer · · Score: 1

      Better yet, look at the video: http://www.youtube.com/watch?v=PUv66718DII

  57. Light Table? by Anonymous Coward · · Score: 0

    This sounds like Light Table for Clojure:

    http://www.lighttable.com/

    It's supposed to help you see the flow of data through your program, as you're coding, by executing things and showing you the results in the IDE.

  58. Write-compile-test-fix cycle by Anonymous Coward · · Score: 0

    What's wrong with very short write-compile-test-fix work patterns? Instead of writing code for weeks on end, do very short write-save-compile cycles, to make sure your code at least compiles most of the time, then, when you think your subfeature is testable, take a break from spilling code and test that what you wrote does what you think it does, then fix it until it actually does what you meant it to do. While at it, you'll also notice that you can take some the code you just wrote and move it into its own reusable module.

    Oh, right... you need to understand what the hell you are doing :)

  59. No, you're completely wrong by Anonymous Coward · · Score: 0

    VB6 had very functional edit-and-continue - it took MS a lot of versions of .NET to get back up to the same general functionality.

    Why not check if you're right before randomly gainsaying someone?

    1. Re:No, you're completely wrong by DarkOx · · Score: 1

      I am right. Its been a lot years, and I don't have VB6 handy but I do have excel and I can write some VBA in it. This should be functionally similar. I can change the content of a variable, and make class, but as soon as I modify the code document execution stops.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
  60. Re:Visual Studio by RoboJ1M · · Score: 1

    What are the better alternatives?
    Honest question, I love VS (inc C# and Linq) but I hate Windows.
    It would be great to have something as good as VS for Ubuntu.

  61. WinDbg Help by deKernel · · Score: 1

    My first suggestion would be is for them to implement WinDbg in an actual usable way. The cryptic commands and setting up the directories for the source and .pdb files.....sheesh.

  62. Re:Visual Studio by TechyImmigrant · · Score: 4, Interesting

    >What are the better alternatives?

    Instrumented code.
    Unit testing.
    Live testing.
    Rapid build - test turnaround.

    If you're looking for a better debugger, you're doing it wrong.
    You need to instrument your code with the features to make it testable from within the running code base.

    --
    I should use this sig to advertise my book ISBN-13 : 978-1501515132.
  63. Inventing on principle by jeroenrijckaert · · Score: 2

    The idea is good, but not new : http://vimeo.com/36579366 (Bret Victor's Inventing On Principle)

  64. Sounds like ... Light Table? by Anonymous Coward · · Score: 0

    I'm not sure who remembers the still somewhat LISP-centric Light Table IDE by Chris Granger, who was looking for kickstarter funding last year. One of the selling points of his IDE was that it's all real-time execution/evaulation, so you see your output in real time.

    I'm not entirely familiar with it, but they've got Python and Javascript integration as well, and as Chris stated, any language with a dynamic runtime is a viable option.

    Funny enough, he was in charge of some parts of the Visual Studio IDE, like the C# and Visual Basic 'experience', as well as managing?contributing? other bits. I wonder if this is just 3-years-later trickle down of his ideas?

  65. Re:Visual Studio by Anonymous Coward · · Score: 0

    Have you tried the new VS2012? They took a shotgun to the UI and the file menu is still screaming from the trauma

    Hell no, I'm sticking with older versions forever or until MS pulls its head out of its ass. Whichever comes first. At least the compiler can be upgraded separatly.

  66. Re:Visual Studio by war4peace · · Score: 1

    I used VBA in Excel to put together a small application (basically, some reporting automation with a GUI) for a small company and sold it, with the source code, for $750. Took me about 20 hours of work. Didn't cost me a dime (the Office license was paid for by my employer). Point is: if you can code (not even professionally) and have some sales skills (not even professionally) you can make a pretty good buck off those $500 Visual Studio Pro costs.
    Furthermore, there's a pretty large amount of companies who have that, how is it called? Some sort of contract with MS where they pay a monthly fee of 200 USD or something and they get CDs and DVDs with all Microsoft products for free. Or something like that. That's how I got a whole box of licensed MS products (including Visual Studio 2005) from my former employer.

    --
    ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
  67. LightTable by gnosis9 · · Score: 1

    From www.lighttable.com: Light Table is a new interactive IDE that lets you modify running programs and embed anything from websites to games. It provides the real time feedback we need to not only answer questions about our code, but to understand how our programs really work.

    1. Re:LightTable by Anonymous Coward · · Score: 0

      lighttable looks much cooler than this thing but it is written for clojure. it'd be nice to have something as slick as lighttable for non-lisp (or even non-functional) languages. i'm suspicious of Microsoft's ability to do this in a flexible and truly intuitive way.

  68. Re:Visual Studio by CastrTroy · · Score: 1

    I agree. While $500 is a bit expensive if you want to use it for coding as a hobby, it's almost inconsequential if you're going to be using it for creating a product to sell. Most coders would probably make that amount of money in a day or two.Even as hobby, it's not that expensive. People spent more on the PS3 on release day. Pick most other hobbies, and it's easy to drop $500 on them.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  69. Re:Visual Studio by ByOhTek · · Score: 1

    yeah, the oogling is obviously a troll. I was more commenting on some of the other things.

    As for it being a ported Windows stack - I don't care too much about that, as long as it's done in an efficient manner (and I have to give hats off to the Mono team on that one). If it runs, and runs well on Windows, FreeBSD, Linux and Mac, that's all I care about.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  70. Not for sure I agree that debugging is harder. by Wycliffe · · Score: 1

    Not for sure I agree that debugging is harder than writing code.
    Writing GOOD code is hard. Debugging good code is easy.
    I've always enjoyed debugging and assuming the code is
    decently written, I usually find it fairly easy to track down and
    fix a bug.

  71. Re:Visual Studio by Anonymous Coward · · Score: 0

    It's called innovation. Or so I'm told.

  72. Re:Visual Studio by Anonymous Coward · · Score: 1

    All in all, Microsoft Visual Studio keeps getting better!

    Yea, but its from Microsoft.

    This may seem like a funny answer, but you have to remember that most people who program using Microsoft product aren't exposed doing anything outside of Microsoft. It's new to them. Few companies adopted LDAP until it was implemented as ActiveDirectory. Then everyone had to have it.

  73. Re:Visual Studio by Anonymous Coward · · Score: 1

    You intentionally don't use the best tools. You must be a top notch developer!

  74. REPL? by luis_a_espinal · · Score: 1

    The idea is to essentially provide a programming environment in which editing of code and the execution of code occur simultaneously — and in the same interface as code editing — with tools to track the state of variables in a more or less live manner."

    Not that I'm a Luddite resisting new tools and ideas, but wouldn't a REPL be good enough for most cases? Most of my professional life I worked with separate editing, compiling and debugging sessions, a necessary PITA for the tools at my disposal. But ever since I started using/playing with languages that come with a REPL (Python, Ruby, Scala), it's been like a productivity blessing where one can break portions of the code into (semi)independent, coherent groups of lines that can be tried out again and again and again.

    The side effect of this (when I'm a liberty to use a tool with a REPL) is that my code (already designed for testing in mind) becomes even more testable, and firing a full-blown debugger is something I have to do only for very difficult-to-find bugs. I certainly hate when I have to work with an environment (C and Java, which is what I mostly do) without it (even though that is how I've been working most of my professional life).

    So I'm wondering what else can one get with the new approach that is substantially better than a REPL-based development environment.

    1. Re:REPL? by lytles · · Score: 1

      i totally agree with you wrt the value of a REPL. i've done a fair amount of work in matlab, and i would mock up a method and work in the command line interface while stopped in the debugger until i got something working and then paste it back into the editor

      beanshell2 for java isn't bad, but it's not integrated into the debugger so it doesn't help much. i use netbeans as my IDE and the "evaluate expression" debugger tool is decent for java, as is gdb for c. but all 3 pale in comparison to the matlab environment. someday, i aspire to have the time to make a command line repl plugin for netbeans ...

      So I'm wondering what else can one get with the new approach that is substantially better than a REPL-based development environment.

      the only thing new that i see McDirmid proposing is that the output is continuously updated as you edit. that doesn't sound very useful. i'd prefer a REPL that's integrated with the debugger

  75. LLDB?? by LDAPMAN · · Score: 1

    Anybody have an explanation about how this is different than what LLDB and LLVM can do? You can debug running code and modify the executable on the fly already.

  76. Re:Visual Studio by Nemesisghost · · Score: 2

    I've personally fallen in love with Visual Studio. It's definitely the planets most feature-rich and capable IDE.

    How is not being able to load 64-bit libraries, that it compiled, feature rich? I guess I should consider the fact that I can't edit the UI using the same libraries I will deploy a feature. For those that are unaware, the UI designer is still only 32-bit, even though VS has been able to compile 64-bit for a while now. So when you are working on a 64-bit project and want to use the libraries you've written, you 1st have to compile it all to 32-bit, do your edits in 32-bit and then recompile for release as 64-bit.

    Or another issue is with manually edited Entity Framework edmx files, which is necessary considering that Entity Framework doesn't natively support all MS-SQL data types and other things that Entity Framework lacks. If you "Update from Database" a manually edited edmx file, goodbye manual changes. But hey, you didn't really mean to manually edit the file, so as a feature VS fix that for you.

  77. Re:Visual Studio by phantomfive · · Score: 3, Insightful

    Microsoft really cares about programmers and developers and helps all of them write efficient and clean code.

    If that were true, they would get a working C99 compiler, one that isn't based on a standard from over 20 years ago. I had to install Cygwin to compile some code over the last few months because it wouldn't compile in Visual Studio.

    It's not even that hard, even allowing variables to be declared at any point in the code would be a huge improvement and would be a simple little change. If Microsoft wants to pay me to come do it for them, I'll give them half off.

    --
    "First they came for the slanderers and i said nothing."
  78. Re:Visual Studio by flimflammer · · Score: 1

    You're just as trollish as the first guy. 99.9% of people don't need Ultimate with MSDN subscription. But thanks for playing.

  79. Re:Visual Studio by Seedy2 · · Score: 1

    The only innovation is the taking money from "training partners" for so profoundly changing everything Micro$oft every few years that every office worker in the world, who uses M$ products, has to go in for training every few years. The training places were going down the tubes because everyone learned windows and office and stuff, and nobody needed training anymore. Anything you didn't use very often you could just Google. (since M$ help is useless)
    Now that they've changed everything (twice? three times?) not only can you not jump from one version to another without grinding the mental gears but you can't even get an easy answer with a search engine, since there are twelve different ways of doing things and only one works in your situation.
    I don't KNOW that they are taking money to deliberately change everything, but it sure makes sense.
    If they aren't they need to fire they guy who came up with the idea of changing everything so radically so often... out of a cannon. :)

    --
    Nothing to say here... move along
  80. Debugging and Design are the same thing by Anonymous Coward · · Score: 0

    Very little good code gets written. Most code is created by people with far more enthusiasm than either skill or knowledge. Sadly, while the lack of skill is forgiveable (not everyone has innate ability), the lack of knowledge is not. Computer Science enjoys a massive library of very well written resources (as well as a sea of badly composed trash).

    A bad programmer (or a lazy one, or one that works in a job where they don't give a damn) loves the formal debug tools, where one does almost nothing while the debugger runs automatically, spewing out megabytes of 'data' that the programmer can convince his 'pointy-haired boss' will take weeks of careful examination before the project can move forward. No good programmer EVER relies on these tools (and many never use them at all).

    This article is about something else. The 'fantasy' of modular programming, and the ease with which a module can be turned into 'live' code for testing. Good programmers already do a lot of this where practical, but such a practise CANNOT be turned into a universal model for programming. We know this because the idea of modular programming has existed for ever, and the dream of solving the idea of correct code this way has existed for just as long. The pile of s**t programming language ADA was created from just such a fallacy.

    In reality, any complex project will have significant amounts of bottom-up, AND top-down design. Bottom-up we can now consider as 'libraries', the closest thing to universally testable code-engines. In practise, 'libraries' prove to have as many enduring bugs as any other code-base, when the library is anything other than trivial. This happens because of 'common path' bias- the bias that means any library has commonly used elements likely to be rapidly corrected, and obscure options that may possibly get no common use whatsoever. Anyone using core open-source libraries will know their buginess is legendary, if one dares to attempt to use any of the less popular functions.

    Modular coding using requires the creation of test-bed datasets- a programming task in itself. The language used to create the module is usually not appropriate for easily creating the test-data- an issue live programming concepts completely ignore. Being able to trivially run code is likely to lead to lazy coding habits, not superior ones. Live coding is good for prototype hacking, but every real programmer knows that all too frequently, prototype code that seems to work ends up being used as finished code.

    Code is made good by an act of will. A discipline that many coding environments will not encourage. Ideally, code should be tested close to its time of creation by unrelated people with a high incentive to identify issues. As a project grows, the mathematical permutations that describe the near infinite ways code blocks can interact with one another allows a 'bad' project to excuse complete failure. After all, how can you debug the 'infinite'? Good projects have top-down designers who stay on top of the issues by having expert knowledge of computer science (appropriate algorithms and data structure methods), and understand the capabilities and limitations of the hardware used. The problem is that to managers, good and bad designers/programmers can sound the same- people who spew a sea of buzzwords with confidence.

    In the end, programmers do need better tools, but every tool tends to make this boast. Access to modular programming methods are very important, but programmers should ALWAYS be encouraged to work with multiple languages at the same time. Good test data will only be produced/used if the creation of said data is a 'piece of cake', and that almost always requires the use of languages different from the ones used to do the core coding. Debugging by tracking the state of variables in a brain-dead automatic way is a joke. Real programmers have no issue inserting 'print' commands that emit their output to some 'terminal' device.

  81. Forth by chthon · · Score: 1

    Didn't Chuck Moore implement this already 20 years ago?

    1. Re:Forth by Giant+Electronic+Bra · · Score: 1

      Yeah, in about 3000 lines of code too. hehe. Most awesome piece of software ever written if you ask me.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
  82. Great, more undebuggable scripting language progra by bored · · Score: 1

    So, now the developer has this great tool that runs on their desktop that helps them debug the program. Now what happens when it fails in the field? Did the developers spend the time to create sufficient tracing/logging functions so that the end user can report the failures?

    The largest problem isn't "debugging" during development, its "debugging" post failure analysis of field problems. Its such a large problem that nearly all "software engineering" and related process is focused on moving the debugging aspects to the developers machine, rather than getting the end customer involved.

    When I first started writing code, I spent a lot of time in step/trace debuggers. Now I would say its probably less than 1% of my development time. That is for a number of reasons, the least of which is that I can almost always "see" the bugs in the code without having to run it. For code I'm writing, the output is almost always sufficient to find the bug without really having to think about it. That is something I couldn't do 15 years ago.

  83. Re:Visual Studio by larry+bagina · · Score: 1

    Good point. We've all heard of "economies of scale", right? Well, there are also "dis-economies of scale." And I don't mean a company is too small -- I mean they're too big. Microsoft should split up.

    If VS or Office were spun off into a separate company, they would be free to develop for other platforms. Windows has a monopoly on desktop users but not on developers. Linux and OS X versions of Visual Studio could have respectable sales figures. They're giving up that money (and much more) by being Windows only.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  84. too clever by Anonymous Coward · · Score: 0

    Yeah, if you're as clever as you can be in programming, no wonder debugging is hell. Years ago, I decided I wanted *elegant* code, not "clever" code. When it's 16:15 on a Friday, or 02:10 any night, and I get a phone call about a problem, I want to be able to leave on time Friday, or go back to sleep that night, not spend *hours* trying to figure out how "clever" I or someone else had been a year and a half ago, and if it was someone else, they don't work here any more....

                  mark

  85. Writing code is hard by Anonymous Coward · · Score: 0

    Here's at thought. Why not work at writing good code to start with. I know, it's hard, and you actually have to work at it, but if you don't write crap to begin with then debugging it becomes 10 times easier.

  86. Re:Visual Studio by Bengie · · Score: 1

    MSDN Ultimate lists for $13,299 on the MSDN website. Once you pay that price, the renewal, which is every 3 years, is only $4,250, so about $1,400/year. Those are list prices. I get Pro at work and the list price is $800 and we only pay $400 every 3 years.

    The Ultimate edition also includes 4 support incidents every year, where they will help you with almost any issue. You also get access to unlimited installs of every Microsoft current and past product for testing/development/presentation reasons. You also get unlimited high priority forum help. I have personally gotten quick responses on their forum from Sr developers who gave very detailed answers.

    You're not paying for the IDE, you're paying for the awesome support contract.

  87. Re: Visual Studio by billstclair · · Score: 2

    Lisp has been supporting this for over 3 decades.

  88. Re: Visual Studio by Anonymous Coward · · Score: 0

    Please don't use "Open Source" when you really mean cheap or free to use software.

  89. Already well into development by Anonymous Coward · · Score: 0

    And idea very similar to this is already in development. It's called Light Table
    http://www.lighttable.com/

  90. FORTH -- .? by Giant+Electronic+Bra · · Score: 1

    So, he's reinvented FORTH 50 years later and using 5000x more lines of code, and FORTH still does it better! ROFLMAO! Ah, Charlie Moore, I doubt you read /. but you will never be dethrowned as the author of the most elegant code ever. Thx!

    --
    "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
  91. try FORTH by Giant+Electronic+Bra · · Score: 2

    Its 100x better for this than any of the languages you mention, higher performance, generally, and achieves VERY high rates of internal reusability to boot. I literaly wrote 4.5 million lines of fully debugged functioning FORTH code in 5 years. It certainly isn't a FASHIONABLE tool, but its frighteningly effective.

    --
    "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    1. Re:try FORTH by romons · · Score: 1
      write only language...

      I like FORTH, and I've written a lisp interpreter in FORTH. However, it isn't a language you can debug easily.

      Also, it is an interpreted language, despite the fact that it has a 'COMPILE keyword. Just like python, which has a far saner syntax (if you can even say FORTH has a syntax).

      What I want is the ability to write C code in a lua like interpreter, and then to convert it to compiled C after it is debugged. Unfortunately, that really doesn't work for anything except toy programs.

      --
      Go to Heaven for the climate, Hell for the company -- Mark Twain
    2. Re:try FORTH by Giant+Electronic+Bra · · Score: 1

      FORTH is VERY easily debugged. I wrote literally 4.5 million lines of fully debugged FORTH in 5 years of work, I had between 0 and 3 staff during that time. We found it was extremely easy to debug because it was VERY easy to decompose problems into groups of 5 or fewer instructions. FORTH also makes it very easy to eliminate common data structures and similar problematic elements.

      FORTH is also generally quite high performance. Modern JSR-threaded or advanced token-threaded FORTHs typically have execution speeds on a par with machine optimized C. FORTH leaves your 'P language' interpreters in the dust, being trivially an order of magnitude faster than Python or Perl.

      As for 'having a syntax' the beauty of FORTH is that the entire syntax takes one sentence to describe and about 10 lines of code to parse. An entire fully-functional FORTH environment with a macro assembler and cross-compiler will generally run you 10k lines of code. The HUGE benefit of this is, you can expect your programmers to have a 100% complete understanding of the tool they're using, down to every line of code in the compiler, interpreter, and editor.

      The thing is, if you change your wish to 'FORTH code' its already there, and it is no toy. There are very large pieces of infrastructure running FORTH, and you can do any ordinary tasks in it, though some things really benefit from cross compilers or other tricks.

      If you ask me, MOST of what is wrong with the modern software engineering world is gross over-complexity. Even if people never use FORTH it is the thing that should be taught first, true elegance and minimalistic simplicity, which should be the religion of IT.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    3. Re:try FORTH by luis_a_espinal · · Score: 1

      Its 100x better for this than any of the languages you mention, higher performance, generally, and achieves VERY high rates of internal reusability to boot. I literaly wrote 4.5 million lines of fully debugged functioning FORTH code in 5 years. It certainly isn't a FASHIONABLE tool, but its frighteningly effective.

      I like FORTH. However, as interesting a topic may be, I'm not sure how this relates to my question.

    4. Re:try FORTH by Giant+Electronic+Bra · · Score: 1

      I just found it curious that you limited yourself to one specific set of languages, and not ones that are really IME THAT effective in an interactive interpreted mode. I mean yes, you can run perl that way too, but its not pretty. FORTH OTOH was built from the ground up for exactly that purpose, to BE an interactive development environment all of it is own. Granted, people may feel more comfortable with more modern traditional syntax of course, but it REALLY is hard to beat the RPN style of FORTH interactively, and its hard to beat for code modularity. It tends to be really easy and natural to write small 5 line snippets and then convert them into words. So, it seemed quite related.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    5. Re:try FORTH by romons · · Score: 1

      Sorry, my experience is very different than yours. Doing simple data structures is hellish (comma operator?). You need to build the entire structure of your program up from scratch, because the language doesn't offer ANYTHING except its elegant, minimal syntax, memory peek and poke, and a few other primitives. My view is that programming in FORTH is like programming in assembler, except that you need to use reverse polish notation. There have actually been systems built to run FORTH directly, encoding the primitive words into microcode. As such, it really IS assembler. (I guess you could say the same thing about lisp and C, though).

      Also, you'll need to back up those claims of speed. You could also say that, statement for statement, assembler is far faster than C. Try comparing it to python based on functionality. I'm guessing that a moderately complex one-liner in python, perhaps involving a big list comprehension, will take hundreds of words of FORTH to replicate. Also, the FORTH will be slower, because the python has been optimized to hell, but the FORTH has been hand coded by somebody who just wants to get to the next problem. The FORTH will require you to remember the 17 parameters on the stack, and to ensure that they get pushed popped, swapped, and duped in exactly the right order. If you mess up, you'll be debugging for hours.

      FORTH is a p-code assembler, where you specify what patterns get laid down by hand. There is some cleverness in the way the words link together, and in the process model, but it is basically an interpreted system. A good compiler will run rings around it. Hell, python will run rings around it unless you are very careful about how you organize things. Life is too short to start every project from scratch.

      --
      Go to Heaven for the climate, Hell for the company -- Mark Twain
    6. Re:try FORTH by Giant+Electronic+Bra · · Score: 1

      Sorry, my experience is very different than yours. Doing simple data structures is hellish (comma operator?). You need to build the entire structure of your program up from scratch, because the language doesn't offer ANYTHING except its elegant, minimal syntax, memory peek and poke, and a few other primitives. My view is that programming in FORTH is like programming in assembler, except that you need to use reverse polish notation. There have actually been systems built to run FORTH directly, encoding the primitive words into microcode. As such, it really IS assembler. (I guess you could say the same thing about lisp and C, though).

      Hmmm, not sure what FORTH you were using. Even the FORTHs I was using in the 80's were far more feature rich than that. We added all sorts of things like classes, structs, etc (mostly on our own back then, but today if you say use gnu gforth or etc you'll get all that stuff for free), there are also local variables and other niceties for when you want them. Hooks to industry standard libraries or just C/C++ libraries, system calls, etc are all long since standard features. Of course you're running under an OS to use that stuff, but it has clear advantages, and frankly nobody would want to write even a simple console video driver to run on bare metal, those days are over. And yes, you could say the same about C, FORTH is at about the same level of abstraction, in general, but you can create much higher level constructs too, which C is less suited to. One thing to remember is that in FORTH you have total control of the PARSER, which means you can quickly write little ASLs (most can be done simply with some clever FORTH programming actually). For instance our avionics system validation/test environment had commands along the lines of "ALTITUDE 50000 FEET LEFT WING TANK HALF FULL RIGHT WING TANK 4500 POUNDS LANDING GEAR UP, etc, very natural for a test engineer.

      Also, you'll need to back up those claims of speed. You could also say that, statement for statement, assembler is far faster than C. Try comparing it to python based on functionality. I'm guessing that a moderately complex one-liner in python, perhaps involving a big list comprehension, will take hundreds of words of FORTH to replicate. Also, the FORTH will be slower, because the python has been optimized to hell, but the FORTH has been hand coded by somebody who just wants to get to the next problem. The FORTH will require you to remember the 17 parameters on the stack, and to ensure that they get pushed popped, swapped, and duped in exactly the right order. If you mess up, you'll be debugging for hours.

      I'm pretty sure that any modern FORTH will compare quite nicely to Python in all respects. In my experience FORTH is AT LEAST as fast as well-written C code. Its impossible to estimate what will take 100s of FORTH words, I can write a parser in 5-10 lines of FORTH, that would take easily 1000's of lines of Python, and probably require advanced tools as well. There is a perfectly functional FORTH 1-liner that implements a web server in gforth. The thing you miss in terms of speed is that the way you write FORTH is itself so highly optimal that your code is extremely fast, and again nowadays there is both static/keyhole optimizing and dynamic optimizing going on. Look into it, you'd be surprised. The thing is the utter simplicity and transparency of the FORTH runtime means that it is very easy to optimize for.

      As for 17 things on the stack, WTF? What sort of horrible coding practice are you into? That would be like passing 17 arguments to a subroutine in any other language, its ridiculous. If you understand good FORTH coding practice (write MANY short simple expressive words) then you will have no problem debugging your code. You'll have 1000's of 1-5 line functions that each do a very specific little bit of stuff and are super easy to test. Remember, I really DID write about a million lines a year of this stuff, add it up, its hard for most people to type that fast. You just do it s

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    7. Re:try FORTH by romons · · Score: 1

      You offer lots of assertions, but no actual evidence. Show me three examples of million line systems written in FORTH. Compare that to the thousands of huge systems running on your typical linux system, written in python, perl, C, lisp, or java. FORTH has been around since the 70s. Seems like folks would have used it more if it were truly as nice as you say.

      When I was playing with FORTH in the 80s, it was marginally interesting. It made a good executive on mips, where I used it as a way to bring up new hardware. I wrote a lisp system in FORTH for the mac (using MacFORTH) But big systems? You need to point them out to me.

      --
      Go to Heaven for the climate, Hell for the company -- Mark Twain
    8. Re:try FORTH by Giant+Electronic+Bra · · Score: 1

      Well, I personally wrote much of a whole family of multi-million line applications which were designed to validate the design of Fuel/Center of Gravity Measurement Systems, and then extended to provide emulation of the entire avionics suites of several aircraft. The same tool set was also used for functional test on the production line of both FRU and SRU level components (cards and entire boxes) for said aircraft, as well as forming the basis of the depot-level test system for F/CGMS and later other avionics SRUs (navigation systems, radios, etc). These were all LARGE complex pieces of software with complex UIs, integration of large amounts of hardware, coding and decoding of large amounts of data in real time, etc.

      Pretty much every astronomical observatory on Earth runs its telescopes using FORTH, and has since the 1970's. The standard pointing and control libraries are all FORTH vocabularies. I couldn't tell you how large these things are, I've only used a few of the libraries, but they're pretty decent sized applications.

      Remember, FORTH in its native state IS an operating system. Multi-Forth is quite large and of course mostly written in itself, providing all the facilities expected of any modern OS, or did the last time I worked with it.

      FORTH has been used in a huge number of other applications as well. For instance RCA 1802 Cardiac Monitor, MANY industrial control applications, The 500 computer networked Facility Management System which ran the King Khaled International Airport in Ryadh, etc. The pads that are used by Fedex drivers for package tracking are FORTH-based devices for instance. It has been used in quite a few satellites due to ease of testing, simplicity, and reliability, as well as ISS and STS payload control systems.

      In my experience FORTH is still quite popular in industrial test and validation systems, many embedded applications, etc. While its use has never been overwhelmingly prevalent to my knowledge in anything except astronomical hardware control it has remained in service due to its simplicity, portability, extremely small hardware footprint, and ease of use for over 50 years with only small changes. At this point COBOL and FORTRAN are probably the only other 2 similar tools still in use, and modern versions of either of them bear only passing resemblance to their 1960's counterparts. GForth OTOH will happily compile and run source written 30 years ago barring some poor coding practices perhaps.

      It isn't fashionable, but it never was the tool of people who cared about fashion, just about getting shit done in the simplest and best way possible. Certainly your experience with FORTH is IMHO a little limited and you are certainly far too eager to dismiss it as a toy, which it certainly isn't. If you ask me the world's software engineers could badly use a few lessons from Charlie Moore. It would certainly do most of them a lot of good to go do a port of FigFORTH, and read Leo Brodie's excellent books on FORTH programming. I know that the things I learned at that stage of my career were the most valuable part of my education in the art and science of software engineering.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
  92. Re:Good to do the debug thinking while writing cod by Anonymous Coward · · Score: 0

    Why
            In the name of God
                    Are you writing like this?

  93. Re:Visual Studio by Jesus_666 · · Score: 1

    Oh yes. As a web developer in a small company I occasionally end up doing tech support. It's really fun to troubleshoot a customer's Outlook troubles over the phone while simultaneously googling for information and making wild guesses about where they hid the account settings this time. Then you meet a customer with an ancient copy of Thunderbird and you immediately know where to navigate and what to check.

    I will give credit where it's due. Microsoft are very good at IDEs and they make decent peripherals. The NT kernel is respectable, as are NTFS and CIFS. But one thing Microsoft really can't do is make a reasonable user interface or at least stick with what works - cf. their bizarre decision to make the file menu an unlabeled sphere in some variants of the ribbon UI.

    --
    USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
  94. Live Programming, otherwise known as Smalltalk by jays8088 · · Score: 1

    Live programming has been available for decades and is the common working mode of any Smalltalk programmer. (Or Forth for that matter) Talk about nothing new under the sun. We've wondered why anyone would work any other way, for decades.

    1. Re:Live Programming, otherwise known as Smalltalk by DavidHumus · · Score: 1

      I've wondered this since I started programming in APL in 1972. Maybe mainstream programmers are (slowly) starting to catch up?

  95. Re:Visual Studio by ceoyoyo · · Score: 1

    Even if you, for some reason, want to use C, I remember Apple demonstrating live debugging years ago at a WWDC. It was pretty cool to watch then fiddle with the code of a running C program and see the changes as they made them. But I've never heard any more about it so I assume it doesn't really get used much. I don't generally debug Python programs that way either, although it's handy sometimes if a particular program takes a long time to start up.

  96. Re:Visual Studio by K.+S.+Kyosuke · · Score: 1

    Now I admit that Visual Studio is feature rich

    It's like a gulp of water after crawling through a desert for a few day. Meanwhile, though, the Lispers and Smalltalkers with their fully introspective, ridiculously extensible environments are watching you from a neighboring oasis, sipping their palm wine and grinning from ear to ear.

    --
    Ezekiel 23:20
  97. Re:Visual Studio by K.+S.+Kyosuke · · Score: 1

    It's called innovation. Or so I'm told.

    You've been told wrong. Innovation had reputedly been seen for the last time in the wild in the region of Palo Alto, with last sightings sometime around 1980, and then it's been thought to be extinct, until it resurfaced a few years ago at the Viewpoints Research Institute.

    --
    Ezekiel 23:20
  98. Re:Visual Studio by geek · · Score: 1

    Weird, I get all of that for free when I develop for Linux, the support I mean. I don't think I've ever gone more than a few hours without getting an answer from someone on a forum or mailing list. Plus I get all that incredible community support without being locked into an MS ecosystem.

    Whenever I see the insane prices of MS dev tools I cringe. So many people waste so much money on this crap that it isn't even funny. It's not like software on Windows is of some extra great quality surpassing OS X and Linux or anything.

  99. Re:Visual Studio by wiredlogic · · Score: 1

    You didn't have to install Cygwin for that. You could have just installed the MinGW GCC. You can even set up VS to use the GCC tool suite if you don't want to leave the IDE.

    --
    I am becoming gerund, destroyer of verbs.
  100. Re:Visual Studio by K.+S.+Kyosuke · · Score: 1

    You intentionally don't use the best tools. You must be a top notch developer!

    Tools are useless, if they don't happen to do what you need to do at the moment. The point of programming isn't to obtain a debugger and get to use it. The point is to construct correct programs. There are many approaches to this that have nothing to do with debuggers: TDD, QuickCheck-style testing, fuzzing, correct-by-design approach (somehow unpopular these days - when did programmers get so lazy?). A debugger is very narrow-focused tool. Huh, so you can stop the execution of a program at a single point in time and play with it. Wow, big deal. Can it slice the program? Can it run in reverse? You know, there have been debuggers capable of doing these things.

    --
    Ezekiel 23:20
  101. Clever Programming by Anonymous Coward · · Score: 0

    If your programming is that clever, that you cannot completely understand it at execution (debugging) time, then you are not that clever. The code should always be so simple, that you can understand it fully. That you can understand the border cases.

  102. Re:Visual Studio by Anonymous Coward · · Score: 0

    there is no problem using a tool, *if* you understand how it works. If you don't then you're doing yourself a disfavor. When something goes horribly wrong and your debugger screws up too, you need to be able to diagnose stuff. Its scary how little a lot of VS devs know about the underlying technology thy are using. It might as well be black magick to them. If you develop SOAP based applications, but don't have a fing clue what a wsdl is or how it operates, you are too reliant on your tools.

  103. Bret Victor - Inventing on Principle by feddas · · Score: 1

    It looks like he made one of the more basic pieces of software shown by Bret in this video from a year ago: http://vimeo.com/36579366 Check out his more advanced content creation demo @29:10 in this video.

  104. Re:Live Syntax checking - old ideas, I'll pile on by Anonymous Coward · · Score: 0

    Many have noted other examples of these kinds of capabilities. I first saw them debugging on a Multics system.

  105. Re:Visual Studio by ByOhTek · · Score: 1

    I didn't say pro was the only option. Express is free and works just as well.

    It's called a Site License. And technically, when you leave the company, you are supposed to remove the software (not that anyone does).

    Oh, and I'll take VS 2010 express (free, as in beer) over 2005 pro...

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  106. Re:Visual Studio by phantomfive · · Score: 1

    True, but Mingw is easier to use from Cygwin, at least for me. Either way, it's silly. Visual Studio should update its technology to the last century.

    --
    "First they came for the slanderers and i said nothing."
  107. Re:Visual Studio by ByOhTek · · Score: 1

    It is expensive as a hobby if you can get Express for free and don't need the features of Pro.

    Pro is nice. I have it. But only because there are a couple plugins that don't work well with Express, and I really wanted them.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  108. April 1st again, so fast? by Anonymous Coward · · Score: 0

    Researcher from Microsoft refuting the God of good programming? I can totally trust this guy!

  109. Re:Visual Studio by BasilBrush · · Score: 1

    Meanwhile, though, the Lispers and Smalltalkers with their fully introspective, ridiculously extensible environments are watching you from a neighboring oasis, sipping their palm wine and grinning from ear to ear.

    Odd then that almost nobody uses either one.

  110. Re:Visual Studio by BasilBrush · · Score: 1

    until it resurfaced a few years ago at the Viewpoints Research Institute.

    If that's innovation, I'll take evolution.

  111. Re:Visual Studio by Anonymous Coward · · Score: 0

    Correct!

  112. Re:Visual Studio by BasilBrush · · Score: 1

    Torvalds has said some characteristically blunt words on the subject of relying on the debugger for development (not Visual Studio per se).

    That makes me happier than ever that I use one all the time. Torvalds can try and construct a watch without a loupe if he wants. I'm not so stupid.

  113. Re:Visual Studio by K.+S.+Kyosuke · · Score: 1

    Odd then that almost nobody uses either one.

    It shouldn't surprise you that uneven access to information has been a perennial problem with detrimental effects to many aspects of human societies, including financial markets, job markets...why would anyone think that the technology market is immune to these effects is beyond me. I mean, there are still people who keep using MySQL out of sheer force of habit, even though PostgreSQL is faster, more featureful, has a better license, and is reasonably well known even by people who don't use it.

    --
    Ezekiel 23:20
  114. Re:Visual Studio by K.+S.+Kyosuke · · Score: 1

    If that's innovation, I'll take evolution.

    There's no evolution, it's more like geological sedimentation and lithification. New layers get added on top of the old ones. Evolution would imply changes to existing structures.

    --
    Ezekiel 23:20
  115. Weaklings by Anonymous Coward · · Score: 0

    Debugging is for the weak

  116. Re:Visual Studio by Anonymous Coward · · Score: 0

    Visual Studio also very rigid on your project structure, and if you don't subscribe to their project file model, you are basically screwed.
    Not to mention, that Visual Studio is a resource hog only running on very beefy configuration. Oh, and don't get me started with the useless packages that installs on your system for no apparent reason. Finally, if you want to do refactoring, you have to purchase an external tools, like VAX.

    To be fair, all Microsoft products are like that. You do it the Microsoft way or you use a different OS and program. Like any other MS program, it's bloated and buggy and shoves stuff at you that just gets in the way.

    It has to be better for code development than Access is for managing a database. Access -- the #2 reason I'm SO looking forward to retirement (I used to do NOMAD on the mainframe, now that was a great program, dBase on the PC, that was a good program. Access... there's not a single thing I can say nice about that incredibly horrible piece of shit that doesn't denegrate it)

  117. Re:Great, more undebuggable scripting language pro by DavidHumus · · Score: 1

    Again, APL solved this in the 1960s: any crash saved a debug workspace with all state preserved, halted at the point the error was detected. You could cut back the stack and step through to the error (assuming the code was written with sufficient modularity).

  118. Others are doing this too, see this video. by Anonymous Coward · · Score: 0

    "Inventing on Principle"

    http://www.youtube.com/watch?v=PUv66718DII

    In this guy's system, one doesn't even have to stop execution while editing.

  119. Gensym G2 by Petersko · · Score: 1

    I've been working in G2 for most of the past 15 years, and this article describes the strengths of that environment, even 15 years ago. The "inspect" interface is like a troubleshooters wet dream. I don't know why something similar hasn't been in every platform for the last decade.

  120. Re:Great, more undebuggable scripting language pro by bored · · Score: 1

    Uh, yah any unix/windows machine can store core dumps. That gives you one piece of the puzzle, but is rarely sufficient, especially if its an error in processing or whatnot and the system continues to run due to error handling.

  121. Re:Visual Studio by war4peace · · Score: 1

    Site license, that's it. Well when I left the company I asked them "can I keep these" and they said "yeah sure". Not that they were using them anyway...

    --
    ...gis sdrawkcab (usually not responding to ACs; don't bother posting as AC)
  122. IntelliJ IDEA. by Anonymous Coward · · Score: 0

    Java and IntelliJ IDEA. Best IDE there is, in my experience. Makes refactoring code very easy compared to pretty much everything else out there. (And I've used Visual Studio, Eclipse, and others, so I do have a basis for comparison.) You can improve some of the others with plugins like ReSharper, though.

    Note, by the way, that being able to edit code and update a running program with it is fairly standard for Java IDEs. The Java VM has supported this for a long time.

  123. Re:Visual Studio by david_thornley · · Score: 1

    Ugliest programming environment I've ever seen, and I like using multiple terminal windows with vim, gcc, and gdb running. Everything else I've used seems at worst constructed with no attention to aesthetics; VS2012 looks like there was a positive antipathy to aesthetics.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  124. Linux Option by Anonymous Coward · · Score: 0

    Wow, I never noticed this development ( back while I was travelling for two years I guess )

    Glad to see there are Linux options with full integration into a gui (Eclipse ). They show forward and back stepping through code but I'm not sure it can do the reverse memory watch like the vmware video shows?

    http://undo-software.com/

    any others we should be aware of?

    1. Re:Linux Option by greglaw99 · · Score: 1

      Yes, UndoDB does indeed do reverse memory watch. As does gdb since 7.0 - the big thing UndoDB buys you is speed: gdb recording slowdown is about 50,000x, whereas UndoDB is usually less than 10x and often under 2x. (I work for Undo Software)

  125. Reinventing the weel by Anonymous Coward · · Score: 0

    In other words, are reinventing live kernel runtimes like the ones on some lisp, smalltalk or oberon

    Hell, i used to do every point in their bullet list... for free! on windows! years ago!
    in the freeware Dolphin SmallTalk Comunity Edition or in the open source
    BlackBox Component Pascal ( some kind of derivative Oberon2 Framework )

    On dotnet? maybe with zonnon

  126. The best way to avoid bug pains... by i · · Score: 1

    ..is to avoid bugs when coding. There was a long time, maybe 40 year, since the last "new" type of bug appeared. So you know what type of bugs to avoid. It's just your time and /or lazyness that causes bugs. And, of course, lack of knowledge. Which you should have researched before started coding.

    --
    Mundus Vult Decipi
  127. that sounds as innovative as... by Anonymous Coward · · Score: 0

    ... a typical LISP environment from the 1990s, such as a Symbolics machine. How much we forget!

  128. As a programmer, I disagree. by Anonymous Coward · · Score: 0

    "Everyone knows that debugging is twice as hard as writing a program in the first place." I write software for a living, I disagree very strongly with that statement. Debugging even the most heinous inherited codebase is monkey work compared to designing good software. When you're debugging, you know exactly what's wrong, you almost always choose the least invasive change that will fix it, and then you test it and verify that it's fixed. It is orders of magnitude more challenging to have the complete freedom to write whatever you want while trying to balance simplicity with flexibility and deadlines with quality.

    1. Re:As a programmer, I disagree. by lpq · · Score: 1

      Have to agree -- if I had points I'd mark you up for Insightful.

      Debugging doesn't take alot of though -- sure, if you emulate the code
      in your head -- which gets close to the work in designing but the way
      most people do it (and I do it for most simple debug tasks).. is fairly low-brain power stuff. Hard problems -- they can be both a bear and
      fun -- i.e. they are brain teasers.

      As for the statement about being clever up front -- depends on definitions, but usually the more clever I am up front, the less code I need to write -- and there is less to debug. That said, clever up to and past the point of "obscure", ... it's not the debugging that is so hard -- it's trying to figure
      out what the heck you were trying to do when you want to enhance or update it. For the most part, even on my own personal projects, I
      try to write with long var names, and/or an occasional comment if something is unclear or not str8forward.

      But a year or two after the fact in coding -- I look at it, and wonder, did I write this? Only because my coding style changes over time (not formatting, but idiomatic usage).

      Also, on a real "project", I'll usually build in a debug framework as I code.

      Code has to be able to be examined and testable. So hooks are usually needed.

  129. Re:Visual Studio by mdragan · · Score: 1

    Testing is for finding bugs.
    Debugging is for fixing bugs. More precisely, it's a step in the process, explaining why the bug happens.

  130. FORTH try by Anonymous Coward · · Score: 0

    FTFY I did.

  131. Re:Visual Studio by progician · · Score: 1

    I use Qt Creator, it is great for C++ development in general. For everything else, I fire up Eclipse. Eclipse has its own issues, as it is written in Java, you can't expect the same performance as from Qt Creator for example, but it has the best plugin collection and perhaps most supportive community. Virtually all existing language is supported by an Eclipse plugin, and the number of existing ones will let you implement your own.

    Also, I'm a great admirer of Emacs, which is my primary environment if I do some work remotely. I love to work with it, for C++, script languages, or just simply text editing.

    If you're looking for something more similar to Visual Studio, I suggest you should also give a try to KDevelop. There are plenty of alternatives as you can see.

  132. Re:Visual Studio by progician · · Score: 1

    None of those would help you out without a good debugger. I use all of those at work, yet the best combination to find bugs is to get the unit tests in to the debugger. TDD isn't a magic cure, it's just a good method to work in certain cases.

  133. Re:Visual Studio by progician · · Score: 1

    What are you doing with Access for a work? I don't even know where would be it useful at all.

  134. Re:Visual Studio by TechyImmigrant · · Score: 1

    Yes. My assertion is that the debugger you need is not better than the ones that are available everywhere.

    Instrumented code will assist locating a problem in both a unit and production environment context. The worst bugs are compositional and debuggers really don't help there because the units all work correctly. Instrumented code will help you realize you were stupid when you thought you could put things together that way.

    My code constantly reminds me that I'm too stupid to write code.

    --
    I should use this sig to advertise my book ISBN-13 : 978-1501515132.
  135. Re:Visual Studio by phorm · · Score: 1

    While I agree that the MS Visual Studio is a good IDE over all, there are better alternatives out there

    Care to suggest a few?

    (currently using eclipse for Java/C++ coding, happy but always welcome new suggestions)

  136. Re:Visual Studio by progician · · Score: 1

    OK, I thought you're one of Those Guys... who think that debuggers encourage bad coding practices. My understanding of a good debugger is sort of the ones that are available today. I don't expect debuggers will expand their feature set anyway, they are good as they are. In fact, MS debuggers are in some aspect are inferior as they can't be scripted AFAIK.

  137. Re:Visual Studio by progician · · Score: 1

    Did that below in this thread. My personal favourite is Qt Creator for C++, free, and platform independent, plus better productivity IMHO.

  138. Microsoft Inventing the already invented by Anonymous Coward · · Score: 0

    As usual, Microsoft thinks they invented something that's actually already been around awhile. Back to your lives, citizens.

  139. I have a name for it! by stenvar · · Score: 1

    We could call it "Smalltalk-80"!

  140. Re:Visual Studio by TechyImmigrant · · Score: 1

    Most of my code is designing chips. Chip design is a lot less forgiving, errors are permanent. Applying a chip design style verification and validation approach to software development is my personal top tip to the world of software development.

    --
    I should use this sig to advertise my book ISBN-13 : 978-1501515132.