@everyone

From Esolang
Jump to navigation Jump to search

@everyone Is a esoteric programming language that looks like a bit like TMMLPTEALPAITAFNFAL (but with very obviously simpler syntax), but instead of having awkward syntax or execution, its just that you can only get every variable’s value on a global scale, the language also uses commands that look like they were taken from a discord server where everyone screams at each other, no humor intended.

When the program hits an error, whether that’d be a nonexistent command or an attempt to get just one variable’s value, instead of giving a detailed explanation of the mistake, it just returns “Dead chat”, though with a few other error messages for special occasions.

Due to the ability to only get every variable’s value fused together, it makes trying to make calculator style programs essentially impossible without specified terms, such as a calculator that only divides by 3. If you tried getting 5 and 91 from the user and attempted to access these variables, all you can get out of it is 591. This makes the language hard to use since you can only delete every variable if you even want to clear the value of @EVERYONE.

Commands

The commands in @everyone are as follows, for loops are not allowed since they end up defining a one time variable.:

@EVERYONE COMMANDS!!!
Command Function
HI EVERYONE Program always starts here
BY THE WAY YALL, [comment] Marks the rest of the line as a comment.
@[var name] YOU ARE NOW OFFICIALLY [value] Set [var name]'s value to [value], if not defined just defines it, otherwise, change
@EVERYONE Fills in for every single variable's value, there is no other way to access variables. Note that just writing @EVERYONE doesn't print the value.
@EVERYONE SPEAK Print EVERY variable's value in order of assigned
UHH SO [string] Print string, adds newline
SOMEONE FIND AN ASCII TABLE AND TELL ME WHAT [ascii value] IS Prints the character with the ascii value [ascii value] without printing a new line.
OOPS I KILLED CHAT Returns an error, why
ADD [number] [number] [var] Adds the numbers, if you put @EVERYONE instead of a number, attempt to add with @EVERYONE being every variable's value in order of assigned, if var is included, store answer into var. Otherwise, stores nowhere and is usable for only the second part of a conditional.
SUB/MULT/INTDIV/TRUEDIV/MOD/EXP [number] [number] [var] Same rules as ADD, but with the respective operations. (TRUEDIV does normal division, INTDIV does integer division.)
GO DM @[var name] Gets input and stores into [var name], if already exists, just update value
I HATE NEWLINES, WHOEVERS POSTING NEXT Makes a newline not be printed after the next print statement, if the next command isn’t a print statement, dead chat is returned.
IGNORE THAT VVVVV Negates a conditional if the next message is one, otherwise, dead chat is returned
@EVERYONE YALL CAN STOP Delete every variable.
STOP POSTING MEMES Define boundaries of the WHILE/IF statements. The same can be done by using NOT PAST HERE
WHILE @EVERYONE FINALLY IS [number/string] Does the stuff between WHILE and NOT PAST HERE while @EVERYONE IS [number/string]
IF @EVERYONE FINALLY IS [number/string] THEN Does the stuff between WHILE and NOT PAST HERE if @EVERYONE IS [number/string]
SO IF THAT WASNT TRUE Acts like an else statement
JUST MAKE SURE THAT @EVERYONE IS [value] Skips the code in an if statement if the the condition is not met. This also works if the next line isn't a conditional, in which it just doesn't run a line.
NEXT PERSON TO POST IS MAKING A CHANNEL CALLED #[label] Labels the next line with [label]
GO TO #[label] Goes to the line with label [label]
GO BACK TO #GENERAL Ends a subroutine
GO TO #[label] BEFORE I DELETE THE CHANNEL Goes to the line with label [label] and does a subroutine.
GTG SRRY End program when reached, program never terminates otherwise.

Note that for the WHILE and IF statements, replacing @EVERYONE with anything else causes “dead chat” to be returned. Due to this, making a FizzBuzz program is probably next to impossible without deleting everything, but since you can only delete everything you won’t preserve the old value (gosh), There are also no FOR loops since that technically assigns an extra variable, which breaks the rules of @everyone.

As for adding comments, you can also add “~” to the beginning of your comment. Like:

~I am a comment!

@Everyone in action

@everyone is equal to every variable’s value fused together, the order of which is determined by first assigned a value to last.

For example:

@X YOU ARE NOW OFFICIALLY Hel
@Y YOU ARE NOW OFFICIALLY lo Wo
@Z YOU ARE NOW OFFICIALLY rld!
@EVERYONE SPEAK

Would output:

Hello World!

(Yes, thats how you can augment your program’s output or maybe your password?)

Also, this is a thing:

@X YOU ARE NOW OFFICIALLY Hel
@EVERYONE SPEAK
@Y YOU ARE NOW OFFICIALLY lo Wo
@Z YOU ARE NOW OFFICIALLY rld!

Still outputs:

Hello World!

Basic examples

(If you understand syntax better, feel free to correct if needed) Also this section if a definite stub, I don’t know how to describe the weirdness of having to call EVERY variable. It’s really hard especially on a global scale.

Hello World

Mission statement: print “Hello World”

