Forgot your password?
typodupeerror
Programming Software

Light Table: A New Spin on the IDE 137

Posted by Unknown Lamer
from the zmacs-did-it-before-you-were-born dept.
New submitter omar.sahal writes "Bret Victor demoed the idea of instant feedback on your code. ... Allowing the programmer to instantly see what his program is doing. Chris Granger has turned this novel idea into Light Table — a new IDE designed to make use of Victor's insights." The screenshots make this look like it could be genuinely useful — like a much fancier and more functional combination of features from SLIME and Speedbar. There's a Google group for those wanting to track development. There's no code yet, but source is promised: "I can guarantee you that Light Table will be built on top of the technologies that are freely available to us today. As such, I believe it only fair that the core of Light Table be open sourced once it is launched, while some of the plugins may remained closed source."
This discussion has been archived. No new comments can be posted.

Light Table: A New Spin on the IDE

Comments Filter:
  • by Anonymous Coward on Monday April 16, 2012 @09:29AM (#39699577)

    ...not some guys idea of IDE-NG

  • funding (Score:5, Informative)

    by vlm (69642) on Monday April 16, 2012 @09:30AM (#39699579)

    Here's the funding plan:

    I'm happy to announce that we submitted our Kickstarter earlier today and are simply waiting for it to be reviewed.

    In other news, to save everyone the time, I'll point out that 100 people are going to post the lighttable does what smalltalk did in the 80s. As with all IT and most CS stuff, there really is nothing new under the sun, just recycling. That doesn't mean its bad, or reimplementation of a good idea is bad, just that it isn't new.

    • Isn't comparing it to Smalltalk kind of the Techie equivalent of Godwin's Law? :)
      • Re:funding (Score:4, Insightful)

        by jd (1658) <imipak@noSPam.yahoo.com> on Monday April 16, 2012 @05:24PM (#39704345) Homepage Journal

        No, that would be comparing it to Cobol.

        To help people get the right comparison, here's a quick list:

        • Godwin's Law: Cobol
        • Murphy's Law: C
        • Ship of Theseus: Java
        • Olber's Paradox: Perl
        • Godel's Incompleteness Theorum: Ada
        • Cars/Libraries of Congress: Fortran
        • Russel's Paradox: LISP
        • Fermat's Last Theorum: Assembly
        • The Peter Principle: C++
        • Clarke's First Law: Python
        • Clarke's Third Law: Smalltalk
        • Sturgeon's Law: Visual Basic
        • Okrent's Law: Prolog
        • by jd (1658)

          Hmmm. Clarke's First Law might be closer to Pascal, or maybe Forth. Suggestions, anyone?

  • by jamesbulman (103594) on Monday April 16, 2012 @09:33AM (#39699611) Homepage

    From the article:

    Files are not the best representation of code, just a convenient serialization.

    I've been thinking about this for a while and I think we do need a new generation of IDE which isn't based around showing source files in tabs, but rather code snippets (functions, class definitions etc.) on some kind of desktop. When I'm debugging code I don't want to jump through X files, I just want to see the X related functions so I can understand the programs flow etc.

    • by godefroi (52421) on Monday April 16, 2012 @09:39AM (#39699663)

      You mean, like Code Canvas?

      http://research.microsoft.com/en-us/projects/codecanvas/ [microsoft.com]

      • Yep, but without the eye bleeding UI ;)

        Another benefit of moving away from explicitly managing files is that the computer is probably in a better position than the user to decide how to present the code to the compiler / linker. It could also have benefits in source control where you could track the history of an individual function better (imagine if someone refactors a function from one file into another).

        • by godefroi (52421)

          You could do that today, in some programming environments, anyway. Some programming languages / compiler combinations allow classes to be split among files, into individual methods, if desired.

      • You mean, "You mean, like Code Canvas (minus the 'Microsoft')"? This is /. after all.

    • This does seem sort of what LightTable seems to be aiming at, actually.

    • by HisMother (413313)
      Yep. That's called SmallTalk.
    • by robmv (855035) on Monday April 16, 2012 @10:09AM (#39699843)

      So, you want Smalltalk code browsers [onsmalltalk.com]. This IDE concept is nothing new, Smalltalk had that kind of code browising from the start and the concept of a live image where every code change is done in a live vm. The only thing I see new here is some "modern" "HTMLy" UI

      • by rsborg (111459)

        So, you want Smalltalk code browsers [onsmalltalk.com]. This IDE concept is nothing new, Smalltalk had that kind of code browising from the start and the concept of a live image where every code change is done in a live vm. The only thing I see new here is some "modern" "HTMLy" UI

        If a Kickstarter project and a new IDE is what it takes to get these ideas more commonly used, as a former smalltalker, I'm all game. The "live VM" idea of Smalltalk was probably way ahead of it's time - with JITs and a much higher baseline of compute power even in smartphones, it's now high-time we start seeing code as beyond text files or db blobs.

        I'm still waiting for a non-smalltalk VM to feature the power of the walkback.

    • by loufoque (1400831)

      Doesn't work with languages such as C++....

      • There's no reason why it couldn't. The underlying code can still live in a collection of .h/.c/.cpp files, I'm just asking that the IDE present that code to the developer in a different way.

        • by loufoque (1400831)

          In C++, textual order matters.

          • In C++, textual order matters.

            Which would (and can) still be retained in the underlying source code files. The visual representation at the IDE level *does not have* to be viz-a-viz with actual physical textual ordering of definitions and declarations.

            How to get that in a useful manner, that's another question. After all, tools and enviroments like VB, VFP and PowerBuilder attempted to show code in snippets as opposed to walls of text. Attempted they did and the results were mixed. Sometimes it helped, sometimes it got in the way.

            So

            • So, that is the trick, in the delivery of the concept. But the concept itself, it is not computationally impossible, not even with a PL where textual order matters.

              Responding/adding to my self:

              1. Why does the screen shots have to sample LISP code? :)

              2. Tools like this *might* enforce people to functions and methods that are smaller, with lower cyclomatic complexity and with better composition, cohesion and structure. It would be very hard to visualize a 300-line long spagetti wall-of-text-function ;)

    • by am 2k (217885)

      That's still a textual serialization though, just with a different container. Since there is a one-to-one mapping between classes and files in Java, it already kinda does that.

      Maybe there's a way to represent code with no text commands at all? CryEngine's Flowgraph already does that, but its solution is of limited use (it gets really messy with more complicated code).

    • by s73v3r (963317)

      I have to say, I hate having to jump around multiple files, and multiple places in the files, to be able to see something.

    • Sorry but that's a stupid idea. You don't have to hunt through files anyway if you have a decent IDE.
    • From the article:

      Files are not the best representation of code, just a convenient serialization.

      Trivially true: files aren't the "best" representation of code because the definition of "best" depends on context and goals (which shift constantly during a work session). That's a sort of non-claim. Absolutely true: files are a convenient serialization of code.

      Some folks will look at the trivially true claim and think "Boo files! Let's do away with files altogether!". Then they will go off and develop something that throws away the absolutely true part of the claim [I'm looking at you Squeak, Centura SQ

      • by Twinbee (767046)
        It's probably less faddish than you think because a metadata based system encompasses files completely. For example, each tab in your IDE could instead be a keyword which filters out the functions/variables that come under that category. By removing the filter/s, you have a 'document' which contains all the code in the entire project.

        Thinking files is ultimately a good idea is almost as bad as saying each HTML page should imitate the A4 size of paper, rather than a (possibly) infinitely long page.
    • by hackula (2596247)
      I was surprised they would come out and say this. Who the hell is going to donate their development time on this project if the creators are going to close down parts of the platform and charge them for it?
      • by dave420 (699308)
        The same people who are more than happy to code for, say, Windows or OS X.
        • by hackula (2596247)
          No one helps to code the core of Windows or OSX without getting paid. That is a reversed scenario.
      • by s73v3r (963317)

        People who either think it's extremely cool, or think that it would help them be more productive.

  • Beside the usual runtime inspection of data structures, you can evaluate expressions in the context of the app being run, even those not existing in the app itself. And the evaluation includes calling the app's methods and modifying its state.
  • I have to admit, I'm not really sure what's new here; you can do the same sort of thing in Visual Studio and Eclipse, as far as I know.

    If documentation is available, Intellisense (or Eclipse's equivalent) will pop it up along with the function's parameters when you start typing.

    If you want to play around with code, you can pause the debugger and see what happens in the Immediate Window.

    If you want to search for a particular function, well, that's why you've got Google open in another window; it's a lot nice

    • by Anonymous Coward

      If you want to search for a particular function, well, that's why you've got Google open in another window; it's a lot nicer than messing around in the IDE.

      Or use Eclipse's search, which has several options for this (don't know VS).

      If you want to see how data is flowing through your functions, you can watch variables, which are less confusing; in the demo, variables get replaced with the current literal value, which might make you forget that there's actually variable there after a long coding session. I do admit that his idea of keeping track of what every function's state was when it was initially called and displaying that is interesting, but I'm not sure how that would work with loops or recursion (do you show the looped function multiple times?)

      Eclipse's debugger remembers parameter values, too. You can use that for the "drop to frame" step action.
      Which set of values you get in a recursive call depends on which stack frame you drop into.

      The only really interesting thing is this idea of pulling related functions next to each other so you can look at them all at once, but I'm pretty sure the rest of the functionality isn't very novel.

      And you can do that manually in Eclipse by playing around with docking several editor windows side by side. BTW, Window->New Editor gives you a second editor for the same file.

    • by s73v3r (963317)

      While everything you said is possible, I find the interface used to be much, much better in this demo than having to hunt all over files to do the same thing.

  • by hackula (2596247) on Monday April 16, 2012 @09:54AM (#39699759)
    Live debugging seems cool, however, basically every other feature is already implemented better in Visual Studio, Eclipse, or Netbeans. Hell, I have 95% of the functionality in Vim already. Why not just make the live debugging a plugin to one of the more mature editors? It seems you would get a whole lot more bang for your development time that way.
  • Sure, you can do runtime code modification in Lisp, but this approach won't work with C++ or Java.

    • by abigor (540274)

      Actually, certain debuggers have had "edit and continue", compile on the fly capability while debugging for C++ and Java since 2005 or so.

      • by samkass (174571)

        In Java you can't make changes to a class structure (methods, parameters, etc) and still use "edit and continue". I assume the situation is even worse in C++. Thus it's more useful in debugging than development.

    • by cpghost (719344)
      Most Common Lisp systems compile functions on-the-fly, and this means also each time you edit a function. Some C++ IDEs can also recompile the compile-unit on-the-fly as you go. Sure, recompiling a Lisp function may be a tad bit faster than recompiling a whole C++ compile-unit, but you won't notice this in practice, because compile-units tend to be pretty small(ish) nowadays.
    • I'm a dynamic languages fan and even I take offense at that. Static languages can do anything dynamic languages do and them some, they are just more verbose about it. It should be possible to adapt this IDE to C++ for instance.

  • by AdrianKemp (1988748) on Monday April 16, 2012 @10:58AM (#39700203)

    The day my IDE is more rounded corners and empty space than actual code is the day I quit programming forever.

    Luckily, my "IDE" is vim. Works great, about 50x more useful and faster than anything else I've tried and is available to me no matter where I am or what operating system I'm on at a given time.

    • Re: (Score:3, Funny)

      by Qbertino (265505)

      Luckily, my "IDE" is vim. Works great, about 50x more useful and faster than anything else I've tried and is available to me no matter where I am or what operating system I'm on at a given time.

      Psst: You should try Emacs. Your productivity will skyrocket.
      Just saying.

      • by chooks (71012)
        Emacs is a decent operating system, but it could use a better text editor.
      • by IICV (652597)

        You're right, it did!

        But then I realized that all the extra productivity was going into writing Emacs macros so I went back to Vim :)

      • by Chemisor (97276)

        Psst: You should try Emacs. Your productivity will skyrocket.

        Of course. Just use the simple command Ctrl+A+Shift+R+o+AltGr+s+k+y!
        Emacs: the ultimate tool that lets a person use all three of his hands.

    • by s73v3r (963317)

      Blah blah blah, coding hipster comment.

      You forgot the part where you tell us to get off your lawn.

    • by Tom (822)

      Look at all that wasted space.

      You should upgrade your display. Since I switched to a 27" display, I don't feel like screen space is valuable anymore. Very, very rarely do I use anything in fullscreen, because I simply don't need to.

      Back when 14" was the standard, screen space was really valuable. Today? Get a bigger display.

  • Opinion may be harshly (and indeed prematurely) divided on the actual usefulness or originality but at least we can agree that it's pretty.

    Right?

  • by sugarmotor (621907) on Monday April 16, 2012 @11:22AM (#39700401) Homepage

    I've been using the frank gem with Ruby to see / explore effects of code changes in the browser.

    The browser becomes a high-end output device (through frank's Auto-Refresh) for my text inputs.

  • Then you see an IDE in your IDE, in which you could create another IDE, and ...

    • by H0p313ss (811249)

      Then you see an IDE in your IDE, in which you could create another IDE, and ...

      ... we could call it Eclipse!

  • This is getting closer to what I've been hoping for.

    Glad to see the realtime filtering of documentation too. That's something that's been missing from not just programming languages, but software and Windows in general (my own documentation [skytopia.com] for a program called opalcalc takes this to its logical conclusion at the bottom of the page).

    What I'd really like to see though is not just real-time filtering of functions/methods/variables (each with their own metadata, so a word such as "exit" can be associated
  • I like the idea of working on a function at a time, not a file at a time. Code folding in VIM gets me part of the way, but searching for text unfortunately includes folded text and automatically opens the fold for me. Not what I want. Technically, functions shouldn't be that long to have to search but in reality, one has to work with 'fine' code sometimes. :)
  • I thought we'd all moved on to SATA by now.

  • is something that does "live preview" pretty much? there's limits to what seems like a non hassle to do with it though.. seems ok for mocking up listviews and the alike.

    you could configure android ide to do "live preview" too for your custom controls. it's a bit of teh suck though.

"Catch a wave and you're sitting on top of the world." - The Beach Boys

Working...