this post was submitted on 02 Jun 2023
2 points (100.0% liked)

Programming

3347 readers
1 users here now

All things programming and coding related. Subcommunity of Technology.


This community's icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.

founded 1 year ago
MODERATORS
 

Do you think they can be powerful enough to build production-grade applications some day or are they going to stay as educational tools or build into specific applications forever?

top 7 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 1 year ago

I loved teaching Scratch. And I've written about DRAKON - https://shkspr.mobi/blog/2023/04/why-arent-there-more-visual-programming-languages-an-ode-to-drakon/

I think they're useful for building algorithms. But the tools themselves aren't powerful enough for anything too complicated. I hope that changes though!

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago) (1 children)

I've tried some and it's less powerful, annoying, you need proprietary tools because showing graphics is way more difficult to do than writing a parser, and you can't store your "source code" or show diffs and commit your modifications. So, unless I see one which is free and open-source and good, I don't really believe it will happen.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago)

I felt the same. I am working on a new visual programming language (will be making it open-source) as a side project to kill time. I want it to be able to write any generic code. But I suck at front-end development so I was wondering if anyone would be interested in collaborating.

What I'm building can't show diffs or do commits (yet, these are good ideas), but you can extract the source code, share it and run it somewhere else.

The current state of the project is

  • It supports Int, String, Float, and Bool types
  • Arithmetic operations are supported
  • Variables can be assigned and used I am currently working on implementing Lists and Flow control (if/else and loops)

My vision(?) for this is to be a good place to learn and continue programming while also making it easy for the user to transition to a normal programming language like Java or Python. For the latter I am trying to achieve this by using very similar and in most cases, the exact same terminology and concepts for the design of the language.

I don't have a UI yet, but this is what the API call and the exported source code will look like

[
  {
    "description": "a = Int",
    "type": "Assignment",
    "name": "a",
    "value": {
      "type": "Int",
      "value": 30
    }
  },
  {
    "description": "b = Int",
    "type": "Assignment",
    "name": "b",
    "value": {
      "type": "Int",
      "value": 40
    }
  },
  {
    "description": "a + b",
    "type": "Plus",
    "left": {
      "type": "DefinedVariable",
      "name": "a"
    },
    "right": {
      "type": "DefinedVariable",
      "name": "b"
    }
  }
]
[–] [email protected] 1 points 1 year ago

There are other ways to structure and edit programs than just a bunch of source files that we manually edit through a text editor. For instance image files as in Smalltalk. I don't see any reason why a visual representation couldn't succeed in this regard. The issue, imo, is that text is really nice to work with, and it would require a very nice visual editing experience to beat the text based tools we have today.

[–] TitanLaGrange 1 points 1 year ago

My intro to visual programming was back in about 1993 with Adobe Authorware, which had it's final release in 2003. I've used a few tools since then, most recently GNU Radio and Apache NiFi

It's always been a frustrating experience for me, although in the case of GNU Radio and Apache NiFi that is probably largely due to lack of time with the tools. If I had more time to spend really learning how to use it properly an environment like NiFi would be rewarding. Even in the limited time I've spent with it I found it fairly easy to work with, it was just difficult to understand how to apply it effectively.

GNU Radio and NiFi are both pretty narrowly focused on their areas (DSP and DTL, respectively) and I think that is part of what makes them good tools. My guess would be that visual paradigms are probably pretty good for domain-specific tools where it is easier to define useful high level blocks, and not so good for general purpose coding where each individual component is fairly low level.

It's also a bit annoying to have to navigate with the mouse constantly, but that's probably more of a UI refinement issue than anything fundamental to visual tools.

Someone should do a visual programming tool with a VR headset so the code can be 3D and navigated with hand gestures. We could create new and perverse spaghetti code!

[–] [email protected] 1 points 1 year ago

It’s not that they aren’t powerful enough - they are Turing complete and so can compute anything computable. But text-based programming tools have many many many many helper tools that we’ve developed over decades. Text-based programming is also more information-dense on the screen so it’s easier to keep references up to different parts of the code. Finally - it’s just a matter of adaptation - the reason keys on your keyboard are in layout they are is because 100+ year old typewriters used to get stuck more often with different layouts. And since text-based programming is an industry standard - I doubt it’ll change anytime soon.

[–] [email protected] 1 points 1 year ago

I work with something like this on a day-to-day basis. We make and production API endpoints on microservives using a largely click, drag, and fillout options style UI, using a functional language of thiers to transform data, this is all written to XML which is consumed by their engine to create a Java application that deploys into their cloud environment. We can also add custom written Java to fill in a few gaps here and there.

It's good for what it does, making creating API and consuming a variety of data easy. It does allow us to get down to business and start working with the design of the endpoints and manipulating the data off the bat. It's only good at that though, it wouldn't be any good at doing ML or creating an OS or writing a web browser Even with the stuff it's good at, you can feel the limitations as soon as any real logic complexity is involved and it starts to cumbersome quickly.

And I think that's where those kind of "languages" will excel, it does this one thing that's tedious with a lot of nittygritty boilerplate under the hood but that's not too hard logic-wise well but that's probably about it.

load more comments
view more: next ›