Movement-Based mostly Programming, a approach for AI and people to develop collectively
I believe by now everyone studying this can have seen how the brand new era of Large Language Models like ChatGPT are capable of produce somewhat useful code. Like every advance in software program improvement—from IDEs to high-level languages—this has generated some dialogue on the longer term employment prospects in our area.
This made me take into consideration how these new instruments might match the world of Flow-Based Programming, a software program improvement approach I’ve been concerned with for fairly some time. In Movement-Based mostly Programming these is a really strict boundary between reusable “library code” (known as Parts) and the “utility logic” (known as the Graph).
Right here’s what the late J. Paul Morrison wrote on the topic in his seminal work, Movement-Based mostly Programming: A New Strategy to Utility Growth (2010):
Simply as within the preparation and consumption of meals there are the 2 roles of prepare dinner and diner, in FBP utility improvement there are two distinct roles: the part builder and the part person or utility designer.
…The applying designer builds functions utilizing already present parts, or the place passable ones don’t exist s/he’ll specify a brand new part, after which see about getting it constructed.
Remembering that passage made me marvel, might I get one of many LLMs to supply helpful NoFlo parts? Armed with New Bing, I got down to discover.
The primary try was specifying a reasonably easy part:
That truly appears fairly affordable! I additionally tried asking New Bing to make the part much less verbose, in addition to producing TypeScript and CoffeeScript variants of the identical. All appeared to supply workable issues! Certain, there could be some tidying to do, however this might take away quite a lot of the tedium of part creation.
Along with this trivial math part I used to be capable of generate some that to name exterior REST APIs and so forth. Bing was even capable of swap between HTTP libraries as requested.
What was even cooler was that it truly recommended to ask it learn how to check the part. Doing as I used to be advised, the outcome was fairly astonishing:
That’s fbp-spec! The declarative testing software we got here up with! Undoubtedly the nicest strategy to check NoFlo (or another FBP framework) parts.
Based mostly on my outcomes, you’ll positively wish to test the generated parts and exams earlier than operating them. However what you get out shouldn’t be dangerous in any respect.
I in fact additionally tried to get Bing to supply NoFlo graphs for me. That is the place it stumbled fairly a bit. Curiously the outcomes have been higher within the fbp language than within the JSON graph format. However possibly that much more enforces that the candy spot could be AI writing parts and a human creating the graphs that run these.
As I’m not working in the mean time, I don’t have a present use case for this fashion of collaborating. However I consider this may very well be an enormous productiveness booster for any (and particularly Movement-Based mostly) utility improvement, and anticipate to strive it in no matter my subsequent gig finally ends up being.
Illustrations: MidJourney, from immediate Robotic software program developer working with a software program architect. Floating flowcharts within the background