Live data from Hacker News

Full Metal Jacket: A visual dataflow language (2016)

fmjlang.co.uk

41–50 of 57 posts

Re: Full Metal Jacket: A visual dataflow language (2016)

#41
post #6

I have seen visual dataflow languages and even worked on some of them. They usually work better in specific domains like stream processing, control systems, signal processing and such. Even then, once a "program" gets complex it can get tangled fast. A node with 3000 edges starts to look messy. There are some things you can do to fix it but then you just kind of wish to use a simple script. As for general computing,…

> Even then, once a "program" gets complex it can get tangled fast.

In my experience with both visual and textual languages, the same happens in textual languages too, except we’re trained to use software engineering principles to attempt to manage the complexity (to varying levels of success). In my (somewhat limited) experience with visual languages, if you apply those same principles (especially some of the OO ones like encapsulation) and factor things into their own functions/nodes, it’s manageable too. Whether better or worse than textual probably depends on the use case and persons comfort level with either type of language and in practice most visual code I’ve seen was not written by a programmer and therefore the author did not know the software engineering principles that would have helped keep their code manageable.

Re: Full Metal Jacket: A visual dataflow language (2016)

#42
Looks like Labview. Nobody who has used Labview would try to recreate it.

One of the main problems I find with these type of systems, is that although you can add comments and maybe even organise your diagrams nicely, it is such a pain to do that nobody does. You always end up with literal spaghetti code with zero comments.

Re: Full Metal Jacket: A visual dataflow language (2016)

#43
post #6

I have seen visual dataflow languages and even worked on some of them. They usually work better in specific domains like stream processing, control systems, signal processing and such. Even then, once a "program" gets complex it can get tangled fast. A node with 3000 edges starts to look messy. There are some things you can do to fix it but then you just kind of wish to use a simple script. As for general computing,…

> A node with 3000 edges starts to look messy. There are some things you can do to fix it but then you just kind of wish to use a simple script.

A text-based function with 3000 lines starts to look messy, too. That's purely a function of size, not building materials.

The analogous solution to "a simple script" is "a simple graph", i.e., abstraction.

Re: Full Metal Jacket: A visual dataflow language (2016)

#44
post #9

Considering that I spend at least 30% of my work time in the command line I really have some doubts about these "text is obsolete" ideas.

I spend at least 30% of my time in the command line, but at least 90% of that time using it to parse complex formats before I can do what I really want to do with my data -- or fake it (e.g., plain grep on structured data, because properly parsing it is not well supported by any tools yet).

That doesn't tell me text is dead. It tells me text is the best we've got so far, and we're desperate for something better.

When a C=64 was the only computer I had, I spent most of my time writing assembly language. That wasn't evidence that assembly language was the way to go. I just had insufficient perspective, from having to use insufficient tools.

Re: Full Metal Jacket: A visual dataflow language (2016)

#45
There's one thing here I strongly agree with:

> There is no point developing new programming languages unless they're radically different from existing languages.

95% of the time, any language from the past few decades would work fine for what I'm doing, and I run into far more problems from languages changing than from languages lacking features. (Python 3 is the poster child for this right now, but I don't think it's even the worst offender.) One of my favorite languages is Common Lisp, and that hasn't changed since the 1980's.

There's also something here I strongly disagree with:

> Programs are composed almost entirely with the mouse rather than keyboard, and type inference and other checks take place while you edit your program.

If there's one thing that's true of all programmers today, on any platform, it's that they love their keyboards. You'll never get anywhere trying to get them to edit a program with just their mouse. Graphical programming languages are cool, but they need to incorporate keyboard editing. Like any IDE, you should be able to work with a mouse, but not required to. Put "graphical representation" and "mouse-only editing" in the same boat and the latter will sink the former.

I've known a couple programmers who hooked up foot pedals to their editors. I know nobody who's ever written programs with just a mouse. So based on my experience, you're going to have a tougher time selling anyone on this than if you'd made a programming language which required you to use your feet.

Re: Full Metal Jacket: A visual dataflow language (2016)

#46
post #29

Earlier quoted context omitted.

I'm curious how Ballerina avoids (or does it?) this problem mentioned in another comment: >once a "program" gets complex it can get tangled fast. A node with 3000 edges starts to look messy.

