Slashdot Mirror


Has Flow-Based Programming's Time Arrived?

An anonymous reader writes "Flow-based programming keeps resurfacing lately. FBP claims to make it easier for non-programmers to build applications by stringing together transformations built by expert programmers. Many projects have already been using similar approaches for a long time, with less (or different?) hype. Is it time to take a closer look at flow-based programming? 'Clean functions – functions without side effects – are effectively pure transformations. Something comes in, something goes out, and the results should be predictable. Functions that create side effects or rely on additional inputs (say, from a database) are more complicated to model, but it’s easier to train programmers to notice that complexity when it’s considered unusual. The difficulty, of course, is that decomposing programs into genuinely independent components in a fine-grained way is difficult. Many programmers have to re-orient themselves from orthodox object-oriented development, and shift to a world in which data structures are transparent but the behavior – the transformation – is not.'"

268 comments

  1. Like libraries? by epyT-R · · Score: 3, Insightful

    old is new is old is new is old is...new?

    1. Re:Like libraries? by niftydude · · Score: 4, Insightful

      Actually, sounds more like LabView.

      Fishing through that programming environment's icon set for the correct function is very close to what I imagine hell must be like.

      --
      You can never know everything, and part of what you do know will always be wrong. Perhaps even the most important part.
    2. Re:Like libraries? by hobarrera · · Score: 4, Funny

      Old being the new new has already gotten old. Old is the new old, new is the new new.

    3. Re:Like libraries? by rich_hudds · · Score: 2

      My thoughts exactly. Isn't 'flow based programming' just a renaming of 'procedural programming'?

      I still think that your average business application that mainly updates a db and has pretty vanilla looking maintenance screen is easier to code using the old style procedural approach, rather than trying to treat an invoice / customer / complaint as an object.

      I realise you wouldn't write GTA using procedural programming, but for certain tasks it just makes things simpler.

    4. Re:Like libraries? by Anonymous Coward · · Score: 0

      LabView

      Or Verilog
      Or SystemC

      Here's a list.

    5. Re: Like libraries? by Anonymous Coward · · Score: 0

      You are missing the point. Object orientationâ(TM)s main purpose is to reduce complexity by keeping data (structure) and function in one place. In fact, your example is a perfect fit as such applications tend to become a right mess in a procedural manner as many parts access the same data. Quickly, no one knows for sure who accesses the data and in what manner. Changes to the data structure become a nightmare as one can never be sure of the impact. Contrast this to an object oriented approach where the chances of breaking other parts of the system is much lower (as long as the interface and its semantics are preserved). Granted you can achieve the same properties by procedural programming (i.e. require the use of special functions to access the data) but that is just usinf the proverbial hammer to hit the screw

    6. Re:Like libraries? by Opportunist · · Score: 2

      I was more "like bash scripts?"

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    7. Re:Like libraries? by Jane+Q.+Public · · Score: 2

      "My thoughts exactly. Isn't 'flow based programming' just a renaming of 'procedural programming'? "

      No. It's "black box" design.

      This approach came along a long time ago with the advent of integrated circuits. The IC is a "black box". Give it input meeting certain specifications, get output of certain specifications.

      The advantage of "black box" design is that you don't need to know what goes on inside the boxes (thus the name). You just put the boxes together in the right combination to get the result you want.

      There are disadvantages to black box design:

      All the inputs and outputs must be specified exactly, and conform to a standard, or the whole approach falls down. Everything must be precisely documented, and no gray areas allowed.

      And you don't learn anything from black boxes. That's all they are: boxes.

    8. Re:Like libraries? by Pino+Grigio · · Score: 1

      It sounds to me like a pipeline, with each component in the pipeline transforming the data. It's gStreamer... or that kind of thing, with a fancy front end for dragging and dropping elements into bins and connecting bins together with T's. Not exactly new.

    9. Re:Like libraries? by Kjella · · Score: 1

      My thoughts exactly. Isn't 'flow based programming' just a renaming of 'procedural programming'? I still think that your average business application that mainly updates a db and has pretty vanilla looking maintenance screen is easier to code using the old style procedural approach, rather than trying to treat an invoice / customer / complaint as an object.

      Well to each his own, but to me it sounds like a near ideal case for OOP... every object is steward for a data row. Particularly if you're doing a MDI interface where you're reviewing a complaint and is looking through the customer profile, invoices etc. to see if the complaint looks genuine. There's no fixed order, there's no nesting level, there's no lifespan so the call of procedures might go like

      viewComplaint()
      viewCustomerHistory()
      viewInvoice()
      closeCustomerHistory()
      submitAndCloseComplaintAnswer()
      closeInvoice()

      It's fine if you have a big task and is breaking it down into many managable and reusable sub-procedures but when you have many independent forms (screen objects, to avoid the OOP object) with individual life spans then it feels like trying to put a square peg into a round hole. Plus it's a simple way to "bundle" related procedures like for example if they add a new field to a "Complaint" you have to find and edit viewComplaint() and submitAndCloseComplaintAnswer() and maybe there's a bunch of others like escalateComplaint() and did you catch them all? In OOP they should all be in the Complaint class, in procedural programming you're hoping they all have sane naming so you can find them. And sanity is in short supply in most large business applications.

      --
      Live today, because you never know what tomorrow brings
    10. Re:Like libraries? by Anonymous Coward · · Score: 0

      No, it's a renaming of "functional programming". Just instead of "mapping a function over a list" you say "applying a transformation to a stream". But it's exactly the same.

    11. Re:Like libraries? by Anonymous Coward · · Score: 0

      So what exactly is a function (like qsort) to the user if not a black box? And what exactly is a class (like array) or an object of such a class to an user if not a black box?

      And ultimately, even processor instructions are black boxes. So programming in assembly language is also black box programming, since you are just chaining black boxes (processor instructions) together. Or do you really know how exactly ADD is implemented in your processor?

    12. Re:Like libraries? by Anonymous Coward · · Score: 0

      In an object-oriented model the flow would be:

      aComplaint := Complaint.get()
      aComplaint.view()
      aCustomer := aComplaint.getCustomer()
      aCustomerHistory := aCustomer.history()
      aCustomerHistory.view()
      anInvoice := aCiustomerHistory.getInvoice()
      aComplaint.adjudicate()

      Obviously there are a few missing details but the flow-based logic is easy to follow and understand.

    13. Re:Like libraries? by Joce640k · · Score: 3, Funny

      Actually, sounds more like LabView.

      Fishing through that programming environment's icon set for the correct function is very close to what I imagine hell must be like.

      They have an icon for every possible programming function?

      http://www.devtopics.com/wp-content/uploads/2009/04/image6.png

      --
      No sig today...
    14. Re:Like libraries? by Darinbob · · Score: 2

      Flow based? Sounds like MONIAC.
      http://en.wikipedia.org/wiki/MONIAC_Computer

    15. Re:Like libraries? by Anonymous Coward · · Score: 0

      Assuming the view() methods return the object itself:

      Complaint.get().view().getCustomer().history().view().getInvoice().adjudicate()

      See? We've got a flow!

    16. Re:Like libraries? by fuzzyfuzzyfungus · · Score: 3, Insightful

      Actually, sounds more like LabView. Fishing through that programming environment's icon set for the correct function is very close to what I imagine hell must be like.

      I suspect that it's pretty strongly dependent on implementation, with two main drivers: On the one hand, you have the needs of essentially-not-programmers-at-all, who have some input that needs to travel through a series of tubes and get transmogrified. The results aren't going to be pretty; but it's a legitimate need. (there are also those who argue that it's a good pedagogical approach for young children, as in classic Klick 'n Play(published by Maxis in the US, international publishing and titles are strangely all over the map, or the more recent Scratch.

      On the other hand, "Flow-based programming" is essentially another flavor of Functional Programming, which seems likely to never truly die, no matter how obscure in real-world use, because of how central the concept of 'functions' in some reasonably generalized sense is to mathematics, ensuring a ready supply of people ready to charge into the breach and try to bring the elegance of pure mathematics to programming. Again.

    17. Re:Like libraries? by ultranova · · Score: 1

      This approach came along a long time ago with the advent of integrated circuits. The IC is a "black box". Give it input meeting certain specifications, get output of certain specifications.

      So in other words, "black box programming" is a marketing term for using libraries.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    18. Re:Like libraries? by Anonymous Coward · · Score: 0

      More likely you've got an exception or a null pointer fault.

    19. Re:Like libraries? by grumbel · · Score: 1

      An object has state, you have to initialize it, use it's functions in the right order or things will explode. Flow based programming is more like your Unix shell, where you have "cat | sort | uniq | ..." and don't have to worry about the state "sort", you simply throw data into it at once end and data comes out at the other.

    20. Re:Like libraries? by K.+S.+Kyosuke · · Score: 1

      the needs of essentially-not-programmers-at-all, who have some input that needs to travel through a series of tubes and get transmogrified

      The needs of those who need to send input through a series of tubes and get transmogrified are already fulfilled by NSA and Gitmo.

      --
      Ezekiel 23:20
    21. Re: Like libraries? by K.+S.+Kyosuke · · Score: 1

      Object orientationâ(TM)s main purpose is to reduce complexity by keeping data (structure) and function in one place. In fact, your example is a perfect fit as such applications tend to become a right mess in a procedural manner as many parts access the same data.

      Except that virtually all object-oriented languages (if not all of them - certainly all widely used) are procedural in nature.

      --
      Ezekiel 23:20
    22. Re: Like libraries? by Rockoon · · Score: 1

      Granted you can achieve the same properties by procedural programming (i.e. require the use of special functions to access the data) but that is just usinf the proverbial hammer to hit the screw

      I am often amazed at this reasoning. So using an OO language where you require the use of special functions in a special place to access the data is OK, but using a bog-standard procedural language and having the same requirements is somehow the old "hammer vs screw" idiom.

      I got news for you: Invoking some well known and often accurate idiom while making your argument doesnt make your argument accurate.

      There is value in making such things formal but there is also value in not enforcing rules just for the sake of having rules. The argument as you present it is a snake chowing down on its own tail.

      --
      "His name was James Damore."
    23. Re:Like libraries? by K.+S.+Kyosuke · · Score: 2

      Well to each his own, but to me it sounds like a near ideal case for OOP... every object is steward for a data row.

      If your database is relational, it's actually a horrible idea because the objects are essentially materializations of potentially ephemeral tuples (selects generate ephemeral virtual relations that don't need to be materialized to have other operations work on them). That would make sense for only the base tables which are on non-volatile media, but if you insist on turning relational tuples into objects, you're screwing up the whole relational algebra thing.

      I don't see how this is a good idea because you're turning a non-procedural (in this case, relational) system that can manipulate huge swathes of data (for which you have nicely composable algebraic operations) into a set of values with 1) no multi-user access concurrency control, 2) no clean algebra, 3) no bird's perspective optimizers and 4) with the need to express any operations as procedures.

      (Yes, OO languages are procedural - they specify a *procedure* for solving the problem, where "procedure" means a sequence of global state transformations, as opposed to declarative languages such as SQL or Datalog. Your procedures will most likely never reach the performance of a good relational solution - and if they will (with OpenMP, MPI etc. on the brute force side, and with writing your own optimizers and shortcuts for operation composition on the clever side), you'll only have replicated the functionality of a relational engine - and most likely badly at that.)

      Plus it's a simple way to "bundle" related procedures like for example if they add a new field to a "Complaint" you have to find and edit viewComplaint() and submitAndCloseComplaintAnswer() and maybe there's a bunch of others like escalateComplaint() and did you catch them all? In OOP they should all be in the Complaint class, in procedural programming you're hoping they all have sane naming so you can find them.

      What? "hoping for sane naming" in procedural programming? They don't even have to have names if your procedural non-OO language has first-class functions. Even many procedural OO languages have first class functions. (And non-OO procedural languages sort of tend to have modules these days, for that matter.)

      --
      Ezekiel 23:20
    24. Re:Like libraries? by Rockoon · · Score: 1

      Its rare for a library not to have functions with side-effects.

      For instance, the C standard library does not in any way present a system equivalent to black boxes. Some of the functions certainly qualify, but many do not.

      Pretty much the only languages where you will find black-box equivalent libraries are the pure functional languages which there arent that many (most are hybrids that trade off purism for side-effects on purpose.) In the object oriented world, all objects must be immutable or you cannot enforce black boxes.

      --
      "His name was James Damore."
    25. Re: Like libraries? by Anonymous Coward · · Score: 0

      Object orientationâ(TM)s main purpose is to reduce complexity by keeping data (structure) and function in one place. In fact, your example is a perfect fit as such applications tend to become a right mess in a procedural manner as many parts access the same data.

      Except that virtually all object-oriented languages (if not all of them - certainly all widely used) are procedural in nature.

      A statement that has no meaning. The old Structured Programming paradigm was also procedural. The important part is that it added a certain level of discipline.

      OO programming adds an additional layer of discipline. It says that objects are expected to be responsible for themselves, not simply containers for data that can be directly manipulated at the whims of external code.

      By delineating clear boundaries, an OOP object not only can limit the possible interactions to a more manageable level, it can also be instrumented to assist in debugging those interactions. Instead of having to tap into each interaction with an object's components, the object methods can be tapped, instead. This reduces the number and location of places that require extra interaction.

    26. Re:Like libraries? by Anonymous Coward · · Score: 0

      Well to each his own, but to me it sounds like a near ideal case for OOP... every object is steward for a data row.

      If your database is relational, it's actually a horrible idea because the objects are essentially materializations of potentially ephemeral tuples (selects generate ephemeral virtual relations that don't need to be materialized to have other operations work on them). That would make sense for only the base tables which are on non-volatile media, but if you insist on turning relational tuples into objects, you're screwing up the whole relational algebra thing.

      I don't see how this is a good idea because you're turning a non-procedural (in this case, relational) system that can manipulate huge swathes of data (for which you have nicely composable algebraic operations) into a set of values with 1) no multi-user access concurrency control, 2) no clean algebra, 3) no bird's perspective optimizers and 4) with the need to express any operations as procedures.

      (Yes, OO languages are procedural - they specify a *procedure* for solving the problem, where "procedure" means a sequence of global state transformations, as opposed to declarative languages such as SQL or Datalog. Your procedures will most likely never reach the performance of a good relational solution - and if they will (with OpenMP, MPI etc. on the brute force side, and with writing your own optimizers and shortcuts for operation composition on the clever side), you'll only have replicated the functionality of a relational engine - and most likely badly at that.)

      Plus it's a simple way to "bundle" related procedures like for example if they add a new field to a "Complaint" you have to find and edit viewComplaint() and submitAndCloseComplaintAnswer() and maybe there's a bunch of others like escalateComplaint() and did you catch them all? In OOP they should all be in the Complaint class, in procedural programming you're hoping they all have sane naming so you can find them.

      What? "hoping for sane naming" in procedural programming? They don't even have to have names if your procedural non-OO language has first-class functions. Even many procedural OO languages have first class functions. (And non-OO procedural languages sort of tend to have modules these days, for that matter.)

      I think you should study up on Design Patterns. It sounds like you expect an ORM Object Model object to contain its own Business Logic. And, as you said, that's a Bad Idea. Database tables require more flexibility than that.

      In practical terms, an ORM Object Model object works best as a simple data container paired with an access (DAO) object. And for complex projects, I have found it worthwhile to further isolate the business-related logic to a class of its own. And, for that matter, an object for operations that act on sets of objects, such as parent/child functions.

      All that has a cost, of course, but if raw efficiency were paramount, we'd still be doing everything with ISAM files and Assembly Language. People Efficiency is far more important in this era of cheap hardware, as is the ability to maintain very complex and flexible systems.

    27. Re:Like libraries? by gd2shoe · · Score: 1

      ...and don't have to worry about the state "sort", you simply throw data into it at once end and data comes out at the other.

      Not entirely true. If you give sort a very large file, it's going to explode. You do need to worry about the state of the data that you're passing in, and what it will do to the state of the sort program.

      On the flipside of the coin, well written OO code will practically initialize your objects for you, and keep you from doing stupid stuff with them (mutexes, etc). Yeah, I wish more OO languages made things as easy as UNIX pipes, but it isn't a difference of statefulness v. statelessness.

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    28. Re:Like libraries? by gd2shoe · · Score: 1

      In the object oriented world, all objects must be immutable or you cannot enforce black boxes.

      Not true. If you wrote a very small library with one class that contained a threadsafe counter, it would be both mutable, and quite possible to guarantee it's behavior (within the limits that can be guaranteed by the compiler, OS, hardware, etc), including all edge and corner cases. In other words, a mutable black box is entirely possible in OO code.

      Your argument is akin to the one that says that it is impossible to write code entirely devoid of bugs. Our programming paradigms and environments just don't aid us in writing perfect programs, so we don't. We're still working largely with 90's paradigms in programming, just with snazzier editors and debuggers. Eventually we'll have better system design tools in our IDEs that will help us avoid and detect bugs at every stage of the development process. Then the best and brightest will actually write some code without bugs. Some.

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    29. Re:Like libraries? by gd2shoe · · Score: 1

      ... as opposed to declarative languages such as SQL

      Oh, boy. Hate to break it to you, but SQL is a de-facto procedural language masquerading as a declarative language. Think of it as a specialized interpreted scripting language. Yeah, the language does a bunch of stuff for you on its own, but so does any other procedural scripting language.

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    30. Re:Like libraries? by zippthorne · · Score: 1

      Do you know that for sure? I imagine that if you pass it a huge file over standard input you might run into issues due to physical memory, but not knowing the implementation, that's about as far as I'd be willing to go. One can certainly imagine a case where giving it a file argument instead of standard input would result in it using an efficient approach for that circumstance.

      --
      Can you be Even More Awesome?!
    31. Re:Like libraries? by niftydude · · Score: 1

      They have an icon for every possible programming function?

      Yep, the environment is completely graphical, and so logic flows (if, while), arithmetic operations (+, -), boolean operations, and string operations, all require you to find the right icon.

      --
      You can never know everything, and part of what you do know will always be wrong. Perhaps even the most important part.
    32. Re:Like libraries? by Anonymous Coward · · Score: 0

      This is not true. Sort uses the disk for temporary storage when the input set does not fit into memory. Read the man page!

    33. Re:Like libraries? by ArhcAngel · · Score: 1

      Nice list. I used both LabView and HP (now Agilent) VEE in the early nineties. Working in a lab this was a time saving godsend. We were tweaking hardware and software so the ability to logically flow a new program on the fly was great and not having to explain to the engineers was nice since they could look at the flow on the screen and see what the program was doing. Of course once the semantics were figured out it all got rewritten in Objective C on the NeXTcube for production. Once a flow program reaches a certain level of complexity it becomes nigh impossible to follow the flow due to overlap and screen size.

      --
      "A person is smart. People are dumb, panicky dangerous animals and you know it." - K
    34. Re: Like libraries? by K.+S.+Kyosuke · · Score: 2

      A statement that has no meaning.

      It has a meaning. It means that an OO language is not likely to be declarative/goal-oriented.

      OO programming adds an additional layer of discipline. It says that objects are expected to be responsible for themselves, not simply containers for data that can be directly manipulated at the whims of external code.

      Alan Kay says it quite clearly what OO means. Extreme late binding and messaging are the crucial points here. According to your description, all that OO would do for you is adding a little more structure to your source files, yet OO in Alan Kay's original sense gives you much more power, for example to catch message sends themselves (because the method selection mechanism itself is supposed to be late-bound!) and massage them - send it to other objects, over a network, log it, translate it into another message according to an algorithm, apply an access policy based on the originator of the message etc. None of that is a part of your description, yet it's crucial for the power of true OO systems and it's what actually made OO systems a definite step forward.

      By delineating clear boundaries, an OOP object not only can limit the possible interactions to a more manageable level, it can also be instrumented to assist in debugging those interactions.

      Perhaps you ought to clarify this a bit, since even non-OO languages have modules and name spaces of various kinds to "delineate boundaries".

      Instead of having to tap into each interaction with an object's components, the object methods can be tapped, instead. This reduces the number and location of places that require extra interaction.

      Again, perhaps you ought to be more specific. Is "tapping into each interaction with an object's components" supposed to mean tracing the message sends the object performs on your behalf? How does that differ from "tapping the object's methods", since that sounds like the same thing to me?

      --
      Ezekiel 23:20
    35. Re:Like libraries? by skids · · Score: 2

      It's not new at all, but doesn't have to be. It's a paradigm that has been challenging the CS community to build a good UI or language around for decades. So far the results have been mediocre.

      It's good to see a more serious effort, however, using side-effect-free FBP isn't exaclty a good first step towards making a natural feeling UI, given that functional programming is essentially the polish arithmetic of the programming field, and is absolutely awful at modeling real-time.

    36. Re:Like libraries? by Half-pint+HAL · · Score: 2

      Flow is a very different paradigm from FP. Technical features of FP such as tail recursion are not a specific part of flow programming, because while functional programming is intended to apply at every level of code, whereas flow programming is simply modular coding taken to an extreme.

      In fact, while functional programming is a form of classic declarative programming, flow is essentially an attempt to implement something approaching semantic programming within the declarative paradigm. It's an attempt to define programs in terms that business process writers would understand. It's not functional programming.

      Besides, functional programming would make even 3D games far less buggy. No, you can't write a 3D game in purely functional terms, but there is a hell of a lot of code in there that does matrix transforms and is inherently deterministic and context-independent. Personally, I would like to see the FP paradigm accepted as a subsystem of procedural programming, where you can nest procedures within procedures, but once you enter a function, there's no way you can call a procedure from inside. This would guarantee stateless subparts of the code, reducing the number of lines of code to check while tracking down an intermittent bug. I wouldn't say it needs to be pure FP, because you're always going to have to have some kind of environment variables, and some people will abuse them as global variables, but hey-ho...

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    37. Re:Like libraries? by Half-pint+HAL · · Score: 1

      Dagnabbit. I meant "imperative programming", not "declarative". Oops.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    38. Re:Like libraries? by Anonymous Coward · · Score: 0

      No. Hell is trying to debug the 'code'. Anything that isn't trivial is almost impossible to debug. I've spent too many hours debugging LabVIEW.

    39. Re:Like libraries? by Anonymous Coward · · Score: 0

      Yep, the environment is completely graphical, and so logic flows (if, while), arithmetic operations (+, -), boolean operations, and string operations, all require you to find the right icon.

      Which is insanely easy to do.

    40. Re:Like libraries? by Anonymous Coward · · Score: 0

      ...bring the elegance of pure mathematics to programming. Again.

      And tack on some way of modeling state, because the world is full of stateful things that need to be modeled. Also, unless your computer has no memory (!) it is inherently stateful. The real fun comes when you start out with a collection of things that don't model state; but if you can implement NAND you can implement a flip-flop and create memory, thus modeling state. WTF? All our components were stateless. Why are we banging our heads over the same problems that occur in stateful systems?

      Ohhh... dammit. No where to run, nowhere to hide.

    41. Re:Like libraries? by gd2shoe · · Score: 1

      grumbel's example has data coming in from a pipe, so no excessive disk read activity will help. Memory is indeed the obvious problem here. State includes memory usage. My overall point remains. In general, you still must consider state when programming using the producer-consumer model.

      Data-in leads to statefullness within the program handling the data. If that data leads the program into a non-nonsensical state, then you'll have problems. You must consider such things when coding bash commands. They may be black-boxes (or nearly so), but they still have state.

      Consider: diff [...] | sed [...] | patch [...]

      If you're not careful to consider the changes that sed makes to the datastream, patch will wind up in a bad state, and cause wildly unpredictable behavior.

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    42. Re:Like libraries? by Anonymous Coward · · Score: 0

      It is a domain specific declarative language that lends itself to good optimization.

  2. Isn't this just... programming? by Anonymous Coward · · Score: 0

    Coming from a fairly basic understanding of programming (I'm happy pushing bits around microcontrollers, but Object Oriented design makes my brain dribble out of my ears), isn't this how programs are supposed to be written? What's the big deal?

    1. Re:Isn't this just... programming? by phantomfive · · Score: 3, Interesting

      The two main problems of software engineering are getting data and control from where it is, to where it needs to be. Flow based programming focuses on those two aspects.

      When you look at a C or Java program, when you're looking through the source code, the main thing that is presented to your eyes is the actual algorithm, the code that is doing the work. Sometimes you have to do a lot of effort to even figure out where a program starts. A good class diagram can capture a lot of that, but usually there is still a lot missing in class diagrams. So you might say those languages are algorithm based or something.

      With flow based programming, when you look at a program, the first thing, and most obvious thing you see is the connections between modules; the way control and data are passed around the system is obvious. But you have to do extra work if you want to look inside the 'black box' modules that are actually doing the work.

      With apologies to Dijkstra, one might say that Flow Based programming is an exceptionally bad idea which could have only originated at IBM (in my mind the division of labor between those who are making the 'black boxes' and those who are connecting them together is extremely difficult to get right), but the idea of making the connections between modules more obvious is definitely a good one. I hate looking at new codebases sometimes for exactly the reason that it's hard to see how the modules are put together.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Isn't this just... programming? by fuzzyfuzzyfungus · · Score: 2

      Arguably, 'Flow Based Programming' (at least back when it was called 'Functional Programming'), arises out of an elegant impulse, just look at what the concept of a 'Function' can do for you in so very many fields of mathematics; but seems painfully likely to fall over in a screaming heap in the face of a real-world programming team, under real-world pressure.

    3. Re:Isn't this just... programming? by K.+S.+Kyosuke · · Score: 1

      With apologies to Dijkstra, one might say that Flow Based programming is an exceptionally bad idea which could have only originated at IBM

      Hahaha. :-) If you've read EWD-37 you know that you never have to apologize to Dijkstra for lambasting IBM. ;-)

      --
      Ezekiel 23:20
    4. Re:Isn't this just... programming? by LeadSongDog · · Score: 1
      Everyone remembers Dijkstra's "GOTO considered harmful" http://xkcd.com/292/ and some recall Ince's "Arrays and pointers considered harmful" but few recollect Dijkstra's question:

      Are you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?

      When someone writes the software that will operate an automobile, it's best to separate the steering and braking functions from the audio equalizer. The benefits of modularity are not specific to data, control flow, testability, costing or any other single domain. If you bring me code that won't be self-explanatory on a single page, I'm wondering why I shouldn't be looking for your replacement.

      --
      Oh, I'm sorry sir, I thought you were referring to me, Mr. Wensleydale.
    5. Re:Isn't this just... programming? by phantomfive · · Score: 1

      I feel no motivation to use fbp, but I do think it's important to remember that the innovation isn't the functional nature, it's the easiness of seeing the links between objects, the overall structure. That's an idea worth looking at more deeply.

      --
      "First they came for the slanderers and i said nothing."
    6. Re:Isn't this just... programming? by K.+S.+Kyosuke · · Score: 1

      but few recollect Dijkstra's question

      That's actually one of my favorite Dijkstra quotes.

      --
      Ezekiel 23:20
  3. "easier for non-programmers to build applications" by Black+Parrot · · Score: 4, Insightful

    Gee, never heard that one before.
    What the people pushing these ideas don't seem to know is that it's not the tools, it's the way of thinking about a problem. I once worked at a place where we made a manager a tool that would let him create his own reports, and he immediately started adding up all flavors of apples and oranges (e.g., dollars of this and pounds of that). Then he wanted the small IT staff to help him make sense out of his reports.

    --
    Sheesh, evil *and* a jerk. -- Jade
  4. Engine vs. Library by Anonymous Coward · · Score: 0

    When you mix the two and don't tell the application programmer then you get Symbian.

  5. I use it by surfdaddy · · Score: 1

    I use flow-based programming every morning, usually the first thing I do when I wake up.

    1. Re:I use it by Anonymous Coward · · Score: 0

      Does it taste the way coffee should?

    2. Re:I use it by Anonymous Coward · · Score: 0

      I also have a Kuerig!!

  6. Simple Answer. by Anonymous Coward · · Score: 0

    No.

  7. another Soulskill article....don't bother reading by Anonymous Coward · · Score: 1

    Flow as in flow chart programming. Think UML diagrams with prebuilt libraries. Known as visual programming if you're old enough to remember the hype the last time... or was that the last last time this came up? It hasn't taken off in 30 plus years... probably a reason for that.

  8. No. by Gravis+Zero · · Score: 2

    it wasn't a good idea to start with and it hasn't gotten any better since then.

    --
    Anons need not reply. Questions end with a question mark.
    1. Re:No. by Rob+Riggs · · Score: 3, Informative

      I disagree. I have been playing around lately with GNU Radio Companion, designing SDR (software-defined radio) tools using a cheap DVB dongle. The transformations of the signal into a human-digestible format is made very easy. I am a software engineer -- I have written a lot of code. But there is a certain class of problems that lend itself to flow-based programming. GRC is one. And ETL tools are another. That is not to say that one does not, from time to time, have to write one's own code block. I have done that for GRC and for some ETL tools. But for 99% of what I have needed, a simple flow graph was all that was required.

      --
      the growth in cynicism and rebellion has not been without cause
    2. Re:No. by Anonymous Coward · · Score: 0

      I dream every day, when I will be able to work with etl tool that is not point+click.
      Point+Click is great to some level, but it also make copy-paste not possible.
      Without ability to copy/cut/paste, breaking problem into simpler pieces is hard.

  9. It's just... by Anonymous Coward · · Score: 1

    scripting, in sh.

    1. Re:It's just... by TeXMaster · · Score: 1

      Which, on topic, is often significantly based on FBP. The “UNIX way” for command-line programs is essentially FBP.

      --
      "I'm never quite so stupid as when I'm being smart" (Linus van Pelt)
  10. Has Flow-Based Programming's Time Arrived? by Anonymous Coward · · Score: 1, Insightful

    See Betteridge's law.

    1. Re:Has Flow-Based Programming's Time Arrived? by Anonymous Coward · · Score: 0

      See Betteridge's law.

      No, Betteridge doesn't even approach a 90% hit ratio.
      You can only apply it if you already know the answer.

    2. Re:Has Flow-Based Programming's Time Arrived? by bukharin · · Score: 1

      See Betteridge's law.

      No, Betteridge doesn't even approach a 90% hit ratio.
      You can only apply it if you already know the answer.

      I very much doubt this. Citation please.

  11. National Instruments LabView by KarlH420 · · Score: 4, Insightful

    NI LabView has had flow based visual programming for more than a decade. The nice thing is make parallel flows to your data, and it's multi-threaded.. It makes an easy way to visualize that something is run in parallel.

    1. Re:National Instruments LabView by Anonymous Coward · · Score: 0

      NI LabView has had flow based visual programming for more than a decade. The nice thing is make parallel flows to your data, and it's multi-threaded.. It makes an easy way to visualize that something is run in parallel.

      It's just horribly implemented.

    2. Re:National Instruments LabView by Eyeballs · · Score: 1

      Actually, LabView has been in development for 30 years (they started to build it in 1983 and released the first version in 1986).

    3. Re:National Instruments LabView by gtall · · Score: 1

      So did Prograph, now morphed into semi-comatose Marten. It is an object-oriented data -flow language. I quite liked it. I don't know if it makes programming easier or programs easier to understand, but had a very credible view of how to build apps.

    4. Re:National Instruments LabView by Anonymous Coward · · Score: 0

      Except when it produces horrible race conditions, requiring you to force it to be sequential anyway. I've lost count of the number of bugs in control software written in LabView that were fixed by adding delays to steps through trial and error to get it to actually do things at the same time instead of a random order, or sometimes to get it to not "optimize away" a bit toggle, both when using it to program a PC and FPGA boards. Kind of annoying when using a platform that should do things in parallel but parallel turns out to mean "sequential, but in a random order that may change anytime you modify and recompile the program."

    5. Re:National Instruments LabView by r2kordmaa · · Score: 2

      Labview is meant for a very specific environment and set of problems - what the name says, that is lab techs who are not really programmers setting up test and measurement setups. Its a right tool for that, and works pretty well for these kinds on problems in that kind of environment. Use it for anything else at your own risk. Remember to always have the right tool for the right job.

    6. Re:National Instruments LabView by Anonymous Coward · · Score: 0

      I agree. I interviewed for a job that sounds great in every way except that they expect me to do stuff in LabView. Sigh.

    7. Re:National Instruments LabView by Anonymous Coward · · Score: 0

      Except when it produces horrible race conditions, requiring you to force it to be sequential anyway. I've lost count of the number of bugs in control software written in LabView that were fixed by adding delays to steps through trial and error to get it to actually do things at the same time instead of a random order, or sometimes to get it to not "optimize away" a bit toggle, both when using it to program a PC and FPGA boards.

      So you're a shitty labview programmer.

    8. Re:National Instruments LabView by Anonymous Coward · · Score: 0

      And there are other flow-based systems that significantly pre-date LabView. For one, the flow-based system IBM's Morrison developed for a Canadian bank decades ago that's is still in use.

      And another, lesser known (but perhaps more relevant in today's world) implementation of a similar idea from the middle 1980's, and was explained in the the not-as-famous-as-it-ought-to-be paper, The UNIX Shell as a Fourth Generation Language. (FWIW, *every* Unix/Linux programmer or power user should be very familiar with this paper and Mike Gancarz' "Unix Philosophy".)

      Interestingly, the idea in the paper (build database and data manipulation operators as fast filters that you string together with pipes to form a flow-based system) has been implemented similarly several times: the original /rdb implementation by RSW Software (rdb.com), several other variations (called rdb, Rdb, RDB, etc.), Starbase (which, as it's aimed at astronomers, includes some interesting ephemerides filters for tables), and a more modern implementation, NoSQL (yep, that's its *name*, and it had it years before today's trendy NoSQL dbs...)

      These systems generally use flat text files for tables, which means your app benefits from any filesystem improvements (they scream on a RAMfs, or a layered FS like unionfs or aufs with a RAM front-end), and backup, version control, and ETL are made orders of magnitude easier than usual. This idea on something like Ousterhout's new RAMcloud would be flat amazing...

  12. Easier by Metabolife · · Score: 1

    I'll go against the push button responses on here and say that it definitely might be the future. As systems become complex enough that we need UML diagrams to visualize what's happening, this is like taking the UML and actually turning it into code. It gets really interesting when you're capable of making your own flows out of existing flows to simplify your task. Why can't it complement code and not replace it?

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

      If UML is needed for users to understand how a system presents itself, it is already fucked.

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

      Most UML diagrams are as indecipherable as the programs that are created with them. Or are you being facetious? I really hope you're being facetious. Otherwise...

    3. Re:Easier by AuMatar · · Score: 4, Insightful

      Welcome to the late 90s. Out here 15 years later, nobody uses UML. The idea of UML as code is completely dead, the corpse was staked, burned, and scattered to the four winds. It never worked. The only thing that's left of it is class diagrams, which people were doing 20 years before UML existed (if not longer).

      --
      I still have more fans than freaks. WTF is wrong with you people?
    4. Re: Easier by Anonymous Coward · · Score: 1

      Visual programming models have all failed. Mainly because real systems are so much more complex than any one diagram van express. Why not break down the problem and create multiple diagrams, one to solve each problem? Well there you have it, that is exactly what programmers do. Once you have identified the smaller problems it is a question of which approach is more efficient: type code into an editor or draw lines on a diagram tool. If experience is of any value the editor always wins, especially because getting the basic flow of any application to production quality code takes adding stuff like error handling, both of which are triaval in an editor but extremly annoying in a visual tool).

    5. Re:Easier by Anonymous Coward · · Score: 0

      Pretty much like JSP, completely useless for anything that isn't a textbook example.

      The only method I have seen work well to describe things are flowcharts. Usable both for describing machine sequences and for instructing humans.

    6. Re:Easier by piripiri · · Score: 1

      The only thing that's left of it is class diagrams

      You must not work on complex projects then. The other diagrams (sequence, state, component, ...) are quite useful!

    7. Re: Easier by Anonymous Coward · · Score: 0

      ...much more complex than any one diagram van express. Why not break down the problem and create multiple diagrams, one to solve each problem? Well there you have it,...

      So if the hippies had only chained together a series of these instead of using them discretely, our world might have been a much better place?

    8. Re:Easier by AuMatar · · Score: 1

      Oh, I do. But while they may use a few other types of diagrams, nobody uses UML to draw them. Especially not state diagrams- they got those completely wrong, and completely different from how existing disciplines like EE do them.

      (For that matter most class diagrams don't use UML either- if you aren't going to be nitpickingly formal it adds nothing. The only time you'll see it is when its automatically generated).

      --
      I still have more fans than freaks. WTF is wrong with you people?
    9. Re:Easier by Anonymous Coward · · Score: 0

      Anonymous to protect my employer (and me).

      I maintained the millions of lines of code used to edit UML models and diagrams, in six years I saw UML used as a tool in the development of UML exactly twice.

      Do you have any idea how many diagrams it would take to represent a million lines of code?

      I am now clearly biased, but my estimations is that using UML as a central part of your software development process basically doubles the time required to do any task.

      But you do get pretty diagrams.

    10. Re:Easier by psithurism · · Score: 1

      nobody uses UML. The idea of UML as code is completely dead

      Nobody in your office. We use UML quite a bit around my office, though only recently did we begin to use Model Driven Development with auto-generated code and yes, it is still usually faster to let the developers implement anything that is slightly difficult to express in UML (or whatever modeling language a particular tool might use, which is SysML for my current project).

      Model Driven Development is the buzzword used around my company and it is becoming more and more feasible to allow it to replace larger portions of projects than before. Since our contractors can, to some extent, understand the diagrams, and the designers actually wrote the diagrams, the closer we can get the code to follow the models, even in cases that seem undesirable, the better we are able to satisfy requirements and deliver what was requested (I've gotten in trouble for fixing bugs that turned out to be required to occur based on customer requirements). Designers and customers are famous for demanding that one inconsequential line be moved somewhere else, which results in half a system to be rewritten as a result. If most of the code was automatically generated, then this can save weeks of really tedious development work.

      The only thing that's left of it is class diagrams, which people were doing 20 years before UML existed (if not longer).

      You are correct, class diagrams are the most useful part, but it is important that diagrams of any sort are done under UML or some other specification. If you are contracting me and hand me a model from some custom, in-house design language, then the first half of the work is going to be teaching me how to understand it, and the second half of the work is going to be arguing about what you clearly meant it to say even though your custom modeling language specification says to do the opposite.

      And if you are competing for a contract with a bidder that has a model in UML with state charts and half their code already written by some tool, while all you have a custom class diagram, good luck.

      I suspect we work at opposite ends of the industry. UML may be dead on your end, but over here, in my area of mostly US defense contracting, it is flourishing.

  13. No by Anonymous Coward · · Score: 0

    Because it's not a novel concept, and real programmers have been doing this long before some kid thought it wasn't a thing and started calling it FBP.

    1. Re:No by Bengie · · Score: 1

      I only recently found out that I've been doing FBP, mostly. I naturally gravitated towards it as it makes multithreading relatively easy.

  14. Like labview? by hooiberg · · Score: 1

    I have been tryign to programming in Labview, in which you literally string components together. If you want to want to make anything even a bit more advanced than the stuff in any tutorial, it becomes a mess. And more important: you will still need the same thought patterns to get your stuff to work. It would be just like learning to type in Japanese. Everything looks completely different, but it still does the same.

    1. Re:Like labview? by dbIII · · Score: 2

      Done that too - and also programmed an analog machine with patch cables (the inspiration for labview IMHO). That taught me that it's a bad idea to go anywhere near the patch cables without the equivalent of a normal script in the first place. You just end up with a tangle that may be able to do done in a simpler or better way but you just cannot see how in that representation.
      My last labview program had lots of lines going underneath other ones which really defeated the entire purpose of such a simple representation. If it's going to work well it has to be modular enough that it's going to look simple no matter how you represent it.

  15. Got news for ya by Sulik · · Score: 0

    Your fancy FBC compiler will be written in C[++], with its primary purpose being that folks who suck at programming also get to do some programming...

    --
    Help! I am a self-aware entity trapped in an abstract function!
    1. Re:Got news for ya by Anonymous Coward · · Score: 0

      No true Scotsman....

      The compiler could be written in FBP. It sounds like you're jealous that "ordinary" people will be able to do whatever you can do, making your skillset obsolete. Sorry buddy, the future is coming.

    2. Re:Got news for ya by Dr_Barnowl · · Score: 0

      Nice troll :-)

      Most people can't program

      Up to 60% of a self-selecting group (people who chose to do computer science at University)... can't program. I shudder to think what the rate in the general population is. Well, I don't shudder. Because it keeps me in a job.

    3. Re:Got news for ya by Anonymous Coward · · Score: 1

      Well, I don't shudder. Because it keeps me in a job.

      They sure don't employ you for your punctuation use.

  16. Re:"easier for non-programmers to build applicatio by Anonymous Coward · · Score: 0

    And before long, the whole company descends into chaos. Can we please keep non-programmers AWAY from trying to cobble together automated systems?
    While we're at it, can management please be made to bother to consult the development department BEFORE making technical decisions on things such as data structures, key formats etc?

  17. non-programmers do not program? by Anonymous Coward · · Score: 0

    so what is the point?

  18. Java Streams by HRbnjR · · Score: 1

    I don't know if this is the same concept as the new Streams API in Java 1.8, but if you are a Java guy, I think they are *really* cool: http://download.java.net/jdk8/docs/api/java/util/stream/Stream.html

    1. Re:Java Streams by viperidaenz · · Score: 1

      That's functional programming, not flow programming...

  19. The problem is the transformations don't exist by Todd+Knarr · · Score: 5, Insightful

    The basic problem is that, while it sounds great in theory, in practice the transformations you want don't exist. If they did, you'd have software doing the job already and you wouldn't need to create it. Your business isn't going to go very far just doing the same thing everybody else is doing, is it? You need to be doing something they aren't. Which means, in this context, you need transformations that don't already exist (either because they haven't been written yet (ideally) or because the people who wrote them are keeping them confidential to keep you from copying what their business is doing (less than ideal)). So on top of your FBP team stringing components together, you're still going to need that expensive conventional development team to write the components for the FBP team to string together. You haven't saved much, in fact it's probably costing you more than just having the conventional dev team.

    Plus, stringing components together isn't quite as simple as it sounds. Real-world systems usually depend on interaction and complex relationships between otherwise simple components. Keeping track of the synchronization between all those parts and keeping everything coordinated is usually the hard part. For instance, when creating an application to set up appointments the part where you take a set of existing appointment slots (some occupied, some free) and a set of one or more slots the customer would like ordered by preference and determine the best requested slot to put them in is easy. Picking up the current set of slots, putting them up on a Web page in a sensible way, letting the user select what ones work for them and set the order of preference, sending that information back to the server and, across this whole process, making sure that either nobody could alter the assigned appointments between the time you picked them up to display and the time the customer hit Submit and you started to sort out the assignment, that's nowhere near as simple. Doing this in a modern system with multiple servers where the submission may not go back to the server that handled the initial request, when you've got thousands of customers and hundreds of your users making, changing and cancelling appointments at the same time, ... can we say "highly non-trivial"? And it really doesn't fit the FBP model at all.

    Even where things fit the model, it's rarely as simple as "just string them together". I work with software that fits that model. Well, it did. Once. Long ago. And then the business people said "Oh, but customer A wants it do to some other thing if it's a transaction for them.". Followed by "Well, we want to do X, unless C applies in which case we want to do Y.". "Oh, unless M was specified for the account, in which case do X even when C applies except where X set V to 7 we need it set to 14.". Lather rinse repeat for 10 years and the quick one-line summary version ran to 5 pages single-spaced. Until that is we tried to print it out and found things were nested so deep some lines were starting past the right-hand edge of standard letter paper, so it's more like 10 pages, legal-sized, in landscape mode.

    1. Re:The problem is the transformations don't exist by Noughmad · · Score: 1

      The solution is to allow stringing together existing components, as well as a good API for creating additional components. This way, you could tell your 'real' programmers "I need a module that calculates FFT, but changes some parameters depending on this other output", and they would write in in a 'real' language and export the interface to your 'toy' language.

      Many great programming languages are great because they're simple and it's easy to create new modules for them. A stellar example is Python with modules such as NumPy and SciPy. The declarative QML/QtQuick is also very simple to extend, and is a joy to program in, although it's not used for data transformations AFAIK. Yes, there are currently still languages where you have to write code instead of dragging and dropping. However, I could see a system using a similar interface for custom modules which would be connected with a graphical interface.

      --
      PlusFive Slashdot reader for Android. Can post comments.
    2. Re:The problem is the transformations don't exist by beaverdownunder · · Score: 2

      The problem is proponents of flow-based programming propose that non-technical people will be able to create world-facing production applications such as web-apps and mobile applications, which although theoretically possible is completely impractical. ...and someone in the business will always want customisation anyhow.

    3. Re: The problem is the transformations don't exist by Anonymous Coward · · Score: 0

      Yeah, except non programmers are notoriously bad at identifying what pieces are missing. So they will end up shouting at their devs for delivering the wrong pieces, and would they please just solve the f**ing problem?! Thatâ(TM)s when the dogma - FBP in this instance - starts to become a problem rather than a solution. Been there done that.

    4. Re:The problem is the transformations don't exist by Anonymous Coward · · Score: 0

      Your business isn't going to go very far just doing the same thing everybody else is doing, is it? You need to be doing something they aren't.

      utter hogwash. Sorry I do not mean to be mean (ok maybe a little :) ). But, anyway *many* business processes are not unique to your scope of work. If I followed your thought process to its logical conclusion there would be 1 gas station in the united states. However, there are quite a large number of them. They compete on many factors process rarely comes into it. Most of the pumps are made by 2-3 companies. The gas is actually all smash together into several pipelines and you take out what you put in/bought. You can see many 'mom and pop' shops changing their brands out. Yet the station stays exactly the same other than the branding.

      Why did I pick gas stations (well close to a car analogy :) ). But it shows what similar businesses do compete on. Price, location, value add. They very rarely compete on process. They use process to lower marginal cost. However, once one starts doing something the rest will quickly follow as the people in that industry move from one to another with relative ease. Take Amazon for example. They in effect have the same managment chain as walmart they cut out a middle man (large sprawling properties to maintain and stock).

      Unless you are in a 100% monopoly position and the only company that makes something. Your process will probably resemble in many ways your competitors. If someone comes in with a new process that revolutionizes they way things are done you will probably match it fairly quickly or they will put you out of business. Take for example Dell. They went from a mom and pop shop to a powerhouse because they came up with a good process. Which everyone in the industry quickly followed. They all now have a very similar process flow.

      Now maybe your point is you can gain first mover advantage with process. You can. But that is not always true. Also matching someone elses process is not always best either especially if you get it wrong.

      You are describing a NP problem in your rant. Those usually do not model well in non side effect programming. However decomposing your work into simpler steps is usually a good thing to do. When in doubt abstract it. Usually you get some cool things you can do with your model then that you couldnt do before.

    5. Re:The problem is the transformations don't exist by camperdave · · Score: 1

      The basic problem is that, while it sounds great in theory, in practice the transformations you want don't exist. If they did, you'd have software doing the job already and you wouldn't need to create it....

      Plus, stringing components together isn't quite as simple as it sounds. ... can we say "highly non-trivial"? And it really doesn't fit the FBP model at all.

      Even where things fit the model, it's rarely as simple as "just string them together". I work with software that fits that model. Well, it did. Once. Long ago. And then the business people said "Oh, but customer A wants it do to some other thing if it's a transaction for them.". Followed by "Well, we want to do X, unless C applies in which case we want to do Y."

      It's Hypercards and spreadsheet macros all over again. You get some gung ho, zeal without knowledge type in there and suddenly your business is at the mercy of an undecipherable hash of spaghetti code.

      --
      When our name is on the back of your car, we're behind you all the way!
    6. Re:The problem is the transformations don't exist by Anonymous Coward · · Score: 0

      It more or less depends on the type system that the underlying programming language uses. A strongly typed language like Haskell could easily be represented by a graphical flow based form, essentially because the Haskell types form a cartesian closed monoidal category, those have a well developed string diagram language used in mathematics.

  20. Behavior Engineering + Flow-based programming by thatkid_2002 · · Score: 2

    I think where this would be interesting is using Behavior Engineering (not UML!) to debug the design (and requirements) and then have automatically generated skeleton loaded into some sort of Flow-based programming system. If you're unfamiliar with BE (it's not really taught outside Griffith University) then you can have a look at http://en.wikipedia.org/wiki/Behavior_Trees

    1. Re:Behavior Engineering + Flow-based programming by Anonymous Coward · · Score: 0

      I think where this would be interesting is using Behavior Engineering (not UML!) to debug the design (and requirements) and then have automatically generated skeleton loaded into some sort of Flow-based programming system.
      If you're unfamiliar with BE (it's not really taught outside Griffith University) then you can have a look at http://en.wikipedia.org/wiki/Behavior_Trees

      Complete requirements before coding? Hell, if you're already asking for things that don't exist, at least ask for a pony as well.

    2. Re:Behavior Engineering + Flow-based programming by hibiki_r · · Score: 1

      If there is one constant to programming, it is that requirements change. So any system that generates skeletons that then you have to work with will lead to utter failure, as you'll quickly reach a point where you can't generate anymore.

      Remember the CASE tool craze, with Rational Rose and the like? It's pretty related to what you describe, but nothing good ever came out of it.

    3. Re:Behavior Engineering + Flow-based programming by thatkid_2002 · · Score: 1

      You are correct on all counts.

    4. Re:Behavior Engineering + Flow-based programming by Xest · · Score: 1

      I can't help but think most people in the discussion for this article are just re-imagining Windows Workflow Foundation.

  21. Not new by Animats · · Score: 2

    It may or may not be a good idea, but it's not new. The article is not very good, either. It's all over the place, from punched cards to XML.

    Data flow programming has been tried many times. It's used heavily in GPUs, where pipelines are the only way to get work done. So there's reasonably good understanding today of what can and can't be done by data flow methods.

    If you like "flow-based programming", one easy way to do it is to write programs in single-assignment style. Assign to each variable only once, and make it "const" or read-only if your language supports it. This makes your program a directed acyclic graph. Single assignment is a lot like functional programming, but values have names and the nesting depth of calls doesn't get so deep. It's also possible to use the same result as input to more than one function, which is hard to do in pure functional programming (That's the difference between a directed acyclic graph and a tree.)

    The use of pure functions makes for cleaner programs, but more data copying. Data copying isn't necessarily bad today. It's cheap to copy data you just used or created, because it's in the cache. Modern CPUs have wide buses, are good at copying, and can probably do the copy in parallel with something else. Don't avoid copying data to "improve performance" unless the data item is large.

    The place where this all comes unglued is when the program's goal is to affect something, not grind data down to a "result". Trying to write a GUI in a functional style is tough. (I once wrote a GUI in pure Prolog. Very bad idea.)

    1. Re:Not new by dkf · · Score: 2

      The use of pure functions makes for cleaner programs, but more data copying. Data copying isn't necessarily bad today. It's cheap to copy data you just used or created, because it's in the cache. Modern CPUs have wide buses, are good at copying, and can probably do the copy in parallel with something else. Don't avoid copying data to "improve performance" unless the data item is large.

      If you treat your data structures as also obeying Single Static Assignment rules, you can share them widely by reference. That reduces the number of copies. With a sufficiently smart compiler/reference management engine, you can even go to using copy-on-write-to-shared, so that operations on an unshared value that is about to be replaced can be done inline. That gets the number of copies down even further, to nearly the level that you have with classic shared-writable-state programming, except without any of that mysterious changing-behind-your-back behaviour.

      SSA rules also make type analysis much easier, in turn making compilation and optimisation easier...

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    2. Re:Not new by Anonymous Coward · · Score: 0

      in turn making compilation and optimisation easier...
        Isn't that the opposite of what we want? I would instead go for a model where the brains are in the computer and the person just tells the computer what he wants, not how to get there. Computer are good at processing, so make them process.

    3. Re:Not new by swillden · · Score: 1

      With a sufficiently smart compiler/reference management engine, you can even go to using copy-on-write-to-shared, so that operations on an unshared value that is about to be replaced can be done inline. That gets the number of copies down even further, to nearly the level that you have with classic shared-writable-state programming, except without any of that mysterious changing-behind-your-back behaviour.

      The best way to get the smart compiler/reference management engine, of course, is to use a functional programming language rather than try to emulate functional style in an imperative language.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    4. Re:Not new by Anonymous Coward · · Score: 0

      It's also possible to use the same result as input to more than one function, which is hard to do in pure functional programming

      No it isn't. All you need to do is give the result a name, and then you can use it as many times as you like. Pure functional programming means variables are immutable (ie they're variables in the mathematical sense), not that you can't assign them.

    5. Re:Not new by Anonymous Coward · · Score: 0

      Although it's possible to create GUI based application using FBP.

      Here are some samples:

      http://ankhorservices.com/FEMSampleViewer
      http://ankhorservices.com/upload/LogFilteringARE
      http://ankhorservices.com/SmartMeterTest
      http://ankhorservices.com/HealthcareDashboard
      http://ankhorservices.com/EarthQuakesGeoData3D

      The SmartMeterTest is based on ~12 million records.

      These are FlowSheets which are executed on a ANKHOR HTTPServer. The HTTP Server renders the running FlowSheet dashboards into HTML pages. You create them using the ANKHOR FlowSheet desktop application.

      And yes, writing complex FBP apps needs disciplined developers, otherwise you are getting lost in your graphs.

  22. The 1980's called by maroberts · · Score: 1

    We can all go back to programming in C/Pascal/Fortran and forget all this OO crap now, can we?

    --

    Donte Alistair Anderson Roberts - hi son!
    Karma: Chameleon

    1. Re:The 1980's called by phantomfive · · Score: 1

      Structured programming is the new black!

      --
      "First they came for the slanderers and i said nothing."
  23. re-orient by l3v1 · · Score: 1

    "Many programmers have to re-orient themselves from orthodox object-oriented development, and shift to a world in which data structures are transparent but the behavior â" the transformation â" is not."

    No, they most absolutely do not. Ideas come and go, and if programmers would 're-orient' themselves each time, they would be spinning endlessly and not get any work done.

    As always, choose the proper approach, the proper tools, the proper environment, the proper language, and do the job. Let the idiots 're-orient' themselves however often they want to.

    --
    I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
  24. A.k.a shell scripts by iamacat · · Score: 4, Interesting

    grep EVENT log*.txt | sort | uniq | awk '{print $2}' | ssh reportserver "gzip > results.txt.gz"

    Flow based, side effect free, distributed computing on one line. There is a reason shell scripts refuse to die in the face of python, perl or anything else.

    1. Re:A.k.a shell scripts by Anonymous Coward · · Score: 0

      I really wouldn't mind a nicer syntax, though. Can't we have pipes in a modern language?

    2. Re: A.k.a shell scripts by Anonymous Coward · · Score: 0

      Except if results.txt.gz already existed in which case you have just created a really bad side effect.

    3. Re:A.k.a shell scripts by Anonymous Coward · · Score: 0

      grep EVENT log*.txt | sort | uniq | awk '{print $2}' | ssh reportserver "gzip > results.txt.gz"

      Flow based, side effect free, distributed computing on one line. There is a reason shell scripts refuse to die in the face of python, perl or anything else.

      I implemented something similar to this for an exception reporting system to notify the security administration team by email that a staff member had left the organization and their record in the PKI system needed to be archived. The script ran weekly. A point-and-click co-worker asked why I was using a Unix command shell instead of Microsoft Notepad and then copying it to the server using PuTTY/WinSCP, why I was writing a script and most mind-boggling he asked why didn't I just use Microsoft Visual Basic or a Microsoft Excel spreadsheet. I told the co-worker to go back to his cubicle and play with their crayons.

    4. Re: A.k.a shell scripts by Anonymous Coward · · Score: 0

      resuts.2013-10-18T1016.txt.gz

    5. Re:A.k.a shell scripts by Anonymous Coward · · Score: 0

      You scoundrel! You can do pipes in Perl! Tsk, tsk, tsk!

    6. Re:A.k.a shell scripts by Anonymous Coward · · Score: 0

      Dude - that single line is just one big side effect! It's flow based I'll give you that, also a neat one-liner. But to call it side-effect-free, distributed computing will give the functional and mapreduce communities (respectively) a bit of a chuckle...

    7. Re:A.k.a shell scripts by matria · · Score: 2
    8. Re:A.k.a shell scripts by bill_mcgonigle · · Score: 1

      You scoundrel! You can do pipes in Perl! Tsk, tsk, tsk!

      it's not too bad if you don't care about getting the result back. I recently implemented an actual pipe-based system in perl where the results did need to be bidirectional, with open3, and ... well, it ain't pretty.

      It's a real shame perl doesn't have the capability integrated into the core language with nice syntactic sugar.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    9. Re: A.k.a shell scripts by sootman · · Score: 1

      ... results.`date +%s`.txt

      Or do something to generate a GUID if you're concerned that multiple people will ship reports to this box in the same second.

      --
      Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
    10. Re: A.k.a shell scripts by Anonymous Coward · · Score: 0

      Well, this is /., so someone has to play the pedant. So a few very minor nitpicks...

      1. it's better to use fgrep when searching for a fixed string ("EVENT") rather than a non-trivial regex; this shouldn't matter for performance, but does help maintainability.
      2. awk is a *wonderful* tool, but some implementations are fairly heavy (in memory/startup time). In this case, it's probably replaceable with cut (e.g. "cut -f2" if data has tabs, or "cut -d' ' -f2" if spaces), but these aren't semantically identical, and if your data really has unpredictable whitespace, awk may be needed.
      3. if awk is needed, consider implementing some of the other stuff in awk, rather than spawning an extra process. In this case, the uniq (and grep) is the only thing readily absorbable; reordering the grep after the sort doesn't change the results, and makes it absorbable as well, but sorting the extra data likely costs more than you save, so I'd probably leave the whole thing as written unless you know this will run frequently enough to matter.
      4. depends on relative performance of network, remote machine, and local machine, but it may make sense to move gzip to the local pipeline so less data gets sent over the network.
  25. Lame Dichotomy by Anonymous Coward · · Score: 0

    “There’s two roles: There’s the person building componentry, who has to have experience in a particular program area, and there’s the person who puts them together,” explains Morrison. “And it’s two different skills.”

    Nope. There's the person who can do both, and there's the person who's only smart enough to draw lines.

  26. N00bs by Anonymous Coward · · Score: 0

    I still code in PET Basic.

    1. Re:N00bs by phantomfive · · Score: 1

      Heh......when I switched from C64 Basic to a more modern programming language that actually had else statements, I thought they were so lame. "Who would use those?" I asked, "Who would use them when GOTO statements work perfectly well?"

      True story.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:N00bs by clickclickdrone · · Score: 1

      Thing is, ultimately, those GOTO's are still there, they're just hidden under a more acceptable paradigm.

      --
      I want a list of atrocities done in your name - Recoil
  27. Mathlab by Anonymous Coward · · Score: 0

    Does this for mathematicians. That's why I always hated working with it, I din't know most of the functions in it and I wanted control over my program.

  28. Talend already used it successfully by WetCat · · Score: 2, Informative

    Talend.com offers Talend Open Studio - a great free software product for flow-based visual programming, based on Eclipse.
    I used it for projects for 5 years and was amazed, how easy to make complex data transformation by dragging and dropping components and links.
    A result is a java (or Perl) program, which can run standalone.
    The program is a visual data flow, easy to modify and understand even for non-programmers.
    I really appreciate Talend team effort and recommend this product for all, who need data transformations.

    1. Re:Talend already used it successfully by Anonymous Coward · · Score: 0

      I agree... I looked at Talend a few years back. Nice tool. Unfortunately our company got bought out so that whole project got shuttered.

    2. Re:Talend already used it successfully by Anonymous Coward · · Score: 0

      Talend.com offers Talend Open Studio - a great free software product for flow-based visual programming, based on Eclipse.
      I used it for projects for 5 years and was amazed, how easy to make complex data transformation by dragging and dropping components and links.
      A result is a java (or Perl) program, which can run standalone.
      The program is a visual data flow, easy to modify and understand even for non-programmers.
      I really appreciate Talend team effort and recommend this product for all, who need data transformations.

      I've used your product. It excels in those cases where you have a very nice normalized database, and starts to show it's weaknesses with truly legacy databases, where nothing is normalized, or even sane.

      Then to "fix" the issues, I started looking at your Java generated code. Yes, I can easily disassemble Java byte code, and all I can say is that while your generator might be well designed code, the code it outputs is the biggest pile of struct copying non-object oriented, poorly structured spew I've seen in a long time.

      That's not even touching the consultant we hired to train us, which 1/2 way through the presentation had to be told "we know how to press all the buttons, because we read the online help. Now tell us how to transform X to Y. The simple stuff they did alright, but the hard stuff was, well hard. We realized that, and hired a "guru" Talend consultant to work on our hard stuff. It was really refreshing when he delivered 1/3 of it in the first two weeks, but that was the trivial stuff we could have done in-house. The next 1/3 took four months (and still was failing 20% of our data tests) and the last 1/3 still wasn't delivered nine months into a 3 month contract. You blew your promise of getting it all done on-site, and your dev blew his promise of finishing it up off-site if we extended the contract.

      Your product looks great, but after two months we rewrote everything we did with your product, and the remaining 1/3 of what you didn't manage to do, with an in-house Java framework that we created as part of the emergency exercise to come in on time. Tested, debugged and delivered in two months. It was a death march extraordinaire, but it was easier than getting your tool to understand our data. We will never use your tool again. It is great for non-programmers, but it only really allows easy transformation of data that barely needs transforming. Even then, you become a "Talend flow programmer", to get it to do much beyond the absolute basics, and that flow language isn't one that I'd foist upon anyone. Too many "try it" corner cases, with too many "patches" in the flow to make it robust across all the data going in and out.

  29. Re:"easier for non-programmers to build applicatio by huge · · Score: 2

    That sounds like a Structure Query Language that was developed some years ago to allow business users to query databases. It would free programmers to focus on programming instead of running reports. Looks like it worked pretty well.

    --
    -- Reality checks don't bounce.
  30. "Flow-based programming"? I call it bash scripting by Anonymous Coward · · Score: 0

    We have proven implementations of "flow-based programming" floating around since the 80s.

  31. More importantly by mybeat · · Score: 1

    Can it flow in the cloud?

  32. Re:"easier for non-programmers to build applicatio by theshowmecanuck · · Score: 1

    All hail 4GL

    --
    -- I ignore anonymous replies to my comments and postings.
  33. Not Data Flow Programming by GumphMaster · · Score: 1

    I scanned the summary as "data flow programming" and had flashbacks to university research projects around data flow computing... in the mid-1980's (probably before many of the 'hip' programmers were born). Alas, it was not to be the resurgence of programming in SISAL... just a another programming-by-drawing rehash. Imagine my disappointment.

    --
    Patent litigation: A doctrine of Mutually Assured Destruction... in which everyone seems willing to push the button
  34. Slashdot downtime by YoungManKlaus · · Score: 1

    Can anyone tell me what October 18, 8 pm to Saturday October 19, 1 am (Eastern Time). is supposed to be in UTC so people might actually be able to calculate their local downtime-frame?

    1. Re:Slashdot downtime by Anonymous Coward · · Score: 0

      US Eastern is GMT-05:00.

    2. Re:Slashdot downtime by tepples · · Score: 1

      US Eastern Daylight Time is GMT-0400. Therefore, Slashdot downtime starts at midnight UTC.

  35. Powershell. by Anonymous Coward · · Score: 0

    Since I've progressed beyond 1979, instead of mentioning UNIX and pipes I'll point out that Powershell is especially powerful in this facet of a pipeline/flow.

    Also, Workflow Foundation (WF).

  36. The Code is the Model by Rothron+the+Wise · · Score: 1

    The code is the model. You can't make it much simpler. You can simplify the common things, but this will make the language less general, more domain specific. For programming synthesizers it makes a lot of sense.

    If a function call is represented with two boxes with a line between them, the simplest of applications will be a confusing mess.

    --
    A witty .sig proves nothing
    1. Re:The Code is the Model by Anonymous Coward · · Score: 0

      Parent is/should be +5 Insightful.

      Code as we know it is far more conceptually modular and dare I say it fluid and thus also more forthright and even easier than any labyrinth of boxes.

      Lego as wonderful as it is will always remain Lego, but code can be and almost always is far more than simply code: it doesn't just have syntax it has context and programmers defining and/or expanding that very context is central.

  37. Done. by VortexCortex · · Score: 2

    "Everything Flows"
    -Cyberneticists

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

      "They all float down here"
      -IT

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

      I believe that saying is properly attributed to Herakleitos, in about 500 BC

  38. We already have this. It is called "Unix" by paai · · Score: 2

    As some other people already remarked, on the face of it this looks like the venerable Unix approach of small tools in a script. My point is that the real world outside, that you are trying to capture in a programming language, can be very complicated. For some domains, e.g. logic or arithmetics, the language can be pretty complicated too - see APL, LISP or Prolog.

    But in thirty years of programming (computational linguistiscs), I have found that Unix scripts, awk and plain C covered pretty much 90% of (my) programming needs. If and when necessary I tacked on a larger database system. Of course I tried the new (well, in the nineties they were new) OO systems, but I rapidly got lost in a jungle of libraries and methods and even more documentation. Compare that to the almost ascetic (and aesthetic) clarity of the Unix environment.

    Yes, I feel that Unix still has a lot of mileage in it and intentionally or not, this item and the reactions on it, confirm me in this view

    Paai

    1. Re:We already have this. It is called "Unix" by Anonymous Coward · · Score: 0

      Except UNIX has a single flow control model for those pipelines, has difficulty forking data to two places except in very simple cases (tee), and cannot join to processes together to feed a third. In essence, UNIX has pipes, but this has graphs. But sure, it's an evolution of that basic concept, and a very powerful concept it is.

    2. Re:We already have this. It is called "Unix" by Anonymous Coward · · Score: 0

      (That should be "two" processes, and I guess you can do that in code actually, but standard shell languages don't support it within pipeline specifications.)

    3. Re:We already have this. It is called "Unix" by foobar+bazbot · · Score: 1

      Except UNIX has a single flow control model for those pipelines,

      Yeah.

      has difficulty forking data to two places except in very simple cases (tee)

      Eh, are you forgetting named pipes, aka fifos? because (foo | tee myfifo | bar)& baz <myfifo and more elaborate versions of that theme seem to be able to handle any complex case I can think of in terms of the simple case.

      and cannot join [two] processes together to feed a third.

      I'm not quite sure what you mean by this -- if you mean to merge two outputs into the single input of the third process, this is again simple with fifos. (Of course, each of the first two processes' buffering behavior contributes to the order or chaos resulting -- but if everything is buffering i/o a line at a time, and a line is logically a complete packet, it pretty much works.)

      If, OTOH, you mean to have a process with two separate inputs (e.g. one for a video stream, one for subtitles to be superimposed on it), this is possible in the UNIX model (simply assign file descriptors higher than 2 in the same way stdin, stdout, and stderr are redirected), and at least some ksh derivatives do support redirecting arbitrary file descriptors; however, few if any of the ordinary UNIX utilities do anything of this sort. In part, this is because there are few uses (that I can think of) for this without enhancing the flow control model or allowing data types other than text; in part, it's because stdin, stdout, and stderr work because they are standardized, therefore there's no preexisting uniform mechanism for e.g. a filter with a variadic inputs (in other words, for each such multi-input program, the user would be responsible to learn what file descriptors correspond to what inputs and outputs, what switches (if any) control those assignments, and keep all this info in their head).

      (However, many UNIX utilities do accept multiple filenames as arguments, and these files can in many cases be fifos, so even though it strays from the pure "shell redirects everything" model, you can still do that.)

      In the end, though, the big issue, and the reason you don't see the |tee fifo| and <fifo idiom used very often, much less foo >fifo1& bar >fifo2& baz fifo1 fifo2, is that UNIX is command-line based, and arbitrary graphs are just plain hard to represent well in a single command line. Naming nodes (i.e. FIFOs) and referring to them later by name does yield a mathematically general representation, but it's nowhere near as intuitive to use as the simple anonymous pipes in foo|bar|more, so it's doomed to neglect.

    4. Re:We already have this. It is called "Unix" by foobar+bazbot · · Score: 1

      Oops, should've used preview...
      Last paragraph, take 2:

      In the end, though, the big issue, and the reason you don't see the |tee fifo| and <fifo idiom used very often, much less foo >fifo1& bar >fifo2& baz fifo1 fifo2, is that UNIX is command-line based, and arbitrary graphs are just plain hard to represent well in a single command line. Naming nodes (i.e. FIFOs) and referring to them later by name does yield a mathematically general representation, but it's nowhere near as intuitive to use as the simple anonymous pipes in foo|bar|more, so it's doomed to neglect.

  39. There is no other kind. by Anonymous Coward · · Score: 0

    it wasn't a good idea to start with and it hasn't gotten any better since then.

    Flow-based computation has always been what occurs under the hood, and it's only blind programmers who haven't realized that that's what they're actually doing, and hence they do it poorly.

  40. The Last One by clickclickdrone · · Score: 1

    This sounds awfully like the Last One, a British 'language' from 1981 that used lines of code to pull together pre written blocks then produce the executable:
    http://en.wikipedia.org/wiki/The_Last_One_(software)

    --
    I want a list of atrocities done in your name - Recoil
  41. This is what BPEL and executable BPMN promise by Chrisq · · Score: 1

    This is what BPEL and executable BPMN promise. In practice for the business its "string these together and get a programmer top write a transformation or show you were to obtain a key data element that is missing from the stream" at best, or "try to string these together in an illogical way and complain to the development team that the components don't know what you mean".

  42. Yeah, I could use that. by RobertSlade · · Score: 1

    I have no experience with programming so I could definitely use something like this. Reminds me of an old game my son used to play.

  43. D is for lysdexia by Anonymous Coward · · Score: 0

    Am I the only one who read "Flaw based programming"?

  44. Not this again! by beaverdownunder · · Score: 3, Informative

    This has been tried over, and over again many times over the last 30 years.

    It just plain-old doesn't work. You get inefficient, bloated code at the best of times, and 99% of the time you need some sort of custom function that still requires conventional software development.

    So, no, flow-based programming's time has _NOT_ arrived.

    1. Re:Not this again! by Anonymous Coward · · Score: 0

      Lies! It's a programming model, you're talking products then complaining the products' weaknesses disprove the usefulness of the model. In fact, these kinds of system are in use and are successful in many different domains already, especially in the AV/multimedia/CGI world. Non-programmers are using such systems inside Maya, etc. every day without even caring that they're "programming". You think they need custom functions 99% of the time? That's simply not true. They need them sometimes, sure, but if the infrastructure is flow-based it's easy to provide them as middleware - flow-based programming is an awesome substrate for middleware.

      Meanwhile, from a CS point of view, the power is that they really really do a good job of expressing parallelism. The fact that you have to drop out of this model to write low-level code isn't a weakness, it's a strength. You use standard 60s/70s/80s-era imperative code within a single black box, which is running in a single-threaded compartment. Then you use flow-based when you want to string those pieces together, potentially across multiple cores or even multiple machines. That's formally "Communicating Sequential Processes" (CSP).

      The apparent weaknesses come from shoddy product designs, and PR claiming that no one needs to learn to program any more. That's never going to happen, but if you see past the obvious PR lies you still get the future of programming.

      IMHO, of course :p

    2. Re:Not this again! by Tom · · Score: 2

      Bingo.

      Every time some cretin tries to shoe-horn the entirety of computer programming into one simple paradigm, a ton of other cretins jump up and down hailing him as the new messiah.

      And then, after a couple years worth of CS students have been corrupted with this useless crap and it hits the real world, it turns out that life is a wee bit more complicated.

      --
      Assorted stuff I do sometimes: Lemuria.org
    3. Re:Not this again! by Anonymous Coward · · Score: 1

      These cretins come in one of two basic types - gullible managers / executives who think they can get a free lunch by having non-technical people do technical things, and hucksters who are only too glad to sell the gullible managers and executives a shiny magic app-o-matic where you have your secretary push two or three buttons and turn a crank and out pops an app.

    4. Re:Not this again! by jeffb+(2.718) · · Score: 1

      Amen. I landed a position on a research project developing a graphical programming language almost exactly thirty years ago. It was newer then, but still not really new. People were probably wanting executable flowcharts since at least the 1960s, if not earlier.

      A lot has changed over the last thirty years, but nothing that addresses the fundamental issues with graphical flow-based programming. Sure, some products have enjoyed some success, but it's still a niche approach, destined to remain a niche approach.

  45. What fun! Graphical patch cables! by dbIII · · Score: 2

    I was thinking of that too. LabView looks utterly cool on some sort of brochure or in a movie scene but was a slow way to put together scripts (just like "it's a Unix system, I know this" - with the similarly cool looking but ultimately useless file viewer).

    This idea was obsolete when I did a subject in doing this sort of programming for analog computers (patch cables to amplifiers) in the 1980s. Oddly enough a good way to design analog computers was to optimise the model which started with discrete components into something like a script and then convert that back into a simpler system of discrete components.

  46. Re: "easier for non-programmers to build applicati by blippo · · Score: 2

    A complex problem won't be simpler just because the tool isn't as powerful. All these ideas comes from a fundamental misunderstanding about what it is that actually makes system development hard.

  47. Unix pipe by aralin · · Score: 3, Insightful

    So you mean like unix pipe. Where you have those wonderful transformations like sed, grep, cut, sort, etc ? Youngsters.

    --
    If programs would be read like poetry, most programmers would be Vogons.
    1. Re:Unix pipe by swillden · · Score: 2

      So you mean like unix pipe. Where you have those wonderful transformations like sed, grep, cut, sort, etc ? Youngsters.

      Yes, but with strongly-typed (rather than stringly-typed) data.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    2. Re:Unix pipe by Anonymous Coward · · Score: 0

      So you mean like unix pipe. Where you have those wonderful transformations like sed, grep, cut, sort, etc ? Youngsters.

      Yes, but with strongly-typed (rather than stringly-typed) data.

      I always strongly type my data. It just takes a keyboard that can withstand it. ;-)

    3. Re:Unix pipe by Anonymous Coward · · Score: 1

      Yep, just like the smart people were doing back in the 80's with The UNIX Shell as a 4GL...

      Pipes really are fantastic for this sort of thing, but the poster below is correct that strongly typed data (where those types are relevant to the real world, and the people *using* the data, rather than just to a bunch of propeller-headed programmers) is really important, too....

  48. Re:"easier for non-programmers to build applicatio by Anonymous Coward · · Score: 0

    Er, yes ... the way of thinking about the problem in dataflow programming languages is the whole point. The tools are an aside (and in fact you don't want to be writing a complex vector calculation using black boxes of add and multiply anyway).

  49. FlowVR by Geizh · · Score: 2

    If you're wondering what flow-based programming feels like, I work on an open-source framework called FlowVR.
    It is advertised towards high-performance computing but suits small applications just fine.

  50. Re:"easier for non-programmers to build applicatio by JaredOfEuropa · · Score: 1

    Actually that's a poor example; reporting is an area where this way of programming has worked well, at least in my own experience. In most places I've worked, managers knew bugger all about programming or SQL, but they understood their own data well enough to produce reports themselves in tools like BusinessObjects, even fairly complex reports. In this case, the tool is an enabler for people who already know how to think about the problem.

    --
    If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
  51. pipe by Anonymous Coward · · Score: 0

    I have |

    What else do you need?

  52. Real Problem by prefec2 · · Score: 1

    People are not able to describe their problems and requirements in a conflict free way. You may reduce the amount of technical experience, like how to use J2EE or network communication etc., however, the complexity of software solutions cannot be hidden by a non creative system. Research has tried this, they even tried to use AI, it all cannot help you with the first step. Understand what you want. The second step, transforming requirements to architecture is also a creative task and cannot be mechanized. And the general population is not able to conceptualize problems properly. Look at BPNM models drawn by business people. They mostly do not what the customer wants.

  53. aka functional programming? by Arancaytar · · Score: 2

    functions without side effects

    Lambda calculus predates the invention of the compiler. It's always funny when programmers rediscover stuff and think they've invented something new. :P

    1. Re:aka functional programming? by Anonymous Coward · · Score: 0

      Flow-computing... the Nerf version of functional computing.

    2. Re:aka functional programming? by Anonymous Coward · · Score: 0

      In this case something that was "discovered" by other programmers years ago.

    3. Re:aka functional programming? by Anonymous Coward · · Score: 0

      I also was reading this thinking, "They mean functional programming?"

    4. Re:aka functional programming? by Anonymous Coward · · Score: 0

      Actually not that funny.
      I'm a sad panda because of this :(
      There is lot of knowledge that is trapped in some frame (time/niche) and is reinvented again and again.

  54. Re:"easier for non-programmers to build applicatio by fuzzyfuzzyfungus · · Score: 1

    And before long, the whole company descends into chaos. Can we please keep non-programmers AWAY from trying to cobble together automated systems? While we're at it, can management please be made to bother to consult the development department BEFORE making technical decisions on things such as data structures, key formats etc?

    The ugly trick is that if you want to keep non-programmers away from something, some programmer has to take one for the team and gingerly approach whatever horrible little ad-hoc business logic problem or whatever the non-programmer was trying to solve. If dual-class programmers were in ready supply, it's not like the non-techies would be clamoring for more chances to get their hands dirty.

  55. Re:"easier for non-programmers to build applicatio by Anonymous Coward · · Score: 0

    People who think that anyone should be allowed to program should be forced to read books written by anyone. Writing takes skill. Sure there are languages which might seam easier to write in but that doesn't mean any idiot can even write with a decent book.

  56. Re:"easier for non-programmers to build applicatio by cascadingstylesheet · · Score: 1

    Gee, never heard that one before. What the people pushing these ideas don't seem to know is that it's not the tools, it's the way of thinking about a problem. I once worked at a place where we made a manager a tool that would let him create his own reports, and he immediately started adding up all flavors of apples and oranges (e.g., dollars of this and pounds of that). Then he wanted the small IT staff to help him make sense out of his reports.

    Yep.

    And even if they do get good at using it, now you've got a {whatever} doing "programming" (in a limited clunky "environment/language") instead of {whatever it was they were supposed to be doing}.

    There's a marketing manager in my last job's company doing exactly that (not entirely unrelated to why it is my last job). I'm glad he's having fun playing programmer, but he does even less actual marketing than he was doing before ...

  57. Flow != Flow. by leuk_he · · Score: 1

    The flow what you are describing is a business flow. That is something you must not use this model for. In a business flow you use all kind of side effects you store in a database. don't mix them up because the business process have a flow, that is different from a program flow.

    Using the wrong technique to transform a business flow into a program will get big drama. Because you have so many side effects, you get a lot of states/ global variables you have to test for in each of the sub-processes, soon all hell breaks loose over the number of possible states.

    Beside that, a business is 90% generic, only a small part of it unique. SO only customize that part of your software, the other part might be better of with generic building blocks. But that is a different discusssion after all.

  58. No. by Anonymous Coward · · Score: 0

    http://en.wikipedia.org/wiki/Betteridge's_law_of_headlines

  59. Spreadsheets by kubajz · · Score: 1

    Spreadsheet software such as Excel or Calc are very good examples of flow-based programming, and it seems non-programmers can cope with it. However, we all know how hard it is to get larger-scale projects in Excel to work :)

  60. Please do your homework. FBP proven since 40 years by samuel.lampa · · Score: 1

    You should all do some homework before throwing out all this prejudice. Flow based programming has been successfully used in many implementations ever since it's invention in the 70's at IBM. One Canadian bank has been running (and maintaining) an FBP program continuously for over 40 years!

    You are right that FBP (or something very close) can be found in successful systems such as Unix pipes, LabView and Apple quartz composer. If you read FBP inventor J P Morrisons canonical book on the topic (linked below) though, you will notice that there are some details to the FBP specifications that should be observed, in order to gain all the full benefits of a full-featured FBP implementation.

    Some homework suggestions for you all:

    1. Why not start with NoFlo creator, Henri Bergius' excellent post, "NoFlo Kickstarter, the hacker's perspective":
          http://bergie.iki.fi/blog/noflo-kickstarter-launch/
    2. Watch the intro video to FBP and NoFlo:
          http://vimeo.com/72065207
    3. Read up/watch some more on the NoFlo (finished) kickstarter page:
          http://www.kickstarter.com/projects/noflo/noflo-development-environment
    4. Read up a bit on FBP inventor J P Morrisons website:
          http://jpaulmorrison.com/
    5. Join the discussion in the FBP group:
          https://groups.google.com/forum/#!forum/flow-based-programming
    6. Join the FBP Google+ community:
          http://gplus.to/flowbased
    7. Last but not least, read the book!
          http://tinyurl.com/fbpbook

  61. Re:Please do your homework. FBP proven since 40 ye by samuel.lampa · · Score: 1

    Ok, not everybody is prejudical of course, but that's very recommended links in anyway! :)

  62. Like AmigaVision? by Anonymous Coward · · Score: 0
  63. my 2 cents by Paradigma11 · · Score: 1

    A modern library implementing dataflow programming is: https://rx.codeplex.com/

    The relationship between the actor model and flow based programming is discussed here: http://c2.com/cgi/wiki?ActorsAndFlowBasedProgrammingDiscussion

    Personally i like using f# with rx using this wrapper: https://github.com/fsharp/FSharp.Reactive

    I see FBP as a generalized form of functional programming where you can, and have to, specify how the expressions are put together temporally.
    It gives you the advantage of automatic (in rx you have to specify the scheduler) concurrency but is cumbersome for stuff that is easily expressed in a synchron way (List processing...).
    I guess you would want the most coarse grained granularity.

    A nice book on FBP is: http://www.jpaulmorrison.com/fbp/ (the first edition is freely available)

    As for the idea that FBP is coupled to visual programming and will enable non programmers to write complex programs, well:
    Visual programming makes writing programs for easy problems even easier and for complex problems intractable.
    And guess what: The easy problems were already easy to begin with!!!

    1. Re:my 2 cents by Greyfox · · Score: 1

      Every fad that comes along sells itself with the easy problems, though. Making programming easier for non-programmers has been the holy grail for a good 5 decades. Before that it was probably making computers easier to use for people who don't have soldering irons. "Just use our thing!" they promise, "And you'll just be able to hire chimpanzees to crap out code for you all day long for the cost of a few bananas a day!" Well just because you're using the latest fad doesn't mean you can hire chimpanzees to write your code. Writing code is the easy part. Learning how your business operates and breaking the problems you're trying to solve in software down to sensible logical units, that's the hard part. It's so hard that most businesses have difficulty even expressing everything (or anything) they're trying to accomplish. You need to interrogate them to get any sort of requirements out of them. The programmer has to be the bad cop for this. Their manager is the good cop ("No we don't need any requirements, we'll just start writing code and you can tell us what you want as we go!")

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  64. Indeed very close by samuel.lampa · · Score: 1

    Indeed LabView is quite close to the FBP specification. Have a look at this thread in the flow based programming forum where this is discussed in quite some detail:
    * https://groups.google.com/forum/#!msg/flow-based-programming/zhkfHlunu5Y/kYDGVsqtQaoJ

    1. Re:Indeed very close by SwedishCoward · · Score: 1

      So, LabView with DLLs dressed up as SubVIs would be FBP?

  65. Indeed, actually exists FBP shell based FBP lib by samuel.lampa · · Score: 2

    Indeed, unix pipes, especially if usning named FIFOs as well, is a subset of the Flow based programming paradigm fullfilling quite a bit of it's specifications. A full FBP implementation adds a few things like option ports (could be done in shell with parameters though), custom information packet design (is only text strings in unix), and so called "initiation information packets", and surely a few more.

    There is actually an attempt at implementing a full FBP system in shell scripts only, which is kind of cool. It was discussed in the flow based programming forum,here: https://groups.google.com/forum/#!searchin/flow-based-programming/shell/flow-based-programming/PC96WYOAwAU/ICRZg_5K1XMJ

  66. Re:Please do your homework. FBP proven since 40 ye by Anonymous Coward · · Score: 0

    it's means "it is", even in the '70s. It always amazes me that programmers, who basically learn 500 different languages to say the same things can't handle the simple apostrophe.

  67. I imagine hell must be like. html+css+js? by Anonymous Coward · · Score: 0

    I take the "hell" of Labview everytime over the HELL that is html+css+js.

  68. A fun way to give it a try by Anonymous Coward · · Score: 0

    If you have $45 to burn, grab a free copy of the Unity Game Engine and the $45 PlayMaker add-on.

  69. vvvv by Anonymous Coward · · Score: 0

    There are some things it works great for, others not so much. We use a neat fbp environment for creating media installations called vvvv (vvvv.org). It's scope & focus are a bit specific, but for prototyping it's just ridiculously fast to develop with.

  70. programmer or applicationist ? by Anonymous Coward · · Score: 0

    Real programmers program in assembly. Actually in any language but if you cant program in assembly, you are no programmer.
    In many companies I see "programmers" with their masters degrees that cannot write a sort. Not even a bubble sort.
    They are not programmers. They are so used in using Libraries that miss the target. Actually i have seen projects run twice as long because the library is not parsing something right. In 1982 wé wrote our own math coprocessor since the "built in" was actually producing a wrong answer in a specific calculation. Oh those glorious DOS days ...

    1. Re:programmer or applicationist ? by Anonymous Coward · · Score: 0

      a tiny mistake, it was 1987 not 1982. Sorry about that.

  71. Re:Please do your homework. FBP proven since 40 ye by samuel.lampa · · Score: 1

    Thanks, yea, I looked up this recently but I don't seem to ever learn this properly. Always tend remember it the other way around :/

  72. Programming is easy, anyone can do it by Anonymous Coward · · Score: 0

    After my boss reads that I can see the look in my bosses eye thinking that. Especially when I hint around for a raise.

  73. VB by Anonymous Coward · · Score: 0

    All hail Visual BASIC.

  74. Quite Common in Industrial Control by Anonymous Coward · · Score: 0

    This is something that has been available for quite a while in industrial control systems used for oil+gas, process industry and whatnot. The language is called Functional Block Diagram, and is a simple dataflow language for building control applications. I have used it for the better part of a decade, it works great and can be a nice replacement for the older ways of programming PLC/PACs, which has traditionally been ladder logic.

    1. Re:Quite Common in Industrial Control by ebno-10db · · Score: 1

      AFAIK PLC's run pretty simple programs, or at least very special purpose. I don't mean that pejoratively, just that your concerns when setting up PLC's are rather different than traditional software. I'd think they'd have to be to be describable using ladder logic (they were using it as recently as 10 years ago? Wow. Wasn't it designed for relays?)

      Bottom line: would that approach extend well to other types of programming? I'm skeptical.

    2. Re:Quite Common in Industrial Control by Anonymous Coward · · Score: 0

      AC parent here.

      They are special purpose, yes, they have more in common with embedded programming than traditional software. Keep in the back of your mind though that the size of the embedded/special control market is enormous. I would posit that more embedded and control software is written than traditional software, hands-down. Your microwave has an embedded controller, your car has a few dozen, hell a fancy toaster probably does. Every plant that makes anything you buy has dozens, maybe hundreds of PLCs and PACs controlling every step of the process. Your keyboard has a dedicated microcontroller, and there are at least a couple dozen inside your PC right now, running the BLDCs for the fans, operating the hard drive, monitoring things on the motherboard, operating the DC-DC converters, controlling the lights on a laptop's faceplate, and so on. All of these things are running simple/special purpose programs, for which things like garbage collection or higher-level CS rarely enters the picture.

      As far as ladder logic, it is still routinely used in the process industry. It is fairly easy to write deterministic programs with ladder, and because the order of execution is not always guaranteed, a competent programmer structures his application in such a way that there are few/no side effects, stored state etc. In some ways ladder logic has a lot in common with functional programming.

      TL;DR version: Specialist, embedded programming is probably a far larger market in reality than traditional programming on PCs or servers, and several orders of magnitude larger than HPC. Many of the concerns of traditional programming probably don't apply for most of the actual code that is running in the world.

  75. Does Betteridge's Law Apply more 90% of the time? by zippthorne · · Score: 1

    Q.E.D.

    --
    Can you be Even More Awesome?!
  76. Re:"easier for non-programmers to build applicatio by Anonymous Coward · · Score: 0

    -- Bald Eagle [n]: an animal you paint on the side of something hideous, to prove you're more patriotic than your neighbor.

    So you've seen my neighbor's wife's tattoo.

  77. Fail by gr8_phk · · Score: 2

    FBP claims to make it easier for non-programmers to build applications by stringing together transformations built by expert programmers.

    This notion of allowing non-programmers to do programming is flawed on its face. The challenges of programming can not be overcome by drawing some cute pictures. And if you have expert programmers making the building blocks it will only take them a few minutes more to connect them which eliminates the need for the "non-programmer" entirely. Then there is this notion of "pure functions". Dude, functional programming is a fad. Real programs manipulate data.

    I've been "programming" with Simulink for 5 years now and it's great for control systems but shit for most other kinds of programming. So let your controls engineer use it to design and test and even generate C code. Then drop that code into your app and call it as a function. Never let that guy convince your organization that this is the way to go and ALL of the software should be created this way.

  78. VRML by Errol+backfiring · · Score: 1

    This sounds like the event system of VRML. I really like that. There are "EventIns" and "EventOuts", and they can be transformed. So you can define a "TimeSensor" that generates a scalar signal to be fed into a RotationTransformer which is linked to a piece of geometry to make it spin.

    Or you could define a ClickSensor that feeds a boolean signal into the TimeSensor that ...

    It workes really nice.

    --
    Nae king! Nae laird! Nae yurrupiean pressedent! We willna be fooled again!
  79. Dataflow Programming Reddit by Anonymous Coward · · Score: 0

    /r/DataflowProgramming subreddit for what's going on in modern dataflow and flow-based programming.

    http://www.reddit.com/r/DataFlowProgramming

  80. Is It The Language Or The Library? by Greyfox · · Score: 1
    For a lot of the languages you're making your wish for, is the problem the language or its libraries? I've been looking at C++ vs Java since about as long as Java has been around (I remember when Sun introduced Java,) and the nice thing about Java was all the built-in libraries that handled much more stuff than C++ did. I don't recall C++ even having templates the first time I looked at it, much less the STL. And although you could (and still can) revert back to the C standard library in C++, most people don't want to fuck with setting up, say, a socket connection in the C standard library. And although you can easily write a wrapper for them in a few hundred lines of code (Here's my trivial little demo one) I've never actually met another programmer who actually has. You can get a much better one with boost::asio, which is probably what I'd use if I were actually trying to write a high-performance web server or something, but you have to wrap your brain around their programming model. Which I haven't gotten around to doing for boost::asio yet.

    I've really only seen people getting serious about writing libraries for C++ in the last decade or so. Boost has come a fantastically long way in that time and adds most of the stuff that the newfangled C++ STL was lacking. In fact, they added a lot of the Boost stuff I've been using to the C++11 spec, pretty much verbatim. I can pretty much change a header include from to the new C standard thing, change the namespace from boost:: to std:: and not change any other code and it'll work. I was actually stunned they kept the thread syntax the way boost did it.

    No matter what you're trying to do or the programming paradigm you're trying to do it in, you will never be able to just crap out some code without thinking about its design and what you're trying to accomplish. When people think of the difficulty of programming, that's where the hard part is. Learning a language is easy. Learning to express your instructions to the computer in a way that's maintainable, efficient and reasonably bug-free... that's not so easy. I've seen many companies through the years constrained by the design of their in-house software. Once the business starts changing to meet the demands of its software, you start having problems. "We can't do that because our software won't allow it," is a huge drag on a company. You start losing opportunities not because something is not possible but because something is not possible with the tools you have.

    A lot of the programming fads (OO, Functional, Ruby) imply that you can just start crapping out code without thinking much on what you're trying to accomplish. Buying in to that hype is foolish, and potentially damaging to your business. Some of the fads actually do make it easier to write reusable and maintainable code (OO and test-first come to mind, though I haven't drunk enough of the test-first kool-aid to actually write the unit test first. I usually don't wait much longer than the object I'm testing being "mostly done" to write a test for it, though.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:Is It The Language Or The Library? by gd2shoe · · Score: 2

      For a lot of the languages you're making your wish for, is the problem the language or its libraries?

      Both. For different reasons. In this context, specifically, I've not run into anything quite as useful as UNIX pipes anywhere else. They are somewhat limited to manipulating a stream of data, but they are eminently versatile with minimal typing, and minimal code confusion. This is language feature.

      Sometimes libraries attempt cool things like this by using operator overloading, etc, but it's not the same. People writing UNIX cli programs write to the paradigm, and join an environment wide community. If I download a well written bash script, I can reasonably anticipate that it can be incorporated into more complex bash commands, with little effort. Libraries that do stuff like this wind up as one-offs that must be mastered for narrow uses.

      Languages shouldn't try to do everything themselves, but they do need to present a paradigm that libraries will adhere to. The better the paradigm, the more seemless the libraries written for it will work together. Most languages don't take library cross-integration as a design goal.

      ... but you have to wrap your brain around their programming model. Which I haven't gotten around to doing for boost::asio yet.

      Here's my biggest pet-peeve when it comes to libraries. Each one is designed to be used in a particular way, according to a particular paradigm... and they rarely describe these patterns of thought for you at the outset. You've got to read through half the object/function descriptions, and then google code samples to figure out what the library author was thinking. This is a documentation problem. (end rant)

      No matter what you're trying to do or the programming paradigm you're trying to do it in, you will never be able to just crap out some code without thinking about its design and what you're trying to accomplish.

      That's a given.

      When people think of the difficulty of programming, that's where the hard part is. Learning a language is easy. Learning to express your instructions to the computer in a way that's maintainable, efficient and reasonably bug-free... that's not so easy.

      This is also somewhere modern languages fall down. I'm not sure what the solution will be, but there's always that pesky step between building an elegant theoretical model and trying to express it in code. Once done, the code never expresses the model, and very few programmers go back and leave documentation. They'll include a few comments, but nothing meaningful in the big picture.

      I hold that we write bad code because our languages and tools encourage us to write bad code.
      (and bad programmers will never go away)

      A lot of the programming fads (OO, Functional, Ruby) imply that you can just start crapping out code without thinking much on what you're trying to accomplish.

      I understand your frustration here, but this can be a very handy feature. I primarily write prototype code and one-offs. Starting to code before I fully understand what I'm doing saves a good deal of time and effort. And If I need to start over from scratch and really design something, I'll know what I'm up against. It's a royal pain to redesign a whole project from scratch 4 or 5 times because you didn't understand what you were doing.

      (This isn't to say that I take no thought, nor that I expect code written this way to be any good. I start with a plan, even if it has great big holes in it. I write nothing this way unless I'm prepared to rewrite it from scratch.)

      But for large projects, business critical projects, "production" code, or anything remotely long term (more than a day or two), I agree with your sentiment completely.

      Fortune at the bottom of the page: "Any program which runs right is obsolete."

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    2. Re:Is It The Language Or The Library? by Greyfox · · Score: 1
      The pesky step isn't between building an elegant theoretical model and expressing the code. The pesky step is BEFORE building the elegant theoretical model. When you start somewhere new, it takes you 3-4 months just to start learning your way around the business. Until you really understand how they operate and why they do the things they do, any code you write is likely to be wrong. 6 or 7 months in, you start to learn your way around their code base. It can take a year or more to know your way around their code base well enough to start being really productive when modifying it. At someplace with high turnover, it's entirely possible that there's no one left who actually understands how the business operates.

      Compared to the problem of understanding the business, learning a new language well enough to be productive in it is a trivial problem.

      Companies and HR departments don't see this, though. They want everyone to be easily-replaceable cogs in their corporate machine. Thinking you can just swap a new programmer for a guy who's been there for 5 years is just as wrong as thinking that the programming language is the biggest problem facing software companies.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    3. Re:Is It The Language Or The Library? by gd2shoe · · Score: 1

      You seem to have read something into my post that I didn't write, but I'm not entirely sure what. Further, you keep bringing the ease/difficulty of learning languages into the conversation, not something that I've addressed.

      Companies and HR departments don't see this, though. They want everyone to be easily-replaceable cogs in their corporate machine. Thinking you can just swap a new programmer for a guy who's been there for 5 years is just ... wrong ...

      Dude, where'd that come from? Were you just laid off, or something? I'm sorry if you were.

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    4. Re:Is It The Language Or The Library? by Greyfox · · Score: 1
      I've just been in the industry for 20 years. My ultimate point is, flow based programming is probably just another fad designed to address the wrong problem. Some bad managers and programmers will probably jump on the bandwagon, because they always do. Then they'll do it wrong and have their projects fail or enter a never-ending purgatory of firefighter maintenance cycles and bug-ridden release. This will happen because they were addressing the wrong problem all along. My point is that the problem isn't how your code is structured. A good programmer or team can write maintainable assembly if that's what's needed.

      What companies need to be doing is cultivating the people who build their software, not jumping on every shiny new thing that comes along. Very frequently I've seen the company decide to change its entire process, move to agile or some bullshit and immediately have half its employees leave for other companies. The knowledge those employees take with them is quite frequently irreplacible. Especially if one of them is the last guy who knows anything about a particular subsystem. No amount of frameworks, process or programming paradigms is going to help you when that happens. All you can do at that point is hire a programmer who is then going to have to spend the next couple of years being less productive than the guy who left while he's getting familiar with that subsystem.

      So do flow-based programming if that's what you want to do. But if some company asks you how to improve their awful code-base, the answer is really not going to be anything to do with the computers. It's going to be all about the people they hire. Good programmers, managers and process will result in good code no matter how it's developed. Bad ones will result in shitty code no matter how it's developed. Being able to identify that as the problem is a very large part of the problem.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    5. Re:Is It The Language Or The Library? by gd2shoe · · Score: 1

      I've just been in the industry for 20 years. My ultimate point is, flow based programming is probably just another fad designed to address the wrong problem.

      Almost certainly. Whether or not it is a good idea in some contexts, it will inevitably be used in the wrong ones.

      Some bad managers and programmers will probably jump on the bandwagon, because they always do. Then they'll do it wrong and have their projects fail or enter a never-ending purgatory of firefighter maintenance cycles and bug-ridden release. This will happen because they were addressing the wrong problem all along.

      Yep.

      A good programmer or team can write maintainable assembly if that's what's needed.

      I'll quibble here a bit. A good programming team can expend a great deal of effort to write and maintain something in assembly. The language and infrastructure matter immeasurably in maintainability.

      What companies need to be doing is cultivating the people who build their software, not jumping on every shiny new thing that comes along. Very frequently I've seen the company decide to change its entire process, move to agile or some bullshit and immediately have half its employees leave for other companies.

      Fad based management is only a small fraction of that particular problem. The root of it is top-down authoritative "leadership". Feudal-lords in suits will always alienate workers. When they make bad decisions, they wonder why everyone jumps ship.

      So do flow-based programming if that's what you want to do.

      Woah, woah woah! Hold your horses. I pointed out how extraordinarily useful Unix pipes are, and how practically no other language feature I've come across is quite as easily extensible. I didn't say that Flow based programming was the one-true-way. I haven't yet looked into this recent fad, so why would I be rooting for it? I am rooting for language developers to think about encouraging cross-library integration by design to a degree that they currently seem incapable of.

      But if some company asks you how to improve their awful code-base, the answer is really not going to be anything to do with the computers.

      Usually.

      It's going to be all about the people they hire.

      And how they train them. Yeah, you can only instill so much into soft heads, but you can make some progress. Likewise, good programmers will go soft and stale if they're not kept sharp or if they are overworked. (Burned out coders don't spend extra time learning about new developments.)

      Good programmers, managers and process will result in good code no matter how it's developed.

      Uhm, you seem to contradict yourself there. Define "how it's developed" in absence of process and good programming practice.

      Bad ones will result in shitty code no matter how it's developed.

      Bad programmers are bad primarily because of how they develop software. This spans everything from how they prepare (or don't), how they treat whitespace, how they name things, how they comment code (or don't), how they correspond with colleagues (or don't), etc, etc, etc. If you mean the development methodology the firm employs: that's a part of it too, albeit a much smaller part.

      --
      I won't join Slashcott. OTOH, If Beta goes live, I just won't be back until it's fixed. Sorry Dice.
    6. Re:Is It The Language Or The Library? by Greyfox · · Score: 1

      Good programmers, managers and process will result in good code no matter how it's developed.

      Uhm, you seem to contradict yourself there. Define "how it's developed" in absence of process and good programming practice.

      Yeah I meant whether they use flow-based, functional, OO or procedural and whether their process is agile or waterfall. In my experience, good teams will adapt the processes to suit their needs. Bad ones tend to view the process as the deliverable. Or they just don't have any process at all. If they get in firefighter mode, they can very easily not have any process. This is up to and including dropping new executables onto production without any testing. Or, potentially, telling anyone.

      You don't often actually get to choose what you'll be working with. I actually know of a team that's still maintaining some code in mainframe assembly. If that's what you have to work with, you may as well do it well. Sure it's a lot more work than well-factored C++ or something, but it's the only solution they've ever managed to get working for that particular problem.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  81. An EE says this is garbage by ebno-10db · · Score: 1

    I'm a hardware/software engineer (i.e. I do both). By analogy to logic design (ASIC's, FPGA's), this is a big step backwards. Once upon a time logic was designed using schematics. Everybody gave that up about 20 years ago, and switched to HDL's (VHDL, Verilog). For those unfamiliar with them, HDL's are text based hardware description languages which get compiled and then synthesized into gates, flip-flops, etc.

    Despite this change 20 years ago, there are those who cling to a love of schematics. You can draw a schematic and have it automatically transformed into HDL, and from then on it follows the same design flow. It's a mistake to do things that way. As recently as 5 years ago (and perhaps still) I had a customer who insisted that the top level of the design be a schematic (with the boxes in the top-level schematic implemented however you wanted). It sounds nice, with a pictorial representation (which is especially well suited to hardware), but it turns into a mess for any non-trivial project. Top level diagrams are a great form of documentation, but when you try to use it for actual implementation, it gets so cluttered with detail that it becomes unreadable. Better to look at the text. I can't see how this would be any different for a non-trivial program.

    1. Re:An EE says this is garbage by Anonymous Coward · · Score: 0

      You can draw a schematic and have it automatically transformed into HDL... It's a mistake to do things that way.

      You can also transform the HDL to a schematic for the times you *want* to see a schematic. Flow-Based Programming has *both* a visual and textual representation. Use the right one for your needs.

    2. Re:An EE says this is garbage by ebno-10db · · Score: 1

      You can also transform the HDL to a schematic for the times you *want* to see a schematic.

      Usually that's done only for small blocks to see what the synthesizer hath wrought, and whether you can tweak the HDL for more optimal synthesis. Reading the resultant automatically generated schematics is an exercise in deciphering a puzzle. Usually easier than reading the equivalent structural HDL, but not by much.

      Flow-Based Programming has *both* a visual and textual representation.

      As does the example I mentioned (schematic is only required at the top level). For anything non-trivial, it isn't worth it. If flow based programming is easier, it's probably only for a small class of applications.

  82. I'll believe it when I see it by guru42101 · · Score: 1

    I've been doing Oracle SOA development for the past six months. The BPEL and XSLT transformation tools are supposedly business user friendly however I have to drop into the source code several times on every project to perform simple tasks and to make corrections to the assumptions that JDeveloper makes. Even things as simple as defining you want the value from the Nth occurrence of a repeating element have to be done in the source code. God forbid you don't want to use oracle as your namespace I have to open up several source files in order to uniformly use our URL as the namespace for everything that we've defined.

  83. Re:"easier for non-programmers to build applicatio by Dcnjoe60 · · Score: 1

    Gee, never heard that one before.
    What the people pushing these ideas don't seem to know is that it's not the tools, it's the way of thinking about a problem. I once worked at a place where we made a manager a tool that would let him create his own reports, and he immediately started adding up all flavors of apples and oranges (e.g., dollars of this and pounds of that). Then he wanted the small IT staff to help him make sense out of his reports.

    While I understand what you are saying, it is hard to argue that Microsoft's Visual Basic and Access effectively allowed millions of non-programmers to build applications. Were they good, robust applications? Probably not, at least most of them. But at the time, those products were first released and centralized IT shops ruled, most departments would never have had their requests get high enough up the priority list to every be programmed by a "real" programmer.

    Unfortunately, VB's own success killed it for the non-programmer because more and more features were added to the point that by the time it was VB.net, you needed to be a programmer to really use it and if you were, well C# provided much more functionality.

    End users will find a way to get their needs met, one way or another. And, an IT shop that is viewed as thwarting a production department from being able to function won't last long in today's economic situation.

  84. *orthodox* object-oriented development??? by davidwr · · Score: 1

    Listen here sonny, when I was just starting out "object oriented development" was anything but orthodox!

    Mark my words, when you get to be as old as I am now people will be talking about newfangled things like "disks that hold data instead of putting it in The Cloud" and "getting that computer out of your brain and wearing it instead."

    Mark my words.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  85. This isn't new... by Dcnjoe60 · · Score: 1

    This isn't new. Back in the early 90s, there were various end user tools to design simple systems that used a card metaphor. Basically, you strung a bunch of cards together to build your program and for each card you told it what that card did (accepted input, made a decision, generated a report, etc.). In reality, it was building a flow chart (but not using the traditional systems). When it was all done, you hit the button and your program ran. If it needed changed, you edited the individual card or inserted new cards or removed old ones. You also had the option to open each card and tinker with the code (pascal, I think), but for the most part, each card was a black box just accepting inputs and having specified outputs.

    Obviously, the programs weren't terribly sophisticated, but they were surprisingly functional and maintainable and for end users it was a lot easier than programming dBase or Lotus.

    1. Re:This isn't new... by phantomfive · · Score: 1

      This isn't new.

      Yeah, Flow-based programming was invented in the 70s. As your example points out, it definitely has uses even if we're not all going to switch over to using it.

      --
      "First they came for the slanderers and i said nothing."
  86. Reinventing the wheel by Anonymous Coward · · Score: 0

    "Functions without side effects"...funny that they don't mention Haskell. Haskell is the *only* pure language (meaning without side effects) out there today with significant adoption. A recent presentation at CUFP[1] talked about how one commercial user saw *vastly* better reusability with Haskell than other languages because of purity. Haskell has been all about this idea (using a different name) for roughly 20 years. They've learned an incredible amount and now have a surprisingly powerful language that is used by a number of companies of all sizes. The community has a huge ecosystem of open source code available for reuse. For those drawn to the "flow" ideas, there's also Functional Reactive Programming (FRP). There are at least 5 Haskell FRP frameworks available today.

    1. Re:Reinventing the wheel by ebno-10db · · Score: 1

      "Functions without side effects"...funny that they don't mention Haskell. Haskell is the *only* pure language (meaning without side effects) out there today with significant adoption.

      You can have functions without side effects in other languages. Best if the language allows you to enforce that with a "pure" qualifier, which several do (I actually think the default is backward, and you should have to qualify any function that isn't pure). A language can have mutable local variables, and still have pure functions.

      I love Haskell - it's fun to learn and a great way to learn functional programming, because it forces you to do everything functionally. The ADT's should be a must have for any language. Still, I can't see Haskell as a true general purpose real world language. It's great for some things, but there are types of programming (particularly number crunching) where having mutable variables (particularly arrays), is almost indispensable (at least if you want any efficiency). Haskell has tacitly acknowledged this by creating monads that allow you to cheat in that respect. Suddenly you have a purely functional language that isn't purely functional, but pretends to be because the naughty bits are wrapped in monads. The monadic implementation of mutable vars can also be a real pain (I know how to do it, but it isn't worth it).

      This isn't really a criticism of Haskell. It was originally designed as a purely functional language w/ non-strict evaluation, for the purpose of research and teaching. It's great for that, but I think the attempts of some enthusiasts to promote it as a general purpose language is going too far. There are more "realistic" alternatives that let you mix functional and non-functional paradigms (e.g. O'Caml, F#, Scala, Scheme, etc.).

    2. Re:Reinventing the wheel by Anonymous Coward · · Score: 0

      I can't see Haskell as a true general purpose real world language.

      I completely disagree with you here. I've been doing full-time Haskell development at two different companies for four years now and Haskell is fantastic as a general purpose real world language. I'm currently working at a small company with just a few people and we are working with almost 100,000 lines of Haskell split over several projects. This code includes mission critical web apps that serve over a million hits per day. Haskell code is easily the most reliable part of our infrastructure.

      but there are types of programming (particularly number crunching) where having mutable variables (particularly arrays), is almost indispensable (at least if you want any efficiency).

      Haskell has mutable variables. And no, it's not cheating. The strong type system allows you to strongly enforce the precise kinds of mutation that can happen, which is VERY useful in preventing bugs. Mutation actually isn't that difficult. And the difficulty that is there is IMO perfect because it encourages the right kind of programmer default. Mutation *should* be discouraged because in the vast majority of cases it's not needed. The performance critical parts that you speak of that need mutation are quite rare in real world development. When they do happen, Haskell allows them to be nicely boxed up in ways that allow the mutation to be safely isolated from the library user.

      There are more "realistic" alternatives that let you mix functional and non-functional paradigms (e.g. O'Caml, F#, Scala, Scheme, etc.).

      It's not just about being functional. It's about purity. (And no, the two are not the same.) Haskell people have understood this for awhile now, but the rest of the world is only recently starting to become aware. Purity is the best mechanism we have to deal with concurrency and parallelism. None of the more "realistic" alternatives you mention are sufficient because none of theme are pure.

    3. Re:Reinventing the wheel by Anonymous Coward · · Score: 0

      >This isn't really a criticism of Haskell

      Indeed, it is just a demonstration of your ignorance. The whole "but haskell made monads so it is cheating and not really pure and you have to monads" tripe is pure FUD, repeated by people who have never attempted to use haskell for anything significant. You literally can't write a decent sized project in haskell and still think something that absurd. It is like saying javascript isn't practical because you have to use netscape and it is cheating. It simply doesn't make any sense.

      I migrated from one of those "more realistic" alternatives to haskell because haskell is vastly more useful for actually writing and maintaining code. I picked ocaml in the first place because I was ignorant of functional programming, and felt I would need to have imperative available to do anything. After 3 years of using ocaml and every case where I used imperative style was due to language limitations, I decided to look into SML and haskell a little closer.

  87. Re:"easier for non-programmers to build applicatio by Dcnjoe60 · · Score: 1

    The ugly trick is that if you want to keep non-programmers away from something, some programmer has to take one for the team and gingerly approach whatever horrible little ad-hoc business logic problem or whatever the non-programmer was trying to solve. If dual-class programmers were in ready supply, it's not like the non-techies would be clamoring for more chances to get their hands dirty.

    I don't think that is true. End users have been doing their own thing for decades. They usually just do it with spreadsheets and databases. In the old days it was Lotus and dBase, today Access and Excel. In the 90s there was a lot of VB programs written by end users that while not of professional quality, surely got the job done for their purpose.

    The reason that end users get their hands dirty has nothing to do with the availability of programmers overall. It is the priority of their projects compared to the rest of the corporation's projects. In most organizations, increasing the programming staff another 10% is not going to get those smaller end user projects accomplished any sooner. Those programmers will be added to the big projects to get them finished sooner so the next big project can begin.

    In many organizations, there has been a major push to decentralize IT precisely because of this. If management is going to be held accountable for timelines for projects that require programming, but that programming isn't high enough on the corporate priority list, then those business units want their own programming staff. Simply put, the manager needs to be responsible for all the resources required to complete the project. If they don't get their own staff, they will simply come up with creative internal ways to do it with end user tools.

    As for IT and business logic, almost always, IT is the one that doesn't understand business logic. The end user usually has a good grasp of the business logic and how it fits into current operations. The professional programmer, on the other hand, usually wants to use existing patterns to speed up their development time, but causes the end user department to change the way it processes. In short, they forget that the user is the customer. That is why, in many organizations, IT has about the same approval rating as congress.

  88. No, but GNURadio uses it successfully by tiagosousa · · Score: 1

    As per usual, the answer to the title is "No", but flow-based programming has its uses. I've recently come across GNU Radio, in particular its Companion (GRC) and the flow model is a perfect match for signal processing. Take a look at these GRC screenshots. With the advent of RTLSDR, more people are discovering this programming model.

  89. Re: "easier for non-programmers to build applicati by Dcnjoe60 · · Score: 1

    A complex problem won't be simpler just because the tool isn't as powerful. All these ideas comes from a fundamental misunderstanding about what it is that actually makes system development hard.

    But, if you break a complex problem down into it's simpler components and solve each of those components, then a simpler tool can be used on the components and the components strung together to solve the complex problem. That is how you solve a business problem in the real world. That is also how you solve a programming problem.

  90. abstractions/symbolic refs better for complexity by simplerThanPossible · · Score: 1

    the transformations you want don't exist.

    True for whatever your company competes on, but not for everything else (the so called "hygiene" factors, that don't need to be great, just basically work. e.g. Apple doesn't compete on their internal payroll software).

    Your point on complexity is spot on. The abstractions and symbolic references that make programming so difficult handle complexity far better than the blocks and connectors of FBP and visual programming.

    OTOH the two roles of component-maker and assembler is realized in the massive standard libraries and open source libraries of all mainstream languages.

  91. Re:"easier for non-programmers to build applicatio by Dcnjoe60 · · Score: 1

    Gee, never heard that one before.
    What the people pushing these ideas don't seem to know is that it's not the tools, it's the way of thinking about a problem. I once worked at a place where we made a manager a tool that would let him create his own reports, and he immediately started adding up all flavors of apples and oranges (e.g., dollars of this and pounds of that). Then he wanted the small IT staff to help him make sense out of his reports.

    Yep.

    And even if they do get good at using it, now you've got a {whatever} doing "programming" (in a limited clunky "environment/language") instead of {whatever it was they were supposed to be doing}.

    There's a marketing manager in my last job's company doing exactly that (not entirely unrelated to why it is my last job). I'm glad he's having fun playing programmer, but he does even less actual marketing than he was doing before ...

    If their job involves the collecting of data and assimilating it and compiling it into various formats, etc., as in marketing reports, and they can't get the data unless they do it them self, I'm pretty sure the organization would fault the IT shop and not the manager. Managers are usually evaluated on results and if the result is the reports, then he/she is successful.

  92. Here's the problem by mattr · · Score: 1

    Look, money is made by companies like Facebook which is why they have the natural language parsing graph engine (waves hands) which should be used for what the OP is talking about but instead is used to stalk each others' friends' drunk photos.
    If you are talking about "real programming" that is another ball of wax, but if you are talking about 98% of web apps, android apps, etc. there is already a full corpus and standard way of representing whatever is to be done. There only so many patterns.

    These patterns all have to be created line by line. The problem is there are too many patterns for anyone with the attention span of a non-programmer to use it. And also they haven't trained themselves to think comprehensively and in depth about an application. Something like salesforce.com is a big step toward locking in^h^h^h^h^h^h^h^h^h^hempowering businesses to build their own software, however if has lots of cracks and places it falls down. For one thing, a lot of it drives the user to developing in a certain way, whereas if there was an easy to use synchronous real time messaging system that did not require you to write apex (kinda like java scripting) it would be more useful to more people.

    The real solution is to have some kind of (hand waving) artificial intelligence built in, which would let you describe the kind of system you want built with prose and back of napkin drawings. Imagine an interative process in which a businessperson is describing to a system engineer what he wants, and "take care of all the obvious stuff as appropriate". Anyway, the salesforce and facebook approach has a managed web service / application engine / full stack infrastructure that self-augments itself over time and a community-driven open source version of this based on open repositories for example would be cool. This would release developers from having to reimplement the same kind of thing over and over. Some of this idea was visible in the beginning with catalyst perl app framework and perhaps in Moose object framework (not AI but resembling English

    Unfortunately the development priorities of a facebook or a salesforce tend to target high school kids and marketers respectively, and profit-making above all, so you get something really powerful that nevertheless is not necessarily aligned with your goals. Anyway, the term "dataflow programming" is a bit old. I think the new term that will encompass it and much more will be NLP (natural language processing) programming or automated design perhaps autoflow for short.

  93. perfect for a modular synth... by Anonymous Coward · · Score: 0

    it's a good model for audio synthesis, for example: PureData and MaxMSP are essentially this...
    it's possible to code in a FlowBasedProgramming style but using a procedural or object oriented language.
    actually, it's a subset of Object Oriented programming, in a way...
    think about it...

    there's a classic text on this by J. Paul Morrison. read it.

  94. Short answer: yes by quarkalone · · Score: 1

    FBP proposes some very interesting ideas and could solve problems we have with 8+ cores and concurrency.

    I'm looking forward at noflo project http://noflojs.org./

  95. More power to the people! by MasterOfGoingFaster · · Score: 1

    My users will love this. They are getting bored with overly-complex parametric CAD models, driven by somebody's undocumented Excel macro, reaching into the Access-database-from-hell, that pulls the wrong tables from SQL Server and our "who-changed-this-field?" ERP system, fed from a LabView rats-nest-of-code system.

    Should be fun when they call me, because "computers are YOUR job, not ours".

    --
    Place nail here >+
  96. 6:07 YouTube: Dataflow vs FBP, Reactive vs Non-R. by samuel.lampa · · Score: 1

    As data flow seems to be a more well known concept for some, watch this excellent 6 minute exposition of the differences between:

    1. Data flow vs. Flow based programs
    2. Reactive vs Non-reactive
    3. Event based vs Query or Call/Return based
    4. Eager vs Lazy evaluation

    Some of the most clarifying bits of speech I have ever listened to.

  97. Can't Named Unix Named Pipes Be Used To Do This? by Anonymous Coward · · Score: 0

    Seems like the parts are there.

  98. Re:What fun! Graphical patch cables! by Xicor · · Score: 1
    as someone who is good in labview and in code, i can say that it isnt a "slow way" of doing code. it has its ups and downs just like any other programming "language."

    when you learn all the tricks, it becomes a relatively simple way of doing a lot of programs, especially those involving hardware(as that is what it is made for). moving hardware with labview code is infinitely easier than with written code.

    labview also makes it easier for someone to pick up your code and finish from where you left off, or modify it to suit his needs. written code is awful for this, even when you comment.

  99. Re:6:07 YouTube: Dataflow vs FBP, Reactive vs Non- by samuel.lampa · · Score: 1

    Oops, forgot the link: http://youtu.be/iFlT93wakVo

  100. The "made easy" meme by istartedi · · Score: 1

    Every field seems to have this issue to one degree or another. There are "music made easy" books, languages made easy, everything under the Sun "for dummies". It seems like it's particularly strong with programming. Maybe this is because programming is relatively new. Music and language are ancient. They're ancient enough for people to realize that for some people they will always be hard. Certainly a good teacher helps; but you have to have some innate ability.

    Programming is too young for us to figure out how far teachers can take the typical student. I suspect it's similar to how far they can take the typical math, music, or language student. That's just my pet theory though. Until we reach consensus, I welcome your efforts to make programming easy, with a huge dose of skepticism.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  101. "Flow-based programming"? by whitroth · · Score: 1

    ROTFLMAO!

    Lessee, so, is flow-based programming like
    awk '{$0 ~ /programming/ ) { print length($0) " " $0;}} myfile | sort -u > myreport_on_the_use_of_the_word_programming
    ?

                  mark "*Nix, the object-oriented operating system"

  102. Re:Can't Named Unix Named Pipes Be Used To Do This by samuel.lampa · · Score: 1

    Can't Named Unix Named Pipes Be Used To Do This. Seems like the parts are there.

    Yep, partly done alreday. Have a look here: https://groups.google.com/forum/#!searchin/flow-based-programming/shell/flow-based-programming/PC96WYOAwAU/ICRZg_5K1XMJ

  103. Betteridge says... by Laxori666 · · Score: 1

    No.

  104. Re:"easier for non-programmers to build applicatio by fuzzyfuzzyfungus · · Score: 1

    Oh, I don't think that we are in disagreement here. My intended point is that, while railing against the (often genuinely ghastly) shambling horrors that people cobble together out of spreadsheets, duct tape, and optimism is entertaining, There Is No programming tool(barring strong AI-level expert systems, at which point humanity can pretty much pack up and call it a day) that will stop that from happening unless people who are both programmers and understand and care about/are allocated to the problem are available.

    As much as it might offend the purists, almost everyone would rather have an imperfect, or even lousy, implementation of what they want, now, rather than a technically correct implementation of what IT thinks they ought to have 6 months from now. In fairness to IT, of course, when they can be properly integrated, things are somewhat less likely to turn into an unmaintainable and horribly brittle clusterfuck. (I once had the... pleasure... of observing the period where a small group of economic consultants, experts in that area, ran very hard indeed into the memory-space and compute-speed limitations of macro-laden spreadsheets. Luckily, they still had most of the human capital in-house, so the task of breaking out the algorithms and logical structures for implementation by the dedicated software developers they eventually had to hire was an expensive inconvenience rather than futile archaeology. Even so, if executing a spreadsheet in a 64 bit memory space across a modest sized compute cluster had been a supported option, they'd probably be using MS Excel for HPC to this day...)

  105. Betteridge finally proven wrong? by allo · · Score: 1

    Betteridge finally proven wrong?

  106. FBP is a methodology for software architecture by guitarvydas · · Score: 1

    It is better to think of FBP as a language / methodology for software architecture. FBP ideas are indeed old, yet tend to be ignored. FBP keeps resurfacing and keeps being rediscovered ("steam engine time"). This is due to the fact that these ideas do solve real problems encountered in software design. Software practioners who care about software design are the ones who rediscover FBP, or immediately "get it" when they find out about it. An excerpt from my slides (intro.ppt) here http://www.meetup.com/Toronto-GTA-Flow-Based-Programming-Meetup/files/ ... FBP is Often Compared to... - Erlang, CSP, Actors. FBP is hierarchical and sibling components are invisible to one another. - UML. FBP is meant for compiling designs, not modelling them. - LabView. FBP presevers component separation at runtime. - Scratch, et al. FBP is primarily meant to simplify software engineering / architecture. FBP is not targeted at non-programmers, per se. [If you're in the GTA, feel free to come out to the next meetup, Oct. 23. Join the meetup.com group, the google group, the Bento Miso mailing list https://www.bentomiso.com/ , or email me paul.tarvydas@gmail.com]

  107. Stop it! by Arkan · · Score: 1

    Stop it already! Non-programmers will never build applications, because on a programmer CAN build an application. Stop tooting your flavor-of-the-week 4GL solution and focus on providing more astute tools to programmers. The myth of a business type obtaining a proper result out of a computer without any a programmer being somewhere in the picture is NOT going to happen before we get Turing test worth IA. Period.

    If only all these companies selling those products would learn a bit of computer science history before embarking into yet another flawed implementation of a 50 years old idea, and start enhancing testing, debugging, profiling, and - $Deity forbig - deployment and environment dependency manager tools, we'd be all for the better.

    Damn. Do I sound as bitter as I feel?

  108. Re:"easier for non-programmers to build applicatio by sootman · · Score: 1

    > "easier for non-programmers to build applications"

    Yeah. Excuse me while I go punch the person who built this SharePoint list and made a column called 'group' and set its type to 'text' instead of 'number' so I can't sort it correctly. And set 'owner name' to 'long text' so it can't be sorted at all. :-|

    Yes, moar like this, please.

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  109. Can't, won't by Anonymous Coward · · Score: 0

    People who can't program in current languages will not be able to do so in any language, no matter how simplistic you make it. These are the same people who can't use the remote control for their VCR / PVR and who struggle every time Facebook makes a small change to it's UI.

    Programmers can make it happen in any language. Non-programmers will be incompetent no matter how easy you make it.

  110. Re: "easier for non-programmers to build applicati by Anonymous Coward · · Score: 0

    Yes. But tools don't do that. Person does it (using and not abusing tools)

  111. Luddites don't need to program by TheSkepticalOptimist · · Score: 1

    I don't think that we have to worry about non-programmers.

    We don't need to make programming accessible to non-programmers. We don't make brain surgery accessible to non-doctors, we don't need to invent ways to write apps and software by people unwilling to learn how to code.

    While there is always room for better tools to write software, focus on making software development more efficient, secure, powerful and error proof for people that want to commit to a career in writing software and when a Luddite has a passing idle thought for an app they can either contract a real developer or learn how to code properly.

    Besides, they tried to do this already and the earth is still plagued by Visual Basic.

    --
    I haven't thought of anything clever to put here, but then again most of you haven't either.
  112. Anyone remember CanDo and Amiga Vision? by Gibgezr · · Score: 1

    CanDo and Amiga Vision were cool. Yes, you could so a lot more in C on the platform, but Amiga Vision excelled at developing multimedia programs quickly and easily, CanDo could create fairly complex tools (I made a decent Opus-like file manager in it) and the AREXX hooks into these tools (and everything else, including the OS) really extended their capabilities. Ah, fond memories.

  113. Re:What fun! Graphical patch cables! by Anonymous Coward · · Score: 0

    I did use LabView only for one small project in university, we used it to control and read out several different sensors plot the readings and export them to files for further analysis and plotting. We had three days, two of which were taken up running the experiment. So effectively we had to pick up how to use labView in one day and design an application in it. I don't think a text based programming language would have been nearly as painless and easy to use for this application.

  114. Re:What fun! Graphical patch cables! by dbIII · · Score: 1

    The premise for this sort of stuff is really that you don't have a clue what you are doing and string some stuff together on the fly. That doesn't scale. A large labview project looks like spaghetti unless it is organised with as much care (and more time) as you would take with a scripted method.

  115. Modelling by Anonymous Coward · · Score: 0

    Many programmers have to re-orient themselves from orthodox object-oriented development, and shift to a world in which data structures are transparent but the behavior – the transformation – is not.

    Then use objects as state machines to model behavior, a piece of common knowledge from the 80's and before.

  116. Data Mining Tools by BananaBender · · Score: 1

    Flow-based Programming reminds me very much of current data mining suites like IBM SPSS Modeler or RapidMiner. The prefered way to model an analysis is to build a graphical flow chart using various building blocks connected to one another. Those high-level blocks can be as diverse as data transformations (filtering, aggregation) or data mining algorithms (decision tree, regression analysis).
    The input for the analysis usually comes from one or many database systems. The output is usually also written to databases. FBP makes it very easy even for non-experts to build data mining analyses using these tools.

    1. Re:Data Mining Tools by FeelYourDataFlow · · Score: 1

      RapidMiner or SPSS aren't that intuitive. You need to tweak the components all the time in property dialogs. As far as I know RapidMiner it's necessry to execute your graph to test it. Ever heard of ANKHOR FlowSheet ? Their graphical editor is maybe the best what you can find in this area, and - their 'FlowSheets' gets executed all the time. You can inspect the results of the operators immediately after adding them to the graph... FB programs aren't the holy grail for every problem, but it's possible to get results really fast ! Even GUI based applications aren't impossible. I wrote several complex configuration tools and data based applications so far. There are some online-demos from the ANKHOR staff : http://ankhorservices.com/FEMSampleViewer http://ankhorservices.com/upload/LogFilteringARE http://ankhorservices.com/SmartMeterTest http://ankhorservices.com/HealthcareDashboard http://ankhorservices.com/EarthQuakesGeoData3D The FlowSheets are rendered with an ANKHOR HTTPServer, pretty impressive sh...

    2. Re:Data Mining Tools by BananaBender · · Score: 1

      Hmm, your post reads like a software ad for ankhor flowsheet. Interestingly, your user name "FeelYourDataFlow" is the claim on ANKHOR's web site.
      So I guess your remarks on SPSS or Rapidminer, two of your direct competitors, are not really believable.

  117. Re:What fun! Graphical patch cables! by Anonymous Coward · · Score: 0

    when you learn all the tricks

    Here's a neat trick: Near the bottom left and right sides of your keyboard are two keys named "Shift". Pressing either of them while typing allows you to enter captial letters, which lets people know that you aren't a complete moron.

  118. Re: "easier for non-programmers to build applicati by blippo · · Score: 1

    You are making it sound easier than it is.

    If its an actual complicated problem, the parts interacts. The complexity is in the interaction.
    It is also a matter of "leaky" abstractions. There is always a corner case where the abstractions isn't enough.

    Business problems, like all real life problems, are hard- but in a toally different way.
    You can't rollback death and not even a spoken word, and you may spend days thinking about unsolvable problems,
    but the reality is normally not as rigid and fragile as the abstractions and rules of a computer system.

    In real life you can bend the rules.

    All tools that tries to remove complexity are fighting against the law of thermodynamics.
    Or put in another way, they will make simpler problems simpler, and the rest of the problems harder.

    There is probably a sweet spot somewhere around where most popular programming languages are today,
    somewhere between assembler code and bpel.

    It is possible that the expressability can be improved for some types of problem. It is for instance rather strange that no popular language natively can describe relations between entities, and are forcing us to work with data structures from the 60ies as a workaround for the lack of relational constructs.

  119. Re: "easier for non-programmers to build applicati by Dcnjoe60 · · Score: 1

    I think you are overcomplicating it. Look at how many millions, if not billions of spreadsheets that are in use to solve various problems. Each of those hard coded formulas in Excel are basically a black box with predefined inputs and outputs. What is lacking are the black boxes to control logic flow. But really, that would not be difficult at all.

    The biggest challenge is that such a model, when you get past the terminology, creates structured code versus today's paradigm of OOP. Obviously the predefined components are objects, but they don't have inheritance, and all of the other properties we take for granted now a days. Code generated this way could actually be fairly robust, but couldn't be inherited either so like in the old days, a lot of duplicate work would be involved for similar systems.

    From an end user perspective, though, that probably isn't an issue. Again, look at all of those spreadsheets, many of them quite sophisticated and used in ways that were never intended by the developers of Excel. Would a professional programmer use such a tool? Probably not, but then such a tool isn't actually designed for them.