Ok, so you probably heard aboutOpenAI's chatbot. It's the most advanced chatbot created so far. It can help people with LaTeX questions, find bugs in code or solve code challenges.
What I tried for this post is something different. I instructed ChatGPT to create a programming language for me and become the interpreter for that programming language.
I took the idea and a few useful instructions from this blog post.
Let's start simple
I started instructing the bot to create a simple language with an instruction to print. Also, it has to act as the interpreter of that language. To keep communicating with the bot I added a special format with slashes and quotes. Here's the result:
If you want to use my prompt, here it is
I want you to create a new programming language. It has to provide only an instruction for printing something to screen. I want you to explain to me how to use it in a concise way. After that, you will become an interpreter of that language. Answer with the execution result inside one unique code block, and nothing else. Only write explanations if the code contains errors. When I need to tell you something in English, I will put text inside forward slashes and double quotes /"like this"/.
Ok, looks good so far. Let's try the interpreter.
It looks like it worked!
Adding functionality to the programming language
Let's try to add some more functionality to our new programming language.
Variables
Ok, using the slashes and quotes format I'll try to add variables to the programming language.
Again, looks promising, let's try the interpreter.
Arithmetic operators
Now, the same thing but with arithmetic operators.
Now that we know how to use it, let's try it:
Logic operators
Now, I'll try to add logic operators to the language, but without instructing first about data types or anything else:
I haven't talked about conditionals or flow control structures, but it added the ternary operator when asked to include logic operators. It may mean that GPT already "knows" the language, just telling me how to use every piece of it when I ask.
Let's try these new operators:
If statement
I don't want to bias the bot so I won't ask it to add if
structure. Instead, I'll ask for a flow control structure for branching based on condition:
Well... exactly what I had in mind... Testing time!
Comparison operators
I almost forgot about a crucial part of a programming language, the comparison operators!! Let's add them to our language.
Ok, now let's see how it behaves:
Looping
Again, for not biasing the bot, I'll ask for structures to loop or iterate.
Ok, so it added a classic for loop as well as a while loop...
Hmmm... and what if I try to run an infinite loop?
It detects it and prevents me from running it!
Functions
The next step is to add functions to our new programming language.
Wow, we also can return multiple values and unpack them...
Utility functions
Let's see if we can create some "global" utility functions to make our life easier.
Let's try to generate some random numbers:
And if we try to add a function to get the current date?
Let's do a little test:
So GPT knows which day it is, but not which time. Interesting.
Interact with the underlying OS
It already warns me about the shell
function but, of course, I'll try to mess up to see if we can figure out something.
For the first time, it included an explanation along with the output, even though there are no errors. Also, the waning message is there again.
Let's keep testing.
For some reason, it explains the command instead of executing it. Maybe because it knows that the output won't be the same every time?
Did it really create the file? Or is it just "assuming" what would happen...
Apparently, it created it... Let's do another test for getting the contents of the root directory.
Hmmm, is the same output as the previous example but with the test dir...
Nope, it doesn't exist...
Ok, enough messing with the underlying OS.
Some advanced features
Would GPT be able to add pointers to our language?
So... we have pointers now!
Naming the language
Nice, I like Assistant Language, let's use it!
Would it be able to implement something in this language?
Not the most efficient version, but definitely in Assistant Language. Let's test it:
It actually works!
Wrap it up and provide an interpreter
I want the bot to generate a document with the language specification as well as an interpreter implemented, for example, in Python. Let's try!
You can see the full README here.
And finally... the interpreter.
It implemented an interpreter that supports only "let" and "print" statements... Let's see if I can get something more complete.
This looks way better! We don't have pointers, but it seems that everything else is supported.
You have all the code available here.
I hope more people try something like this and see how far it can get in adding functionality to the language!
Top comments (2)
That is scarily good. I thought at first that it was mostly copying from other languages, but the end result seems quite unique. Then when it wrote a real interpreter (making this language people could actually use if they wanted to), my jaw hit the floor!
Agreed! Exciting things ahead!