That wouldn't be messier than a textual function making 3000 function calls, or accepting 3000 parameters. The way you handle this complexity should be the same in both cases: creating abstractions that bundle together related items, hiding the details on a lower layer and exposing only the general ideas at the outer level. Unfortunately, visual languages tend to be quite poor at abstraction. We've been developing an…

> Unfortunately, visual languages tend to be quite poor at abstraction

It's not as simple as that. Visual languages tend to be very good at portraying a fairly large subset of abstractions - loosely speaking, many and perhaps most abstractions that you'd want to model using category theory are almost inherently "visual" - and just not very helpful at portraying others. I think the answer is a tighter integration of textual and visual "modes" on the same codebase, rather than just using visual for everything no matter what.

Re: Full Metal Jacket: A visual dataflow language (2016)

#47
post #43
post #6

I have seen visual dataflow languages and even worked on some of them. They usually work better in specific domains like stream processing, control systems, signal processing and such. Even then, once a "program" gets complex it can get tangled fast. A node with 3000 edges starts to look messy. There are some things you can do to fix it but then you just kind of wish to use a simple script. As for general computing,…

> A node with 3000 edges starts to look messy. There are some things you can do to fix it but then you just kind of wish to use a simple script. A text-based function with 3000 lines starts to look messy, too. That's purely a function of size, not building materials. The analogous solution to "a simple script" is "a simple graph", i.e., abstraction.

> The analogous solution to "a simple script" is "a simple graph", i.e., abstraction.

Right and abstraction is exactly what doesn't work well with visual languages.

With a script you can do a for loop from 1 to 3000. With 3000 components connected to one node in a visual language there is not obvious facility to handle it. You can think of group functions in components/namespaces/folder maybe. Or say generate implicit connections where they are not really drawn on the screen.

Re: Full Metal Jacket: A visual dataflow language (2016)

#48
post #6

I have seen visual dataflow languages and even worked on some of them. They usually work better in specific domains like stream processing, control systems, signal processing and such. Even then, once a "program" gets complex it can get tangled fast. A node with 3000 edges starts to look messy. There are some things you can do to fix it but then you just kind of wish to use a simple script. As for general computing,…

> Even then, once a "program" gets complex it can get tangled fast. In my experience with both visual and textual languages, the same happens in textual languages too, except we’re trained to use software engineering principles to attempt to manage the complexity (to varying levels of success). In my (somewhat limited) experience with visual languages, if you apply those same principles (especially some of the OO one…

> except we’re trained to use software engineering principles to attempt to manage the complexity

Yeah good point. I think visual languages are often used by people who haven't had experience with software engineering, and that's fine, it's one of their main selling points.

But think there is a general limitation when abstracting connection between nodes. In a programming languages, one could for example do a loop and connect an array of a thousand structs to point to some pointer. In a visual language it would be drawing thousands of connections/wires by hand between nodes. So visual languages in a way hit an abstraction ceiling if you will. In some domains it doesn't matter and there are a few trick around it, so there is room for such languages, but I am pessimistic about a general approach.

Re: Full Metal Jacket: A visual dataflow language (2016)

#49
post #34
post #5

Earlier quoted context omitted.

Would you consider Microsoft Excel a visual language?

I'm going to say 'yes'. It's a good question and I think Excel qualifies even though in normal use Excel shows the data but not really the logic / formulas etc.

Excel succeeds at its job so thoroughly that I think people fail to realize (or cope with the realization) that spreadsheets are probably the most successful democratized programming environment we have. It may not have been intentional, but the 2D grid representation for data interlaced with an acyclic dependency graph is by far superior to any alternative representation, visual or otherwise, I can think of for either of those concepts.

Users don't even think about graphs or data, often they don't even understand those terms. Due to this IMHO spreadsheets are pretty much peak computer science

Re: Full Metal Jacket: A visual dataflow language (2016)

#50
post #6

I have seen visual dataflow languages and even worked on some of them. They usually work better in specific domains like stream processing, control systems, signal processing and such. Even then, once a "program" gets complex it can get tangled fast. A node with 3000 edges starts to look messy. There are some things you can do to fix it but then you just kind of wish to use a simple script. As for general computing,…

You may find this interesting: someone using DRAKON to model and simulate the 6502 CPU at the transistor level. He is, not surprisingly, Russian: http://forum.6502.org/viewtopic.php?f=8&t=2208 (Russian) video: https://www.youtube.com/watch?v=43zPp01i6So

Thank you, that was neat. I speak Russian and it was fascinating to watch someone build software in DRAKON.
Post reply on HN