HI EVERYONE
UHH SO HELLO WORLD!
GTG SRRY

Truth Machine

You know.

HI EVERYONE
GO DM @input
IF @EVERYONE FINALLY IS 0 THEN
 UH SO 0
SO IF THAT WASNT TRUE
 WHILE @EVERYONE FINALLY IS 1
  I HATE NEWLINES, WHOEVERS POSTING NEXT
  UH SO 1
 STOP POSTING MEMES
STOP POSTING MEMES
GTG SRRY

99 Bottles of Beer

Untested because I couldn't figure out the interpreter

HI EVERYONE
@JOEBIDEN YOU ARE NOW OFFICIALLY 99
NEXT PERSON TO POST IS MAKING A CHANNEL CALLED #IDIOTS
I HATE NEWLINES, WHOEVERS POSTING NEXT
@EVERYONE SPEAK
UHH SO  bottles of beer on the wall,
I HATE NEWLINES, WHOEVERS POSTING NEXT
@EVERYONE SPEAK
UHH SO  bottles of beer,
UHH SO Take one down, pass it around
SUB @EVERYONE 1 @JOEBIDEN
I HATE NEWLINES, WHOEVERS POSTING NEXT
@EVERYONE SPEAK
UHH SO  bottles of beer on the wall,
UHH SO
IF @EVERYONE FINALLY IS 2
 UHH SO 2 bottles of beer on the wall,
 UHH SO 2 bottles of beer,
 UHH SO Take one down, pass it around,
 UHH SO 1 bottle of beer on the wall.
 UHH SO
 UHH SO 1 bottle of beer on the wall,
 UHH SO 1 bottle of beer,
 UHH SO Take one down, pass it around,
 UHH SO No bottle of beers on the wall
 GTG SRRY
SO IF THAT WASNT TRUE
 GO TO #IDIOTS
STOP POSTING MEMES

I’d be making a FizzBuzz program but again, replacing the @EVERYONE in a WHILE or IF state causes dead chat so I can’t get around not using another variable. I don’t even know anymore. Also a 99 Bottles of beer is possible but really awkward. I dont feel like taking down that can of worms anytime too soon

Yea seeing that Im pretty damn sure it’s not Turing complete. But I put Unknown for the category cause I don’t feel like proving it

Dead chat/Errors

To further make the programming language painful, when an error is encountered, all the program returns is “Dead chat”, this way the programmer is unable to get any info on what when wrong entirely based on the error message. Here is a list of all the possible errors, which EVERY single one outputting "Dead chat":

  • Everything that would return an error in any normal language.
  • Attempting to replace @EVERYONE with a variables name (i.e. @input Does not work and results in dead chat).
  • Ending a subroutine when you haven’t started one yet.
  • Trying to assign the same label to two lines.
  • Trying to go to a nonexistent label.
  • An Infinite loop after 16777216 iterations
  • Trying to remove the newline for the next print statement if the next statement isn’t a print statement
  • Trying to negate the conditional for the next WHILE or IF statement if the next statement doesn’t have a conditional.
  • Else statements without an If statement.
  • Going to the exact line the Go to is on 16777216 times. Or any recursion type thing.
  • Using integer values that overflow a 64 bit integer (There are no floating point numbers except for the answers to TRUEDIV.)
  • Trying to subtract or multiply/divide strings. Adding strings fuses them together!!!!

For example:

HI EVERYONE
IGNORE THAT VVVVV
UHH SO This should break
GTG SRRY

Would return:

Dead chat.

Note that there are some special cases where the error message isn't just "dead chat.", they are listed here:

  • Program has no starting point (Returns: Did you ever even log on?)
  • Program has no ending point (Returns: You must be quite a night owl.)
  • Having @EVERYONE be an number out of the range [-1e303,1e303] (Returns: Everyone online hates large numbers, don't force them.)
  • Printing over 16777216 times (Returns: You officially just lit the servers on fire.)
  • The compiler breaks but the code has no other errors. (Returns: Sometimes you should get the right installation for this application.)
  • It takes longer than 1 minute to finish the program. (Returns: Everyone has died of boredom.)
  • You are not connected to the internet when running the program. (Returns: Your message could not be sent.)

For example:

SO UHH IM NOT EVEN ONLINE
GTG SRRY

Would return:

Did you ever even log on?

Implementations

A Python interpreter is available at https://github.com/raptor494/-everyone

Computational Class

Surprisingly, @everyone could be Turing Complete as it can simulate a 1 register Minsky machine. The main issue is that integers are bounded. I don't know what to call that so I'm just going to keep it as unknown for now. The beginning must be

HI EVERYONE
@R YOU ARE NOW OFFICIALLY 0

and the end must be GTG SRRY. Multiplying by a constant requires just one MULT instruction: *x = MULT @EVERYONE <x> R . Dividing requires a few more.

/x = 

TRUEDIV @EVERYONE <x> R
IF @EVERYONE FINALLY IS INTDIV @EVERYONE <x> THEN
GO TO <label where line x was placed>
NOT PAST HERE
MULT @EVERYONE <x> R

If division needs y replace the x in the third line with y.