One of the most enduring ways to present software tools is through command line interfaces (CLIs). They are the bread-and-butter of most scientific computing and core software tools such as Git are built around them. CLIs have, over the years, converged on a pseudogrammatical style consisting of the following components:
For example, with Git, the main entry point is the literal git
followed by either a verb or noun, several options including the object to be acted upon. Here are some actual examples.
To add a file to be tracked by Git we use the add
verb then specify the file(s) to be added.
git add file.txt
Once the file is added, you can commit it Git using the commit
verb, which by default commits all the files recently added.
git commit file.txt -m "A message to describe this commit"
Another powerful tool which also follows a pseudo-grammatical format of its commands is Spack, which is used to avail various software applications on a cluster in a non-contentious way. The main entry point is module
followed by a verb such as load
, avail
, purge
, unload
, switch
followed by the object to be acted upon. For example:
module avail python module load python/3.10.10 module unload python/3.10.10 module switch python/3.10.10 python/3.7.0 module purge # all modules will be unloaded
Well... enough with pseudo-grammatical CLIs! Isn't it time to exploit natural language mediated by an AI agent? In this way, the user will use their natural language and chat their way to functionality.
what modules are available?
Furthermore, the ability of the AI agent to maintain context will then allow something like this:
show me those for python
If the AI agent knows about the relevance of individual versions of applications then:
load the one compatible with <prog> # replace python3.10 with python3.7
And finally:
purge everything
Notice that the entry point is only mentioned once and sets the context. This is similar to running everything in a decidated shell but with the added benefit that you can use pronouns (those) or plain verbs (purge) and implied tasks (the one compatible).
I believe this is the future of computing: meeting people right where they are, with natural language interfaces.