Slashdot Mirror


Light Table: A New Spin on the IDE

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."

137 comments

  1. What's new? by Anonymous Coward · · Score: 0

    How is this different from something like IntelliSense, the consoles of many scripting interpreters or simply splitting up code into various panes? This looks like a unification of ideas in a nifty wrapper rather then something revolutionary or deeply insightful.

    1. Re:What's new? by 19thNervousBreakdown · · Score: 5, Insightful

      What exactly is bad about finally packing up all those new ideas? I'd rather not use 9 different IDEs for the 1 cool thing each does, and besides, once you get a bunch of things together, it's often more than the sum of its parts.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    2. Re:What's new? by omar.sahal · · Score: 4, Informative

      Watch this, his lectue and demo and then tell me it's the same as we already have, and that a man charged with designing new forms of human computer interaction at Apple didn't know this. Also please respond with why he wasted our time telling us something that already comonly exsisted in the software world, as well as how the confrence organisor and who ever aproved posting missed all this. https://vimeo.com/36579366 I was happy to see my post on slashdot. It's quite heavily edited, but this has improved the post. One question for slashdot, is the reason many posts get rejected due to posters needing heavy editing and this not having been done in the past.

    3. Re:What's new? by LifesABeach · · Score: 0, Troll

      It would appear that working at m$ creates a form of Myopia, the child of Mediocrity?

    4. Re:What's new? by Anonymous Coward · · Score: 0

      and that a man charged with designing new forms of human computer interaction at Apple didn't know this

      So apparently working on xcode was below these people. amirite?

    5. Re:What's new? by Twinbee · · Score: 1

      get a bunch of things together, it's often more than the sum of its parts

      Ah, the arch enemy of "Use the right tool tool for the right job" - my pet hate quote of all time I think.

      --
      Why OpalCalc is the best Windows calc
    6. Re:What's new? by hairyfeet · · Score: 1

      Because sadly here in the USA each one of those "nifty ideas" is probably copyrighted and/or patented up the ass so you'll spend more time in court than you do working on your new program?

      --
      ACs don't waste your time replying, your posts are never seen by me.
    7. Re:What's new? by Requiem18th · · Score: 1

      In all fairness neither maxim is right 100% of the time.

      --
      But... the future refused to change.
    8. Re:What's new? by Tooke · · Score: 4, Funny

      so... "use the right maxim for the right job"?

      --
      Anybody want a peanut?
    9. Re:What's new? by Anonymous Coward · · Score: 0

      This looks like a unification of ideas in a nifty wrapper rather then something revolutionary or deeply insightful

      What exactly is bad about finally packing up all those new ideas?

      Since when does "this is nifty but not revolutionary" suddenly mean "this sucks ass"? And how the fuck does such a statement get a +5 Insightful?

    10. Re:What's new? by 19thNervousBreakdown · · Score: 1

      It doesn't have to mean "this sucks ass" to be a negative or dismissive-seeming comment. Asking "what's new?" implies that if there isn't something new, it's not worthy. Maybe that's not what the poster intended, but that's how I, and apparently at least 4 mods, read it. And posts toward the top of the page tend to be either +5 or -1 until the story drops off the front page when the fine-tuning mods don't get drowned out, that's just human nature combined with Slashdot's moderation system.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    11. Re:What's new? by tehcyder · · Score: 1

      and don't forget that a bunch of maxims together can be more than the sum of its parts

      --
      To have a right to do a thing is not at all the same as to be right in doing it
  2. Just give me this in emacs.... by Anonymous Coward · · Score: 3, Insightful

    ...not some guys idea of IDE-NG

    1. Re:Just give me this in emacs.... by Anonymous Coward · · Score: 0

      and what is a "The Victor"?

    2. Re:Just give me this in emacs.... by hackula · · Score: 2

      ...or Vim. That would work too.

    3. Re:Just give me this in emacs.... by Anomalyst · · Score: 2

      I'm concerned about IDE-Voyager being released. The mind boggles (or possibly yahtzees).

      --
      There is no right to feel safe thru security vaudeville at the expense of everyone's freedom, privacy and tax money.
  3. funding by vlm · · Score: 5, Informative

    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.

    --
    "Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
    1. Re:funding by Big+Hairy+Ian · · Score: 2

      Isn't comparing it to Smalltalk kind of the Techie equivalent of Godwin's Law? :)

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    2. Re:funding by Anonymous Coward · · Score: 0

      No, that is comparing it to LISP

    3. Re:funding by jd · · Score: 3, Insightful

      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
      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    4. Re:funding by jd · · Score: 1

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

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    5. Re:funding by Anonymous Coward · · Score: 0

      It /is/ LISP, or at least, a dialect.

  4. Files are not the best representation of code... by jamesbulman · · Score: 4, Insightful

    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.

  5. Interesting, but not new by Anonymous Coward · · Score: 0

    Most of what they showed is either already being done with different interfaces, or would be nearly useless with a large program. Visual Studio has had a feature where you can see all the variants of a function, the function documentation, variables required, etc. for years just by typing the function name. The live data view is cool, but I don't see it working as well when your call stack gets to a couple dozen layers, either it will have to expand to the point that you can't really see anything, or it will conveniently ignore little things like external resources and threading issues. This really looks like an attempt to build an IDE by someone who hasn't worked with an IDE before and thinks that vi or emacs is the best way to write code.

    1. Re:Interesting, but not new by OG · · Score: 4, Interesting

      The creator was a PM on Visual Studio. He's had quite a bit of experience as both an IDE user and developer, so I'm willing to give him the benefit of the doubt that he's spent quite a bit of time thinking about usability.

  6. Re:Files are not the best representation of code.. by godefroi · · Score: 5, Interesting
    --
    Karma: Poor (Mostly affected by lame karma-joke sigs)
  7. "while some of the plugins may remained closed" by ciaran_o_riordan · · Score: 1

    That's called "open core".

    Pity.

    1. Re:"while some of the plugins may remained closed" by hackula · · Score: 1

      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?

    2. Re:"while some of the plugins may remained closed" by dave420 · · Score: 1

      The same people who are more than happy to code for, say, Windows or OS X.

    3. Re:"while some of the plugins may remained closed" by Anonymous Coward · · Score: 0

      Hey, numbnuts, what part of Windows or OS X is MS or Apple accepting patches for that end up in the final product. And, no, MS Apple siphoning off OSS code to integrate into OS X doesn't count. God some people on this web site are complete idiots sometimes.

    4. Re:"while some of the plugins may remained closed" by hackula · · Score: 1

      No one helps to code the core of Windows or OSX without getting paid. That is a reversed scenario.

    5. Re:"while some of the plugins may remained closed" by Anonymous Coward · · Score: 0

      God some people on this web site are complete idiots sometimes.

      Welcome to slashdot. And by "some", you really mean the majority on slashdot.

    6. Re:"while some of the plugins may remained closed" by s73v3r · · Score: 1

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

  8. Re:Files are not the best representation of code.. by Anonymous Coward · · Score: 0

    Code without files, exists since a long time and it's called Smalltalk.

  9. Re:Files are not the best representation of code.. by hobarrera · · Score: 2

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

  10. Netbeans has a kind of "instant view" as well by art6217 · · Score: 1

    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.

  11. I'm not sure what's new here by IICV · · Score: 1

    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 nicer than messing around in the IDE.

    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?)

    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.

    1. Re:I'm not sure what's new here by Anonymous Coward · · Score: 1

      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.

    2. Re:I'm not sure what's new here by s73v3r · · Score: 1

      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.

  12. Re:Files are not the best representation of code.. by jamesbulman · · Score: 2

    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).

  13. Live debugging seems cool... by hackula · · Score: 3, Insightful

    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.

  14. Re:Files are not the best representation of code.. by HisMother · · Score: 2

    Yep. That's called SmallTalk.

    --
    Cantankerous old coot since 1957.
  15. Re:Files are not the best representation of code.. by robmv · · Score: 4, Informative

    So, you want Smalltalk code browsers. 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

  16. Re:Files are not the best representation of code.. by loufoque · · Score: 1

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

  17. Re:Files are not the best representation of code.. by godefroi · · Score: 2

    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.

    --
    Karma: Poor (Mostly affected by lame karma-joke sigs)
  18. Only for dynamic languages by Hentes · · Score: 1

    Sure, you can do runtime code modification in Lisp, but this approach won't work with C++ or Java.

    1. Re:Only for dynamic languages by abigor · · Score: 2

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

    2. Re:Only for dynamic languages by samkass · · Score: 1

      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.

      --
      E pluribus unum
    3. Re:Only for dynamic languages by cpghost · · Score: 1

      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.

      --
      cpghost at Cordula's Web.
    4. Re:Only for dynamic languages by Requiem18th · · Score: 1

      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.

      --
      But... the future refused to change.
  19. Re:Files are not the best representation of code.. by am+2k · · Score: 1

    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).

  20. Re:Files are not the best representation of code.. by FrootLoops · · Score: 1

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

  21. Re:Files are not the best representation of code.. by jamesbulman · · Score: 1

    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.

  22. Re:Files are not the best representation of code.. by Anonymous Coward · · Score: 0

    Personally I wouldn't mind something like Star Trek style coding.
    AI-backed coding would be pretty interesting if done right.

  23. Wish I had some mod points. by Anonymous Coward · · Score: 2, Interesting

    While I really like VS, there are some irksome points... namely that plugins are now fairly plentiful, but when it slows to a crawl, there's no way to tell which plugin is the culprit. Second is that half the times it crashes, it loses my settings.. I like VS on my left monitor with the nav panels on the left... code to the right, and my right monitor for running/previewing. It resets and that's annoying. That and the rare occasion I'm supporting a VB.Net project it crashes 5x as much.

    That said, I can have a new web project to the "hello world" stage much faster than say Eclipse for a similar project. This isn't meant for flamebait, just my own opinion. I wouldn't mind seeing some enhancements, and hope this is a successful effort. Personally I'd love to see continued advancement for JS development, specifically with NodeJS in mind.

  24. Re:Files are not the best representation of code.. by loufoque · · Score: 2

    In C++, textual order matters.

  25. Look at all that wasted space. by AdrianKemp · · Score: 2, Insightful

    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.

    1. Re:Look at all that wasted space. by Qbertino · · Score: 3, Funny

      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.

      --
      We suffer more in our imagination than in reality. - Seneca
    2. Re:Look at all that wasted space. by Anonymous Coward · · Score: 0

      I agree - I used Eclipse once (Blackberry - ugh!) and couldn't help but think that the IDE was designed to make developers as unproductive as possible by making it so cumbersome to do anything at all. I assume that eventually IDEs will become so intelligent that they won't allow you to edit your own code at all. The funny part is, I am lightning fast with my old Emacs + make stuff, and astound people with how fast I get code working.

    3. Re:Look at all that wasted space. by chooks · · Score: 2

      Emacs is a decent operating system, but it could use a better text editor.

      --
      -- The Genesis project? What's that?
    4. Re:Look at all that wasted space. by IICV · · Score: 1

      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 :)

    5. Re:Look at all that wasted space. by Chemisor · · Score: 1

      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.

    6. Re:Look at all that wasted space. by s73v3r · · Score: 1

      Blah blah blah, coding hipster comment.

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

    7. Re:Look at all that wasted space. by AdrianKemp · · Score: 1

      Wait am I a hipster or an old fart?

      The two aren't really compatible...

    8. Re:Look at all that wasted space. by Tom · · Score: 1

      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.

      --
      Assorted stuff I do sometimes: Lemuria.org
    9. Re:Look at all that wasted space. by AdrianKemp · · Score: 0

      Yeah, just the fact that you said '27" display' tells me everything I need to know about you.

      I have a great big 55" display that has a lower resolution than any of the three 21.5" ones sitting in front of me.

      There are times I've considered a fourth...

    10. Re:Look at all that wasted space. by Tom · · Score: 1

      Yeah, just the fact that you said '27" display' tells me everything I need to know about you.

      Shoe size? A/S/L ?

      There are times I've considered a fourth...

      For some people it's cars... :-)

      I had a 21" as a secondary display for a while, but it turned out that I didn't really use it. But then again, I know enough about the mind to understand that multi-tasking is an illusion and focus makes you productive.

      --
      Assorted stuff I do sometimes: Lemuria.org
    11. Re:Look at all that wasted space. by AdrianKemp · · Score: 1

      You clearly don't know much about the mind.

      Running 5 different programs -- that'll get you nowhere fast. Having all three of the files you're currently working on open for easy reference without switching windows improves productivity considerably.

      You should try actually learning something before questioning those smarter than you.

    12. Re:Look at all that wasted space. by Anonymous Coward · · Score: 0

      For those intressted in using VIM as a IDE, please look at http://www.ex-dev.com/exvim it includes most tools that a "normal IDE" does. Nicely packaged together, and not that hard to install (but yes, it is abit of work to get it to install)

    13. Re:Look at all that wasted space. by Tom · · Score: 1

      Fuck off, troll.

      Yeah, that's all. Nothing productive in this thread anymore. But I strongly believe that assholes need to be told off or they start thinking their behaviour is acceptable.

      --
      Assorted stuff I do sometimes: Lemuria.org
    14. Re:Look at all that wasted space. by AdrianKemp · · Score: 1

      Just because you're dumb doesn't mean others are trolls.

      You'd do well to remember that

  26. But hey, it looks nice.. by undulato · · Score: 1

    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?

  27. Debugging features look nice by Anonymous Coward · · Score: 0

    I like the interactive "debugging" features that allow you to run selected functions from your code and see the results in realtime. Seems like he might be onto something there. Will be interested to see how it develops.

  28. Browser based by sugarmotor · · Score: 2

    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.

    --
    http://stephan.sugarmotor.org
  29. That's not programming... by holophrastic · · Score: 0

    ...that's scripting. Any time you can gain insight into your code by seeing variable values substituted for names, (which used to be called watched variables long ago), your code just isn't advanced enough to be doing anything legitimate. That's great and all when you're learning to program in school, and you were asked to use a few functions to make something happen. But that's not programming.

    When, professionally, I write my own function, I can't make judgements based on actual variable values! A given function is called from at least three dozen places, and here's the kicker, in more than three dozen different ways. That not only means that flow paths change, but the actual value of a parameter can have drastic effects on what the function actually does. I don't mean that 3 becomes 30 and 4 becomes 40. I mean 3 becomes apple and 4 becomes an array of database results.

    The entire idea of advanced programming is to use variable instead of actual values because programming is more powerful than markup. Because I can bring real intelligence to a function's operation.

    And if I dared to modify a function based on a set of run-time values for one of those scenarios, I'd risk instantly breaking every other run-time scenario where that function is being called.

    Now, if Light Table, or some IDE wants to show me every time my function is being called throughout my entire project, with every distinct set of parameters that it's ever received, and allow me to pair down the ones that I say are structurally identical, then yeah, that would have merit. Of course, it would be showing me about a hundred different scenarios for my one function, and would be based on weird run-time and user-input cases that simply couldn't be reproduced without actually running my entire project, so it would be impossible to simulate once I make one change to any other function anywhere else in my project.

    Making things like this excellent academic learning tools, and nothing else. It simply removes the fundamental abstraction that is programming, and replaces it with information that I didn't need. I don't need documentation for a language that I use professionally. And I don't need to see the functions called by my function. Not only am I not able to comfortably change those sub-functions, but there are going to be at least fifty of those sub-functions if my code does anything impressive at all.

    And you've consumed half of my screen real-estate.

    1. Re:That's not programming... by Anonymous Coward · · Score: 0

      > That not only means that flow paths change, but the actual value of a parameter can have drastic effects on what the function actually does. I don't mean that 3 becomes 30 and 4 becomes 40. I mean 3 becomes apple and 4 becomes an array of database results.

      Your code isn't "advanced" then, it just plain sucks. Learn about static typing sometime. Even Python and Ruby programmers at least try to stick to consistent types.

    2. Re:That's not programming... by PieceOfShitAndroid · · Score: 1
      (def which-employees-to-fire (lst) '("enemy #1" "enemy #2" "enemy #3"))

      Ok. Done.

    3. Re:That's not programming... by holophrastic · · Score: 1

      uhuh, you didn't read. I said three from thirty. I don't see thirty being considered.

    4. Re:That's not programming... by Requiem18th · · Score: 1

      Yes, what we need is is live unit testing, nothing less would do. Except I'm sloppy and avoid TDD but that's my fault.

      --
      But... the future refused to change.
    5. Re:That's not programming... by holophrastic · · Score: 1

      Unit testing isn't worse, but it's equally bad. If you can predict every combination of parameters relevant to the function, then your unit tests simply tell you when you broke your own function. I don't need help changing three lines of code. That was never the difficult part. I need help conceiving of complicated structures and not missing a given element.

      If I could write the unit tests properly, I didn't really need them. So you wind up needing to test your unit tests for conseptual validity. It's turtles all the way down.

      The whole point of abstract programming is to think abstractly. The moment you lose that, you lose the ability to do anything advanced. That's the skill. It's not about typing, and it's not about executing it in your head. About specifically about not executing it in your head.

    6. Re:That's not programming... by s73v3r · · Score: 1

      You might want to try actually planning out your shit before you write it. Your program sounds like it would be something they give programmers in the 7th circle of hell to maintain.

    7. Re:That's not programming... by holophrastic · · Score: 1

      Quite the opposite. a) clients and project requirements change year over year as they grow. So you need to change the function without changing everywhere it's called. b) the more intelligent the function, the more it can do. You, as a human, deal with varied input all the time. That's a part of being intelligent.

      For example, something as simple as boolean = isBlank( string ). There are at least a dozen ways that a human being considers a string to be "empty". some of those depend on what that string looks like. certainly "" is empty, and "0" is not. false might be empty. "" might be empty. " " might be empty. "

      " might be empty. "

      " might be empty. A zero length array would be empty. As would a keyless hash. What about an array where each element is empty.

      So what, you're going to have isBlankString() isBlankHTML() isEmptyArray() isBlankArrayElements() isBlankHashKeys() and a dozen others? And then you're going to remember how each is named, how to call each, what they do exactly, ...oh right, you're going to have six interfaces to your documentation.

      I'm going to have isBlank(). And throughout my code, you'll see isBlank( aStrings ) isBlank( hKeys ) isBlank( myString ) and it'll be way easier to read, way easier to write, and then I'll kick it up to isBlank( oContact ) I'll check the telephone, e-mail, and name, to be certain that a "contact" can actually be "contacted" or I'll call it blank too -- since to a human being, it is. Even though it's a huge structure with a dozen other bits of data. And in six years, when my client wants to consider contacts with a company and position as sufficiently contactable, I'll simply change the definition of isBlank() the way that humans do.

      My client's world isn't data-centric. It's business centric. So my logic functions are similarly so. As long as I keep them in-line with the client's business model, life is amazingly easy. And different for each client.

      As for planning things out in advance, I plan for my client's business to grow, and hence change drastically. What do you plan for? A string remaining a string forever and never becoming a hash down the road? Everything becomes a hash eventually. Or do you plan to do all of the work for the hash from the start? And making it take six days to do something that only requires one day now, and may be thrown out long before that part is ever upgraded.

      It's a very different way of thinking. That's what I charge for.

    8. Re:That's not programming... by Anonymous Coward · · Score: 0

      Holy shit I hope I never have to work with code you write. You correctly identify that one single notion of "isBlank" won't apply, but the solution is not to define a global function that operates on every data type and changes whenever a client farts. That's just begging for unanticipated corner cases. "blankness" is a property of an object, so implement "isBlank" as a class or trait method:

      trait CanBeBlank {
      def isBlank:Boolean
      }

      abstract class Contact with CanBeBlank {
      var name:String
      var email:String

      def isBlank = name.isEmpty && email.isEmpty()
      }


      Then later you can have a new class NamelessContact extends Contact containing a function definition override def isBlank = email.isEmpty() if you get a client that only cares if a contact has an email address.

    9. Re:That's not programming... by holophrastic · · Score: 1

      once you go down the road of objects, I can't help you. enjoy your object hell. enjoy your definitions no where near the actual business logic that you write day to day. enjoy things acting differently from one minute to the next. I won't help you.

      but the next time you, as a human not writing code, get handed a food and asked if it's a fruit, you can create a new neuron called NamelessFruit, and then check if it satisfies your seed clause. Me, I'll just look through my index of what makes a fruit a fruit. The way that humans do.

      and if you think that for one second, when my client wants that change, that I'm going to extend a class, four files away from where I am, versus just adding a simple if condition to the one place where isBlank is defined, then you're going to expect me to charge my client for the two hours of work that it's going to take to adapt a few megs of code throughout a project, and then to test it, and then to write unit tests for it, and to update existing unit tests.

      you'll also, very quickly in my world, have more than three dozen isBlank() functions, all very similar, but completely different. And good luck to you. Humans consider blank to be blank, not a version of blank that's different than a different version of blank. It's called cognitive compression, and it allows for abstract thought. you've killed that, because you now have close to sixty different isBlank functions.

    10. Re:That's not programming... by gl4ss · · Score: 1

      you ever seen a really big project that was 100% unit tested yet full of bugs and full of methods which were implemented so that you could only use them for the one thing they were used for despite them being api calls with generic names which many 3rd parties would depend on when doing their sw? it makes you think that the whole project is just some evil conspiracy.

      unit testing, in real life, just proves that in an isolated environment all the codepaths can be executed with some parameters that don't crash the system.

      though I do think unit testing is great.. but only in one specific instance ...if you're rewriting a project, but not changing anything about the design. essentially it's a great way for doing "chinese copies" of products. when doing something new the unit tests are a bit hard to write before you know what you're even supposed to do - however in the times of modern shit api's and sdk's(I suppose earlier too) what you need to do is do unit testing style testing of the api's you would depend on.

      anyways, on the actual topic of TFA - how the fuck you'd live test a doom engine ??

      --
      world was created 5 seconds before this post as it is.
    11. Re:That's not programming... by jpate · · Score: 1

      you'll also, very quickly in my world, have more than three dozen isBlank() functions, all very similar, but completely different.

      Sure, and also localized to their class definition, so you'll automatically use the right isBlank method at the the right times. Under your approach, you'll need to define the same three dozen isBlank functions, but they'll be all mixed up in each other, and you end up relying on your global case checking code (apparently consisting of a maze of if..then statements) to decide which one is relevant. If the possible calls are in anyway complicated, this case-checking code will be a huge source of bugs.

    12. Re:That's not programming... by holophrastic · · Score: 1

      oh come on, I assumed you knew how to build logic-based intelligence functions without a maze of if statements. it's never about a different flow path for each input type. it's about quick-converting any input type into a lesser or greater type to match the logic gate. a little bit of basic math takes those logic gates to incredible speeds.

      so it becomes more stable, not less. and making a change to the concept of the function means changing all types identically and instantly.

      if the client suddenly says that the letter "F" shouldn't be considered, you need to change it in sixty places. I need to change it in one place.

      I usually like to think in terms of an office environment. You ask one employee to get you the blank files. Whether or not that gets delegated below you is not your concern. You ask one bottleneck, you get one answer. If you're asking each department head to give you their blank files, then you'll be waiting a long time to get them, and they won't come in together, and they won't all be the same version of blank. someone needs to manage that. that's my isBlank function, bucause it sure as hell ain't my business logic, it isn't my application logic, and because my data is structured according to real-world entities for other reasons, it's not going to be my data logic, just like it won't be my data retrieval logic either.

    13. Re:That's not programming... by Anonymous Coward · · Score: 0

      Your comments make me believe that the GP you're replying to knows far more about coding than you do and you write the kind of spaghetti code that makes it almost impossible for others to work on your code. Professional coders write complex applications, not complex functions/methods/classes.

      Why don't you show me some code that no high school student could understand, no university student could write, and for which no employee could ever be accountable. Then you'll see what I do for a living.

      Got it...you create technical debt and maintenance nightmares...if you'd be so kind as to add some sort of signature to your code so that I can be sure I never work on it or use it, I'd be very grateful. Meanwhile, I'll continue to make it my goal to write code that almost any high student could understand and every university student would hope to emulate...I won't always succeed, but it's a good goal none-the-less. And since, unlike you apparently, I am accountable for every line of code that I produce, it will be well tested and easy for others to modify when requirements change.

    14. Re:That's not programming... by holophrastic · · Score: 1

      Dude. you don't know what the word accountable means. When there's a bug, or the code doesn't do what the client thought it would do, do you still get paid? When the client loses money, or doesn't make the money that they expected to make, do you get paid? That's accountability.

      You make up some kind of fictitious "sort of signature". My name's on all of my code. It's on the quote, the estimate, the contract, and the invoice. And you'd better believe that my code requires a hefty amount of effort to learn. It's an incredibly steep learning curve to figure out someone else's business model. The question is how much can you do after you've learned that model, whatever it may be.

      With your code, high school students can work. That's a great achievement in and of itself. But my clients simply aren't interested in the work that a high school student can comprehend. They won't entrust such inexperienced amateurs with every dollar being made. I really enjoy the fact that some of my customers either generate every dollar of revenue through my code, or account for every dollar of revenue through my code.

      That's what I'm maintaining.

    15. Re:That's not programming... by omglolbah · · Score: 1

      And if you're hit by a bus on your way to work?

      Where does that leave your customer?

      If nobody else can pick up and maintain the code without having access to YOU but only your code and documentation... the code is a disaster waiting to happen.

    16. Re:That's not programming... by holophrastic · · Score: 1

      about the same as if anyone's supplier ever drops them as a customer. in my case, if I get hit by a bus, someone needs to spend a real amount of time, about a week, to learn enough to do small changes and about three months to take over entirely. Hopefully I'm not the only one here. in your case, the client's just forced to get high school work forever.

      yeah, it's a real issue. but it's a real business risk whenever your business depends on a single supplier. it doesn't require a bus to lose a supplier. just one invoice disagreement can be enough. so until you have backup suppliers, you're stuck anyway.

      Certainly, I don't have military contracts, and I don't have stock exchange projects. My clients, even the ones that would be hit catastrophically by losing my product and service (with or without me), would suffer for only a few weeks before being almost fully operational again. So that's a business risk that they take.

      and it's a valid one. they choose to spend their money on more features and more service, instead of lower risk of loss. I do the same with most of my suppliers as well. In fact, I specifically do it with all of my suppliers that supply products and services that I don't directly resell. Hmm, interesting.

      I don't floss, my clients don't back things up, it's a vicious circle.

      Maybe that's why I don't take the bus.

    17. Re:That's not programming... by brantondaveperson · · Score: 1

      Sophisticated troll?

    18. Re:That's not programming... by holophrastic · · Score: 1

      didn't originally intend to be. but it kind of turned out that way. my only intention was to point out that tiny functions calling tiny functions that each don't do anything complex can easily be mapped to helpful IDEs that help with trivial structural things; but that properly complex code and experienced programmers don't gain insight by having visualizations and references; we gain insight through rognitive compression -- which is actually thoroughly destroyed by additional information.

    19. Re:That's not programming... by tibit · · Score: 1

      oh come on, I assumed you knew how to build logic-based intelligence functions without a maze of if statements. it's never about a different flow path for each input type. it's about quick-converting any input type into a lesser or greater type to match the logic gate. a little bit of basic math takes those logic gates to incredible speeds.

      Any compiler supporting classes and some notion of an interface will do that job for you. You've made, as we say in Polish, a pitchfork out of a needle. You're extolling handcrafting code for what the compiler should be doing for you, and you're under impression that tightly coupling a lone function to a bunch of different object classes is a good thing. Your posts are full of well-known antipatterns and I would not want anything to do with your code or your coding skills.

      The claim

      you're going to expect me to charge my client for the two hours of work that it's going to take to adapt a few megs of code throughout a project

      is just silly: you're expected to do precisely the opposite, to implement an interface in a class that didn't implement it before, and be done with it. This is quite loosely coupled with any other code, so you won't be changing megabytes of anything.

      you'll also, very quickly in my world, have more than three dozen isBlank() functions, all very similar, but completely different. And good luck to you. Humans consider blank to be blank, not a version of blank that's different than a different version of blank. It's called cognitive compression, and it allows for abstract thought.

      You've got it so wrong I don't even know where to start. Blank is an adjective that has a loosely defined meaning. To every human it may mean something else, and that's what you don't want when dealing with formal systems such as software. When you're talking about data in a computer program, you must use at least a somewhat formal language when you specify what blank means; ideally we'd want a formal specification anyway, but most software engineers are not educated well enough for that (sigh). At that point reusing a common language adjective gives you very little, heck, it may mislead the user of such an API where everyone and their sister can be blak. An array is not blank, it's empty, just like a string is empty. A blank string, to me for example, may be full of blank characters. Ever heard of "fill in the blanks", huh? That's just one example of how misleading you are. You have no clue what cognitive compression is because it doesn't apply in the context of this discussion, not the way you're trying to frame it. In your sentence, you can replace "cognitive compression" with "wakalixes" and nothing of substance will be lost.

      If you're not trolling then consider yourself so badly misinformed and so entrenched in poor software engineering practice as to be unemployable if anyone will ever link your resume to these posts somehow. Those posts are a big "don't hire me, please" sign. Yes, you can earn good salary as a consultant while being abhorrent, I've seen plenty of that. You're lucky the people who you work for are none the wiser.

      --
      A successful API design takes a mixture of software design and pedagogy.
    20. Re:That's not programming... by tibit · · Score: 1

      If you can predict every combination of parameters relevant to the function, then your unit tests simply tell you when you broke your own function

      If you seriously think you need to "predict" such stuff, then you need to go back to school. Guess what: there are ways of writing tests that are formally guaranteed to exercise every conditional in the source code, or, if you go deeper, every conditional in the assembly output of your compiler. Never mind people write and maintain such test suites as a matter of everyday work. It's only magic if you're clueless, you see.

      --
      A successful API design takes a mixture of software design and pedagogy.
    21. Re:That's not programming... by holophrastic · · Score: 1

      You don't understand what I mean when I say quick-converting input types if you think that a compiler can do it for you. I mean taking a three megabyte hash structure, and converting it to the number six in a way that only means something to the isBlank function.

      All of the antipatterns with which you're familiar are antipatterns because they make it difficult for others inexperienced with the project to work on the code. That isn't a priority in my world.

      implementing an interface in a class presumes the class exists. which means that in your world, at some point, you went through the effort of creating and planning that class. the client didn't ask for a class, they asked for a feature. you didn't build that feature, first you built a class. you got it wrong because two days later the client's going to change the feature drastically, sending you back to the drawing board to replan your entire class.

      blank is not an adjective. blank is a subjective description. it's not your word, it's the client's word. so unless you can adapt it in the ways and with the frequency and flexibility that the client uses, you're going to get lost when it comes to client-driven projects.

      that fact that you use somewhat formal language for everything doesn't work in client-driven projects. I frequently program with the client on the phone or over my shoulder, describing what they want to see. to be able to make a change, have them see it, then correct it because they've changed their minds, all in a minute, is important in my line of work. it's vital. so the moment the client says "no, I meant really blank", then all of my coding structure needs to flex to accomodate that. if I was using an array, and blank now means every element is blank, then that needs to be a thirty second change, with little or no testing.

      in this world, there can't be a spec. I'll lose each and every client if I go down the spec road. They aren't technical, in any sense of the word, not only will they not understand a spec, nor be able to contribute to it, but it'll take up time and I'll lose them as clients before we've even started. I can't charge for the time to work out a spec with them. so all of that time would be wasted money, and hence better spent after the fact.

      cognitive compression, again in my world, a world that you don't understand because there's no formal spec, is akin to using one world to cover six others. it's needed in part because the humans involved don't know the other six and hence a close-enough broad-spectrum concept is required, and in part because each of the seven words could have been applicable, and hence they may become applicable. thinking of them all as the equivalent ensures that the code is flexible enough for clients to tweak in all directions. If you've at least understood what I've said, I'm sure you can backtrack the "akin" from words to code.

      you've missed the point. I'm not a software engineer. I'm not interested in being employeable. I don't have a resume and haven't for 15 years. I don't get hired. I don't earn a good salary nor any other kind of salary. Oh, and I don't work for anyone.

      But you've made your stance very clear. You work for someone else. You spend effort trying to look good on paper. you're worried about losing your job. You're a software engineer.

      One day, maybe, if you're not part of the 99% of people who never take any professional risk and responsibility, you'll decide that you're experienced enough to run your own company. And the world becomes a very different place, because you can control absolutely everything.

      I develop solutions; it's not about writing proper code, it's about building reliable solutions. Some of those solutions need to work for only a week -- there are short-term problems in business. so some of the code that I produce is incredible crap, because the entire development cycle from idea through completion is an hour.

      I don't have a resume because I'm not convincing someone else to hir

    22. Re:That's not programming... by holophrastic · · Score: 1

      If you write complex code, where the flow path of one function can change the flow path of another function, then you get to multiply each of your tests by the number of other tests. Making each function that you unit test exponentially grow the number of unit tests that you need.

      So adding a third function, means adding more test cases to the previous two functions.

      Yes, I know this makes no sense to you. Because you've never written a function that isn't self-contained, you've never enjoyed the benefits. Those benefits really hurt your code structure, and your code suffers in terms of speed as well. Oh yeah, and your client benefits, and the project benefits, and your development time improves.

      In my world, to my clients, and in my company, those are the priorities. So I do very advanced things (some of which are actually very old things), to get the results that I want even with the sacrifices that you tend to avoid.

      It's a very different set of priorities. One with which you likely aren't familiar. Until you've rolled your own company, you'd never have had the opportunity to do so.

    23. Re:That's not programming... by holophrastic · · Score: 1

      I don't write doom engines. you're trying to attribute my words to every single project in the world? You think that's sensible? My words and my opinions and my experience are valid for my world, the projects that I do -- oh and since I get to hand pick the projects that I do, they all fit, every time.

      You might want to try taking other people's advice for what it is -- their experience. So sorry that you'll need to adapt it to your environment. If you want someone else's experience to come with an API, you'll need to pay them for the consulting report first.

      Oh, and it wouldn't be difficult to conceive of a toolset allowing you to walk through a doom level, and when staring at the wall, drag a texture to it. Or when picking up a gun, changing which gun it is. Or when an enemy walks left, adjusting their AI to walk right instead. Rewind ten seconds and try again.

      Maybe you can't think of ways to do anything. Others can think of ways to do some stuff. In my world, for my projects, I've designed a language that lets me live test and live develop everything. I had to invent a lot up front.

    24. Re:That's not programming... by Anonymous Coward · · Score: 0

      That was not a feature you requested, the only requirement was to pick three.

    25. Re:That's not programming... by holophrastic · · Score: 1

      See, that's how clients react. And since you didn't get the money ahead of time -- they wouldn't give it to you -- you just wasted all of your development time, and your sales effort time, and you got nothing. That's a hell of an opportunity cost.

      Oh, by the way, congrats, you still need to pay your employees.

      Oh, and you also won't get that client again in the future.

    26. Re:That's not programming... by tibit · · Score: 1

      If you write complex code, where the flow path of one function can change the flow path of another function, then you get to multiply each of your tests by the number of other tests.

      That's simply not true. As I've said, it's a problem that has been solved long time ago, you just never bothered to read up on the computer science side of CSE.

      Yes, I know this makes no sense to you. Because you've never written a function that isn't self-contained, you've never enjoyed the benefits.

      How on Earth would you come to this conclusion is beyond me. Duh, I have plenty of code where a bug in one function can affect the execution paths of tens or even hundreds of other functions. We all have such code. Break your string library for a good example of this magical "flow path of one function can change the flow path of another function", but to think this somehow makes it impossible to test your string library -- wow, just wow. You really seem to think it's all some complex magic, and that only you are doing a good job for your customer. Get off your high horse and get real. What you're saying so far is ultra silly.

      --
      A successful API design takes a mixture of software design and pedagogy.
    27. Re:That's not programming... by holophrastic · · Score: 1

      As I've said, you've never written functions that depend on the insides of other functions.

      I don't at all mean your string library. I mean one business-logic function affecting another business-logic function. For example, write a neural network algorithm, and process different node types using different functions. Notice really quickly that the internal actions of one function doesn't break the other function but drastically changes what it does. It's a correct result, but an undesired result.

      That's what makes the unit tests useless. When the result is totally correct, but completely undesired.

    28. Re:That's not programming... by holophrastic · · Score: 1

      Right, so you can't unit test for correct but undesired results. Because the only thing that makes them undesired is the scenario at large, which has nothing to do with the input parameters to that function, nor anywhere near it.

      So what unit test are you going to write? There's nothing to test. Yes when the input is six, the object will turn left. Yes, that's correct. But the input shouldn't have been six. Yet the previous function output six was also correct. It saw a six, and output six.

      But it turns out that your entire design, while 100% correct, bet on seeing a six resulting in turning left. And that wasn't correct. It wasn't correct because when that number's a six, a different number needs to be checked, and if that number is an eight, the object should turn right. It's not an exception, it's not a boundary case, it's knowledge of the world to make a real-world decision about human beings. And it's totally something that you didn't miss, it's just something that wasn't originally known at all.

      But the result is that your software makes the wrong decision, the wrong choice. and no unit testing can ever find that. because it was a choice. and you can never validate a choice, you can only co-roberate it. That requires making it again differently. And since you didn't know the scenario before, you won't know it again.

  30. Yeah that documentation trick is neat... by Anonymous Coward · · Score: 0

    Too bad it will never work. As of this day I haven't found a single development environment where installing the documentation into the IDE was not a pain in the ass. And all of them come in a form that is not easily extracted by other applications. Creators of the platform seem to have a vested interest in controlling distribution and presentation as much as possible.

    - Visual studio needs a downloader/installer and a goddamn local webserver to even show .NET docs. And inline xml documentation is awfully verbose, maintaining it is a nightmare.
    - Java IDEs need an archive filled with html page from oracle. Why it doesn't come with the JDK by default I'll never know. At least inline docs are sane.
    - Flash documentation is a nightmare in just about every way possible.
    - Unity, the game engine I'm working on right now, again uses a pile of html for its documentation, which comes with the installer.
    - Last time I used c++, the best documentation was cplusplus.com, which of course was awkward to search and impossible to download for local use. (I might be wrong about that these days though. Don't know if there were any significant changes.)

    I just don't see documentation like this becoming big unless everyone agrees on a common format for every language and every platform and make all documentation available for online and local use, no strings attached. This will never happen.

  31. What if you want to program an IDE in the IDE? by Lord+Lode · · Score: 1

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

    1. Re:What if you want to program an IDE in the IDE? by H0p313ss · · Score: 1

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

      ... we could call it Eclipse!

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    2. Re:What if you want to program an IDE in the IDE? by Anonymous Coward · · Score: 0

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

      If you want to do that, you'll have to bring in Xzibit as a consulting engineer.

  32. Getting there... by Twinbee · · Score: 1

    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 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 with "close" or "quit"), but ALSO where each function is ranked according to how much it's used. This will vary somewhat from person to person and program to program, but more often than not, some methods (and variables) from a class will be used much more often than others in general. It would be nice to see these at the top when given (often hundreds of) potential candidates.

    --
    Why OpalCalc is the best Windows calc
  33. Functions - not files - as smallest unit by thereitis · · Score: 1

    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. :)

  34. IDE? by theswimmingbird · · Score: 2

    I thought we'd all moved on to SATA by now.

  35. Re:Files are not the best representation of code.. by luis_a_espinal · · Score: 1

    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, 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.

  36. Re:Files are not the best representation of code.. by luis_a_espinal · · Score: 1

    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 ;)

  37. But much code takes a while to compile... by Anonymous Coward · · Score: 0

    Something I was confused about in Victor's talk. The code he was editing seemed to be really short.

    For my code, it takes a few minutes for the code to compile -- sometimes as long as 10 minutes if you're doing a full rebuild.

    How could you use a tool like this in that context?

    1. Re:But much code takes a while to compile... by sugarmotor · · Score: 1

      I think its fair to assume you use such a system when full rebuilds are not needed.

      Such a system will work only with some software. For other software you would use a different system, or none at all. Software is just such a vast category.

      --
      http://stephan.sugarmotor.org
  38. Re:Files are not the best representation of code.. by Anonymous Coward · · Score: 0

    It would be very hard to visualize a 300-line long spagetti wall-of-text-function ;)

    Not much harder then visualizing 300 line long functions (plus one more to glue them together).

    This IDE sounds all exciting as long as you're working on a program that displays "Hey Chris!", not so much if you think of larger projects.

  39. Re:Files are not the best representation of code.. by luis_a_espinal · · Score: 1

    It would be very hard to visualize a 300-line long spagetti wall-of-text-function ;)

    Not much harder then visualizing 300 line long functions (plus one more to glue them together).

    This IDE sounds all exciting as long as you're working on a program that displays "Hey Chris!", not so much if you think of larger projects.

    You are missing the point (the one about size of unit of code and complexity): A system consisting of 300-line long functions/methods/proc/anything is a PITA to work with. Yes, it could be visualized, but it will be of little help to the poor soul that happens to inherit such a system.

    Or maybe I am misunderstanding the point you are trying to make. I'm being honest, we could be talking about completely different things.

  40. Re:Files are not the best representation of code.. by s73v3r · · Score: 1

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

  41. Re:Files are not the best representation of code.. by s73v3r · · Score: 1

    Yes, but the programmer still has to do that splitting manually.

  42. Re:Files are not the best representation of code.. by s73v3r · · Score: 1

    Not much harder then visualizing 300 line long functions (plus one more to glue them together).

    Odds are I don't care about all 300 at the same time. I only care about a couple of them at once.

  43. Re:Files are not the best representation of code.. by Anonymous Coward · · Score: 0

    I meant line long functions, three hundred of them. As in, the result of factoring out shorter functions from 300-line long one.

    Even if you go all higher-order and code-reuse on its ass and get it down to 50 functions (and 50 lines of glue), it's still a lot to visualize at once, especially since every of them are called half a dozen times with different parameters now.

    And in relation to a response below ("Odds are I don't care about all 300 at the same time. I only care about a couple of them at once.") - it just becomes no more useful then usual code walking, and I guess latence of tracing thru those 298 inbetween the two you're inspecting is still there.

  44. Re:Files are not the best representation of code.. by thetoadwarrior · · Score: 1

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

  45. Re:Files are not the best representation of code.. by rsborg · · Score: 1

    So, you want Smalltalk code browsers. 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.

    --
    Make sure everyone's vote counts: Verified Voting
  46. Re:Files are not the best representation of code.. by H0p313ss · · Score: 1

    ... 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.

    Sing it brother.

    --
    XML is a known as a key material required to create SMD: Software of Mass Destruction
  47. Re:Files are not the best representation of code.. by firewrought · · Score: 2

    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 SQL/Windows, Visual Basic, etc.].

    Some will be smarter (or rather, more well-funded) and develop something that lets you have your cake [store data in text files] and eat it too [work w/alternate representations]. Despite all its drawbacks, XML has been a major enabler of this, and it has the advantage of playing nice with version control and other file management tools.

    Some folks will be even smarter yet and figure out different ways to exploit the absolute truth: for instance, static HTML operates quite successfully on file based representation. That economy let it win the hypertext wars before they even began. Or as another example, the D programming language strengthens the meaning of the "file" as the logical unit of management (for instance, a private member is visible to all code within the same file, regardless of whether it's in a different class or not).

    So I guess what I'm saying is... consider fad-ish claims carefully and try to place them in a more holistic perspective.

    --
    -1, Too Many Layers Of Abstraction
  48. Re:Files are not the best representation of code.. by Anonymous Coward · · Score: 0

    Code Bubbles looks pretty nice. Unfortunately it's for Java.

  49. Intermediate view is useful for *some* domains by Anonymous Coward · · Score: 0

    There are some times (such as HTML generation) where the intermediate results would be useful to see right away.

    There are other times when they would just annoy you. If I've got an algorithm in mind and I have to type 20 lines of code, I don't want to be bothered by the panel on the right showing me all the stuff I know is wrong.

    This reminds me of Google's dynamic search; but for code. I turn off dynamic search because it's too CPU intensive for my machine.

  50. Re:Files are not the best representation of code.. by AdrianKemp · · Score: 3, Interesting

    Why exactly do you want to see code as something other than what it is?

    Abstraction layers lead to nothing but hassle...

  51. expression blend? by gl4ss · · Score: 1

    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.

    --
    world was created 5 seconds before this post as it is.
  52. how is this different from this...? by the+agent+man · · Score: 1

    In Conversational Programming your program is executed all the time and annotated. The Bret Victor approach does not scale well in comparison because it tries to compute everything. That works fine for a toy example such as a simple drawing but what if your application has many objects interacting with the user or interacting with each other? Long answer in the paper but the short one is that you need to be able to focus on bits of code relevant to the users as suggested by the user through the selection of objects:

    http://www.cs.colorado.edu/~ralex/papers/PDF/Conversational-Programming%20VL-hcc2011.pdf http://www.agentsheets.com/Documentation/windows/Reference/conversational_programming.html

  53. Sounds like .. by Anonymous Coward · · Score: 0

    someone's been at the Helium a bit too much.

  54. You're just ignorant. by Anonymous Coward · · Score: 0

    You don't seem to have any idea of how mocking and dependency injection can be used to avoid the combinatorial explosion in a completely trivial way.

    1. Re:You're just ignorant. by holophrastic · · Score: 1

      I think you're missing the idea that the project and it's requirements and the ways in which features work drastically changes from one day to the next. Think about it as an entirely different project, that you won't be paid again for. Trying to fabricate a reduced example is rough here, but imagine buliding a product catalogue web-site for a grocery store, with foods and a set of tax laws and organizational structures and delivery.

      Six months later it changes to a furniture store, with photography, different tax laws, distributors, fabric options, colour options, show rooms and delivery.

      It's the same client and the same project because the client isn't actually either of those. The client manages delivery for all sorts of businesses. Of course, the client didn't plan to have this web-site do both in the beginning. And not only were you not told that this client does more than just food delivery, but you'd have lost the sale had you even suggested it -- because that wasn't what the client was looking for originally, and so you were competing with much lower offers and ideas.

      Oh, and now the site actually needs to do both, because the client does both. And the food site was so good that they changed their entire business around to flex that advantage, and now they want the same for their furniture delivery.

      So I hope you didn't base your design on the tax laws, or how many pictures per product, or how many types of picture per product, or whether or not the product has colour options, or fabric options, or size options, or how they get grouped and categorized, or how they're stored in the database, or administered by the client's staff, or anything else, because now it's not only all changed, but it's going to change again.

      Of course I based my design on most of those things -- especially the whole options and grouping things. The difference is that I can literally shift around code and change it all very quickly, with the client on the phone. I can then charge them what they expect -- because they don't see the difference in the two businesses, at their level, it's the same business. So whereas someone else would quote them a number and a timeframe that would result in the client eventually not going ahead with it, I get the go-ahead over night. Even if the dollar amounts are the same, I can get the go-ahead without a quote, without a time-frame, and without the client shopping it around. I can also show them what it might look like on-the-fly.

      That's the business that I'm in. It's for the "delivery service" company, that treats food and furniture the same way, even though I need to treat them differently.

  55. Anyway... by Anonymous Coward · · Score: 0

    Both Code Canvas and Light Table are really exciting for me, and BOTH make me wish I was still coding...

    Love the arrows through the Code Canvas debugger stack thing... Gimmick perhaps, but I'd find it really useful (if I were still coding, of course...)

    That is all.

  56. Re:Files are not the best representation of code.. by Anonymous Coward · · Score: 0

    ahead of it's time

    "its".

  57. Re:Files are not the best representation of code.. by Twinbee · · Score: 1

    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.

    --
    Why OpalCalc is the best Windows calc