Uyjhmn n

From Esolang
Jump to navigation Jump to search

Uyjhmn n is a programming language that was written in Visual J# 2005 by User:Truttle1. (Why Visual J#? Well... why not?) Uyjhmn n was designed to annoy the user by combining verbose syntax with a terrible looking IDE that rushes the user. It was named after the gibberish that gets typed when you bang your head on the keyboard out of frustration.

IDE

The painful IDE

All Uyjhmn n code must be written in the Uyjhmn n IDE. If you try to copy code from another IDE or a text file and paste it into the Uyjhmn n IDE, the IDE will simply close. The IDE features a white textbox where code is input. After the timer highlighted in cyan runs out, the top line of the white textbox is removed and it is added as a new line to the green textbox, which contains all previously typed code. The timer is then reset to 10 seconds. The text in the green textbox is in Webdings so you can't read it, and it is read only so you can't fix it. If the top line of the white textbox happens to be a bad command, it is not added to the green textbox, and the amount of time that the timer resets to gets divided by two to punish the user for writing an error. If the top line of the white textbox is empty, the program code currently in the green textbox is immediately interpreted. The IDE also features two radio buttons that do nothing, as well as a progress bar that constantly fills up and resets itself, but ultimately does nothing useful. Above the input box is a "JUST INTERPRET MY CODE ALREADY" button that allows you to quickly run your code at the expense of allowing you to copy it. Uyjhmn n code is displayed using a console that is built into the IDE.

NOTE

Even though PASTING CODE is disabled, you can still select and copy the code in the green textbox in case you want to use it later. (Even though you would need to re-type it)

Commands

Uyjhmn n features commands that are annoyingly verbose and usually don't fit in the tiny textbox you are allowed to use. They also need to be typed in all caps. Lowercase letters inside of square brackets (such as [a]) represent arguments that the user can specify.

Command Description
PRINT THE CHARACTER WITH THE ASCII VALUE [a] Prints the character with the ASCII value of [a] onto the console.
DECLARE THE NEW VARIABLE [a] Defines an integer named [a]. All variables in Uyjhmn n are integers. If two integers have the same name, only one will be usable, and the other will be unaccessable for all eternity.
OPEN THE VARIABLE [a] Sets [a] as the open variable. The open variable can have math operations performed on it, it can receive input, and it can output its value.
ASSIGN [c] TO THE OPEN VARIABLE Assigns the open variable to a constant integer value.
ADD [v] TO THE OPEN VARIABLE Adds [v] to the open variable. [v] must be another variable, not a constant.
MULTIPLY THE OPEN VARIABLE BY [v] Multiplies the open variable by [v]. [v] must be another variable, not a constant.
PRINT THE OPEN VARIABLE'S CHARACTER Prints the character with the ASCII value of the open variable onto the console.
PRINT THE OPEN VARIABLE'S VALUE Prints the open variable's numerical value onto the console.
DEFINE THE NEW LABEL [l] Defines a point that can be jumped to. (Because of course this language uses GOTO-like statements)
JUMP TO [l] IF [v0] IS EQUAL TO [v1] Jumps to label [l] if the values of variables [v0] and [v1] are equal.
JUMP TO [l] IF [v0] IS GREATER THAN [v1] Jumps to label [l] if the value of [v0] happens to be larger than [v1].
JUMP TO [l] IF [v0] IS LESS THAN [v1] Jumps to label [l] if the value of [v0] happens to be smaller than [v1].
GET INPUT AND STORE INTO OPEN VARIABLE AS A CHARACTER Receives a single character as input from the user and stores its ASCII value into the open variable.
GET INPUT AND STORE INTO OPEN VARIABLE AS A NUMBER Receives a numerical value as input from the user and stores its value into the open variable.
END THIS PROGRAM Self explanatory

Examples

Hello World

Here's a basic Hello World program. It outputs the phrase in all capital letters.

 PRINT THE CHARACTER WITH THE ASCII VALUE 72
 PRINT THE CHARACTER WITH THE ASCII VALUE 69
 PRINT THE CHARACTER WITH THE ASCII VALUE 76
 PRINT THE CHARACTER WITH THE ASCII VALUE 76
 PRINT THE CHARACTER WITH THE ASCII VALUE 79
 PRINT THE CHARACTER WITH THE ASCII VALUE 32
 PRINT THE CHARACTER WITH THE ASCII VALUE 87
 PRINT THE CHARACTER WITH THE ASCII VALUE 79
 PRINT THE CHARACTER WITH THE ASCII VALUE 82
 PRINT THE CHARACTER WITH THE ASCII VALUE 76
 PRINT THE CHARACTER WITH THE ASCII VALUE 68
 PRINT THE CHARACTER WITH THE ASCII VALUE 33
 END THIS PROGRAM

This is a shorter version using extern model:

USE: STRINGPRINT
PRINT THE STRING ``Hello, world!``
END THIS PROGRAM

Computational class

It is Turing-complete because you can compile ALWCIDFEC to it.

Initalization

DECLARE NEW VARIABLE X
DECLARE NEW VARIABLE Y
DECLARE NEW VARIABLE Z
DECLARE NEW VARIABLE 1
OPEN THE VARIABLE 1
ASSIGN 1 TO THE OPEN VARIABLE 
DECLARE NEW VARIABLE -1
OPEN THE VARIABLE -1
ASSIGN -1 TO THE OPEN VARIABLE 

Increment and Decrement

Increment first cell:

OPEN THE VARIABLE X
ADD 1 TO THE OPEN VARIABLE

Decrement first cell:

OPEN THE VARIABLE X
ADD -1 TO THE OPEN VARIABLE

Same for other cells, but replace OPEN THE VARIABLE X with OPEN THE VARIABLE Y for second cell and with OPEN THE VARIABLE Z for third cell.

Loops

Loops can be done with Labels.

Extensions

Extensions are optional extra features on Chasyxx's interpreter. They are not recommended for use as an esolang and only solely exist as a possibly somewhat controversial novelty. extended uyjhmn n may be named uyjhmn c.

Commands from current availible extensions are:

Command Description Extension
USE: [a] Adds an extension. It has been proven that Drexel will hate you for using this command. Uyjhmn c built in
PRINT THE STRING ``[a]`` Prints the string inside [a]. \e turns into ESC for ANSI formatting, and \r and \n also work. STRINGPRINT
CREATE THE VARIABLE [a] AS [b] Replaces declaring, opening, and assigning a default value to a variable with a single line of uyjhmn c code. QUICKVAR
PUT A RANDOM NUMBER BETWEEN [a] AND [b] INTO THE OPEN VARIABLE Self explanatory RANDOM

External Resources