Hacker News new | ask | show | jobs
by kybernetyk 4704 days ago
From the kickstarter page:

      > If you’re a programmer, deep down, you know code is bad, it rots, 
      > and with each new line your software accrues complexity debt. 
      > New code means more bugs, more refactoring and more time needed
      > to bring someone else up to speed.
Yeah, and moving little interconnected boxes around a project workspace will solve that? It's not like visual programming is something revolutionary new and different - it's just another representation of the same old thing. So the chances that it will solve the current problems with large code bases are the same as a green car being faster than a yellow car only because of the color.
2 comments

I think their reasoning isn't entirely flawed. I have a hunch that by showing how the code is laying out, tolerating spaghetti mess will be much harder than it is in a common IDE - the amount of complexity that code hides can't be hidden when splayed out as graph.

As for solving problems with current codebases, you're entirely correct. I think this will have a purpose in identifying common functionality for refactoring for small projects, but to wrangle a large project into something usable with this will require good automated code clone detection (which may or may not be good enough as of today) to enable the redundant nodes to be coalesced.

The complexity and spagetti will just end up inside those nodes rather than between them, the same discipline required to refactor and rearchitect as requirements change will apply. This just seems like a visual wrapper on a much more functional programming / actor model style approach.
> The complexity and spagetti will just end up inside those nodes rather than between them

Great! I would see that as a massive improvement in itself.

First priority: the overview of the system should be clear. Then: drill down a level to see the detail within each node.

Good point, but poor analogy. Everyone knows that red cars go faster (http://tvtropes.org/pmwiki/pmwiki.php/Main/RedOnesGoFaster).

I think more to the point I can't see anything about visual programming that will make refactoring easier or less necessary.

I think more to the point I can't see anything about visual programming that will make refactoring easier or less necessary.

I don't fully agree. Well, I do agree that it is just as necessary and good software engineering principles are necessary to prevent the code from (quite literally) becoming spaghetti code, but from the work I've done in Max/MSP, I feel that as long as you follow software engineering principles (most Max/MSP people don't because most are eg musicians and such who have no software engineering training) I found it to be a very pleasant experience with many advantages over traditional textual languages. Granted, some things really are best represented textually (certainly complex expressions or formulas) but a lot of code is just routing data around and I found that the visual languages I've used (mainly Max and Synthmaker) really shine at that. in fact, I find that moving data around is the single most important programming task in most programs.

Other areas where visual programming really shines is in experimental programming and I think a big part of that is that 1) you can easily "wire" things up differently and change things just to see what happens and 2) you don't have to name things until you're good and ready. You still should properly name things, of course, but during prototyping and experimentation I find this often gets in my way when using textual languages and I end up giving things temporary names like foo or x. Another area where (some) visual languages shine is debugging because they often let you visually see the flow of data through the code and intercept it and such. I found Max/MSP's debugger to be very nice to use, though I also feel there is a lot of room for it to improve even more still and unit testing tools are needed too.

As for refactoring - you know how some IDE's have a feature where you can select a bunch of code and hit refactor and it puts it into its own function for you? Max does this really well too: click-drag to select all the components you want to factor out and it places it all into a new component for you. Really quick and easy. This isn't a visual vs textual thing but rather a tooling thing, of course.

Thanks, I never expected reading a TVTropes reference here. You just made my day.
Yes, that's why I chose yellow and green, obviously ;)