We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END
- This is still a work in progress. It may be changed in the future.
IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END is a stupid esolang by User:raiseafloppafan7741 in 2025 based on uppercase keywords in programming languages such as COBOL and Fortran, and in general naming conventions such as TitleCase (PascalCase), camelCase, snake_case, SCREAMING_SNAKE_CASE, and kebab-case. Despite the name however, the language has very little to do with those, or anything coherent really.
Features
This language his based on awarding/deducting points to different naming convention styles. There are 7 styles which function as integer accumulators: UPPERCASE KEYWORDS, lowercase keywords, TitleCaseNames, camelCaseNames, snake_case_names, SCREAMING_SNAKE_CASE_NAMES, and kebab-case-names.. They are of unspecified size, but they are signed and the size (in bits) of the accumulators is initially stored in snake_case_names, and if it is unbounded then the value is -1.
Points can be awarded to a style with AWARD POINT TO [style] and deducted from a style with DEDUCT POINT FROM [style].
The only form of control is GOTO, which in the eyes of some automatically makes this language horrible. GOTO statements are of the form:
GOTO [LABEL]
Or using a style as a line number starting from 0:
GOTO [style]
Conditional form
GOTO [LABEL|VARIABLE] IF [VARIABLE 1] [>|>=|=|<=|<] [VARIABLE 2]
Jumping to a non-existent address or label halts the program.
Labels are just
LABEL [label name]
The label name may be any style or even mixed styles, so long as it doesn't contain a space character. They can also be used as comments.
The twister operation is just this monstrosity
TWIST [A] WITH [B]
Which results in a value
Where results in 1 if is less than or equal to 1.
USE BEST KEYWORDS prints the accumulator with the largest value as a byte.
DIE ends a program.
Ironically despite the name, this language has no if-else statements.
Computational class
If the accumulators are unbounded, then one could (almost) trivially translate a program for a 2-register Minsky machine to IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END. Otherwise, the language is a finite-state automaton.
The program can be started with this, which makes sure that the accumulators are of unbounded size, then resets UPPERCASE KEYWORDS:
DEDUCT POINT FROM UPPERCASE KEYWORDS GOTO start_minsky_machine IF snake_case_names == UPPERCASE KEYWORDS DIE LABEL start_minsky_machine AWARD POINT TO UPPERCASE KEYWORDS
After this part, the initial state for both registers in UPPERCASE KEYWORDS and lowercase keywords can be loaded in.
Incrementing the first register would look like this:
LABEL [state name] AWARD POINT TO UPPERCASE KEYWORDS GOTO [next state]
Jumping if the first register is zero else decrement it would look like this:
LABEL [state name] GOTO [zero state] IF UPPERCASE KEYWORDS == snake_case_names DEDUCT POINT FROM UPPERCASE KEYWORDS GOTO [next state]
Incrementing the second register would look like this:
LABEL [state name] AWARD POINT TO lowercase keywords GOTO [next state]
Jumping if the second register is zero else decrement it would look like this:
LABEL [state name] GOTO [zero state] IF lowercase keywords == snake_case_names DEDUCT POINT FROM lowercase keywords GOTO [nonzero state]
And after the body of the program goes the ending state:
LABEL [end state] DIE
Since Minsky machines with at least two registers are Turing-complete, IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END is Turing-complete as well.
Examples
Infinite loop
GOTO TitleCaseNames
This works as this is on line 0 and the accumulators (except for snake_case_names) are all initialized to zero.
Looping counter
AWARD POINT TO kebab-case-names GOTO snake_case_names
Truth-machine
Since IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END has no input, the input is pre-loaded into UPPERCASE KEYWORDS. This one only accepts numeric 1 and rejects everything else and outputs raw binary instead of ASCII. Output does not work properly if UPPERCASE KEYWORDS is negative, as the value of lowercase keywords is printed instead.
AWARD POINT TO lowercase keywords LABEL truth DEDUCT POINT FROM lowercase keywords USE BEST KEYWORDS AWARD POINT TO lowercase keywords GOTO truth IF UPPERCASE KEYWORDS == lowercase keywords DIE
XKCD Random Number
AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO TitleCaseNames AWARD POINT TO TitleCaseNames TWIST UPPERCASE KEYWORDS WITH TitleCaseNames TWIST UPPERCASE KEYWORDS WITH TitleCaseNames DEDUCT POINT FROM TitleCaseNames TWIST UPPERCASE KEYWORDS WITH TitleCaseNames DEDUCT POINT FROM UPPERCASE KEYWORDS DEDUCT POINT FROM UPPERCASE KEYWORDS DEDUCT POINT FROM UPPERCASE KEYWORDS USE BEST KEYWORDS DIE
Subtraction program (Minsky machine)
This uses the translation from a 2-register Minsky machine in the Computational class section above. In this example program, we are calculating 7 - 3. Indentation is added for readability, but has no effect on the code.
DEDUCT POINT FROM UPPERCASE KEYWORDS GOTO start_minsky_machine IF snake_case_names == UPPERCASE KEYWORDS DIE LABEL start_minsky_machine AWARD POINT TO UPPERCASE KEYWORDS LABEL input_a_7 AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO UPPERCASE KEYWORDS AWARD POINT TO UPPERCASE KEYWORDS LABEL input_b_3 AWARD POINT TO lowercase keywords AWARD POINT TO lowercase keywords AWARD POINT TO lowercase keywords LABEL state1 GOTO state4 IF lowercase keywords == TitleCaseNames DEDUCT POINT FROM lowercase keywords LABEL state2 GOTO state3 IF UPPERCASE KEYWORDS == TitleCaseNames DEDUCT POINT FROM UPPERCASE KEYWORDS GOTO state1 LABEL state3 AWARD POINT TO lowercase keywords LABEL state4 DIE
A+B Problem
The inputs must be preloaded in UPPERCASE KEYWORDS and lowercase keywords, with the result being stored in the former. It accepts negative integers as well.
GOTO add_negative IF lowercase keywords < TitleCaseNames LABEL add_positive GOTO end IF lowercase keywords == TitleCaseNames AWARD POINT TO UPPERCASE KEYWORDS DEDUCT POINT FROM lowercase keywords GOTO add_positive LABEL add_negative GOTO end IF lowercase keywords == TitleCaseNames DEDUCT POINT FROM UPPERCASE KEYWORDS AWARD POINT TO lowercase keywords GOTO add_negative LABEL end DIE