Graph Oriented Fictional Computer

From Esolang
Jump to navigation Jump to search
Graph Oriented Fictional Computer
Designed by Andriy
Appeared in 2023
Computational class Turing-complete
Major implementations itch.io download link
Dialects None
File extension(s) txt

Graph Oriented fictional computer is a fictional computer with a graph-based memory as opposed to a linear one. It was designed by User:Andriy who also implemented an emulator in Java. Each node is referred to by a capital English letter, and each node can have up to 26 child nodes which are also referred as a capital English letter. In the context of this fictional computer, the address of a node refers to the path you have to go through in order to reach it. For example child C of child B of node A is a node with the address ABC. Using the command redirect, it's possible for a node to have multiple correct addresses. Each node can store a one byte value. However, values that take larger space can also be stored by utilizing the child node C, then CC, and so on. It's possible to store strings, 8 bit integers which can be stored as big endian or as little endian, and fractions (like double variables in Java).

GraphAddress.png

This fictional computer can be considered as having one esoteric programming language or two closely related ones. The first one consists of the commands typed into the command line of the fictional computer. The second one utilizes the graph to store the code in it. The first instruction is stores in node I, and the parameters are stored in children nodes A, B, ... of the node with the instruction. With the exception of conditions, the next instruction will be executed from child I. If the instruction is a condition, the code will branch out depending on the condition. If the child node which is meant to store the next instruction doesn't exist, the fictional computer will interpret it as if it has reached the end of the code, halt execution and return control to the user. The program is able to modify any part of the graph, including the part of the graph where the code is stored, making it self-modifying code.

In order to build a graph containing the code of the second esoteric programming language, you need to use commands from the first one. However, typing many commands can be exhausting, especially if you made a mistake somewhere, which is why it's recommended to type all the commands in a txt file, and run the jar file in the shell of your computer with the txt file as a parameter. Once you are done building the graph with the code, the command RUN will execute it.

You can use the commands HELP and MAN to get useful information about the fictional computer. The command HELP will explain how the fictional computer works, while the command MAN will give a list of instructions. All instructions that can be typed in the command line are written by all-caps, while all commands that can be included in the graph are numbered. In the context of this fictional computer, a node containing a command means a node containing a byte value corresponding to that of the command. The parameters are stored as strings. If you want to read useful information about a certain command, you can type MAN followed by the number of that command, or it's name. for example MAN GET, and MAN 2 will both print out useful information about the command GET.