top 200 commentsshow 500

[–]Inn0ve 3102 points3103 points  (127 children)

No protected variable names. You can call a variable "for". A for loop will only work if there are no prior definition for for.

[–]tilcica 1209 points1210 points  (64 children)

or the other way around. variables can only be single characters of the english alphabet and you have to define them in alphabetic order

[–]troelsbjerre 553 points554 points  (50 children)

Automatically enforcing this abomination: Variables are automatically named as suggested above, with each assignment declaring a new variable. If you add a new assignment in the beginning of your code, you most likely have to change all references to later assigned variables.

[–]coldnebo 659 points660 points  (36 children)

wait, I’ve got one: syntactic whitespace for variable assignments vs equality checks!! So

a = 5 # is a comparison
a  = 5 # is an assignment

extra credit: write an ide to lint it.

[–]iamsupershort 305 points306 points  (1 child)

why don't you just spit in my goddamn face while you're at it

[–]NilsTillander 227 points228 points  (17 children)

Don't give ideas to the python people, they might implement that in python 4...

[–]kai_wulf_dog 53 points54 points  (1 child)

All the above, but arithmetic are variations on the above. So,

' =' is assignment and ' =' is multiplication.

[–]duterium1 30 points31 points  (3 children)

You cant do this automatically, it needs to be done in alphabetical order by hand, if you make an error it won’t compile with no find/replace.

[–]DJDark11 23 points24 points  (1 child)

What about you have a function ”store” that saves all variables in a stack. The most recently stored being A, precious B and so on. Such that when code runs, multiple things have been referenced as A when used but is depending on where in code execution is called somthing else for each time ”store” is used.

[–]derive_disgruntled 108 points109 points  (4 children)

And after you run out of letters, you have to namespace them, again alphabetically. So after z, a::a; after a::z, b::a, and so on. Because, of course, there's not concept of scope when it comes to variable naming, so you can only use each once in your code. Namespacing is infinitely recursive though, so after z::z, you can do a::a::a

[–]GreenGriffin8 55 points56 points  (2 children)

A direct consequence of this is that any value can be used as a namespace. That is, if a is 1, then a::a is the same as 1::a (which is also the same as b::a if b is also 1). If your top level variables change, you might not have access to the nested ones.

[–]Awanderinglolplayer 92 points93 points  (0 children)

Error: “for for” not valid expression. Variable for of type For is not iterable

[–]adaelxp 114 points115 points  (12 children)

Also on error continue silently, with this single feature your code will run always with no runtime errors!

[–]Inn0ve 89 points90 points  (5 children)

The language automatically detects infinite loops and memory leaks to stabilize the code and prevent crashing. However, it doesn't tell you. It's just to keep it running and cover up problems.

[–]coranos2 34 points35 points  (1 child)

If it’s about to run out of memory, it just loops back around.

[–]CavulusDeCavulei 19 points20 points  (0 children)

Basically JavaScript

[–]Til_W 963 points964 points  (15 children)

If you don't call sleep() once in a while, the program will get sleep deprived and start making runtime math mistakes

[–]unremarkable_name_2 337 points338 points  (3 children)

If your sleep() calls aren't consistently spaced, its sleep cycle gets messed up and it will begin dozing off at random intervals. This means:

Probability of errors in floating point math. The relative size of these errors is controlled by how sleepy the compiler is.

Jetlag: event timing may be shifted somewhat in either direction: for example, sleep() commands will adjust their duration. Calls to get the current time from the system will return the time the compiler feels it is.

Insomnia: the sleep() function may fail, with the compiler becoming more tired as a result.

[–]InnerBanana 151 points152 points  (0 children)

object disoriented programming

[–]ajzaff 13 points14 points  (2 children)

If you call sleep() to much, the program becomes 'groggy' and sluggish. Error messages become less specific.

[–]Affectionate_Tax3468 1491 points1492 points  (43 children)

Cloud based/global language.

All class definitions are shared between all users and applications.

Global runtime.

All objects are shared between all applications.

[–]atopion 415 points416 points  (11 children)

I like that.

Also, all variables are constant and automatically entered into a blockchain, where the variable name is forever tied to that value, for everyone.

[–]triangledot 283 points284 points  (4 children)

lol variable names would be like usernames. Instead of "argv", you'd have "xXargv69Xx"

[–]MessyMaryMay 59 points60 points  (2 children)

Not gonna lie, I laughed so hard some pee came out on this one.

It's what Tom programmed MySpace in.

[–]artistic_programmer 116 points117 points  (4 children)

variable NFT's. Genius billion dollar idea

[–]Tristan401 14 points15 points  (1 child)

NFV. Not to be confused with the NFV network architecture.

[–]Unrepentant-Priapist 179 points180 points  (1 child)

You can emulate a private execution space, but only by finding your own code in the cloud with regexes.

[–]its_a_gibibyte 17 points18 points  (1 child)

Perl is surprisingly similar to this. Class definitions are global, so any class defined anywhere in your application can be instantiated anywhere else. To solve this, everyone uses exactly one class per file (which itself isn't uncommon) and uses the directory name and file to disambiguate. People then upload shared packages on CPAN where these files can't have any duplicate names. Which means across all of Perl's enormous available libraries, no two classes have the same name.

[–]SirFloIII 14 points15 points  (0 children)

well, thats one solution to name collisions, holy fuck.

[–]Meh-AnotherUsername 2132 points2133 points  (110 children)

The keywords for the Boolean values are yep, nope and dunno where dunno is like a NaN value, but for Booleans. When declared, a Boolean variable is initialized as dunno.

[–]xxgetrektxx2 510 points511 points  (39 children)

I'm on board with this

[–]DBRespawned 249 points250 points  (37 children)

that is actually a nice feature.

[–]Main_Duck_1624 177 points178 points  (35 children)

Well.. it might sound nice until you actually need to use it for anything. What the hell is if(dunno){...} supposed to do?

[–]cosmo7 249 points250 points  (8 children)

Ternary logic is dangerously plausible.

Instead I propose this:

struct Bool {
    short balls;
    short strikes;
}

A bool can have up to three strikes before having to be false, or four balls before having to be true. Obviously a bool cannot be determined on a foul ball. Throwing an exception would advance the caller to first base.

[–]Transcendentalist178 54 points55 points  (2 children)

On an exception, there is a generalised error message: "All your base belong to us".

[–]___Hannes___ 22 points23 points  (1 child)

All your ram are belong to us

[–]ReverseCaptioningBot 19 points20 points  (0 children)

ALL YOUR RAM ARE BELONG TO US

this has been an accessibility service from your friendly neighborhood bot

[–]jailbreak 187 points188 points 2 (5 children)

Also, exceptions are thrown and caught with the keywords yeet and yoink. Otherwise they work exactly like checked exceptions in Java:

famous String readNextString() yeets IOException {
    // reads from input
}

nobody void checkNextString() {
    yolo {
        readNextString();
    } yoink(IOException e) {
        self.success = nope;
    } anyways {
        // close input
    }
}

[–]Meh-AnotherUsername 72 points73 points  (0 children)

I have to say, I kind of like the yolo keyword substitution for try, although I think I would go for derp and anywho for the catch and finally substitutions.

[–]nathybfly 73 points74 points  (3 children)

I will do it just right now..

const nope = false;

const yep = true;

In every project lol

[–]Meh-AnotherUsername 56 points57 points  (2 children)

You forgot to define your const for dunno.

[–]TheTacoWombat 47 points48 points  (2 children)

I once saw a boolean variable set as "sure" in production code.

[–]nothingsurgent 17 points18 points  (1 child)

I’d buy that person a beer.

[–]AsparagusThese2270 17 points18 points  (2 children)

You joke but I wrote exactly this code a few weeks ago. Someone else was relying on a null pointer exception when a Boolean got unboxed to determine whether something had happened. I replaced it all with an enum that started off as UNCONFIGURED and could then be changed to TRUE or FALSE.

I talked it over with the guy who wrote the original code. He was on board with it.

[–]pakidara 915 points916 points  (29 children)

Enforced intra-program security.

IE: If you declare a variable, you have to verbosely define what functions (built in or coded) can interact with it.

This also goes for methods / functions / subroutines. So, say you code a method to scan a string for vowels. The passed in string must be flagged as having access to that method. The method must also be flagged to have access to that variable. The stored result must also have access to that method and the original variable if the two interact. The variable that hold the returned value must also be verbosely given access to the method abd vice versa.

[–]SnooMaps9383 525 points526 points  (10 children)

sound so bad that im afraid it will go enterprise

[–]pakidara 226 points227 points  (7 children)

"But it says it increases security in the brochure! Better security is always better!" - The manager who thinks 'boolean' is a lunchmeat

[–]Gold_Farmer 75 points76 points  (0 children)

Don’t give the folks at AWS IAM anymore ideas…

[–]Ranvir33 12 points13 points  (4 children)

abd

can you please tell me what you mean by abd

[–]Topleke 361 points362 points 2 (18 children)

A what if statement

[–]BeauteousMaximus[S] 168 points169 points  (5 children)

Code inside the what if block must be in the subjunctive mood

[–]kubbasz 108 points109 points  (0 children)

"would return"

"let's say we do ... while"

[–]Unrepentant-Priapist 46 points47 points  (1 child)

If/maybe instead of if/then.

[–]mosskin-woast 34 points35 points  (0 children)

So quantum computing /s

[–]MyStackOverflowed 1370 points1371 points  (55 children)

No imports everything must live in one file. Every project starts with a 1000 line file with the standard lib.

[–]ZealousZera 446 points447 points  (14 children)

no standard lib, everything is either intrinsic part of the language (with keyword and all) or must be implemented manually.

[–]duterium1 56 points57 points  (4 children)

Nothing is intrinsic, you need to include at the top of every document definitions gif basic functions like for and while loops using exclusively and, or, & not

[–]AeroSysMZ 108 points109 points  (18 children)

Let's make it harder: Everything must be in one class

[–]LadulianIsle 87 points88 points  (11 children)

*thinking

why have classes at all? just use assembly. but without the linker

[–]MoleculesOfFreedom 18 points19 points  (3 children)

Let's make it harder: your main function cannot reference any other function or global variable and everything must be on one line.

Case in point: the following (perfectly valid) Haskell program reads a line from user input and prints the three most frequent words

main = getLine >>= putStrLn . show . map head . take 3 . sortBy ((flip compare) `on` length) . group . sort . filter (any isAlphaNum) . words . map toLower . map (\c -> if (c == '\'' || isAlphaNum c) then c else ' ')

[–]firefish5000 66 points67 points  (3 children)

File is mutable and the compiler/interpreter for it is created and run in the first line. Changing a variable at runtime modifies the file.

[–]PinPhreek 20 points21 points  (1 child)

Thanks, i thought the other suggestions where horrible. You're toping it with ease.

[–]firefish5000 13 points14 points  (0 children)

I didn't have the compiler/interpreset in the code, but wrote some self modifying perl once that completely swapped the contents of the file between 2 runs. Was fun. Did that about 4 times before the novlty wore off and self modifying code became too much of a PITA to read/write and I went back to mostly normal code (data still stored at end of file, but code itself static). And eventually to completely normal code (the type that just has too many bugs to even run)

[–]thequestcube 937 points938 points  (13 children)

From xkcd 2309: There is only one possible variable name, which is x. To refer to different variables, you have to write x in different fonts.

[–]Registered_bottom 248 points249 points  (0 children)

that sounds miserable.

I love it

[–]Fr0zenDuck 121 points122 points  (3 children)

Let's extend that to arrays as well. Instead of x[0] you have to use x[x] where the font of the second x determines which element of the array you get.

[–]Chivo_565 857 points858 points  (16 children)

Everytime you compile it searches the internet for similar code. If it finds something that is copy pasted it gives you an unspecified error.

[–]el_muerte28 368 points369 points  (5 children)

Import stdio.h

"Compilation error"

[–]metamerf 12 points13 points  (0 children)

“stray ‘Import stdio.h’ in program”

[–]JacquesShiran 129 points130 points  (1 child)

I love it, this is so broken. Imagine an ex employee posts your source code and now you have to rewrite it all or it won't compile.

[–]hvacthrowaway223 17 points18 points  (0 children)

It gives you a DRM error.

[–]TGX03 508 points509 points  (38 children)

The program never crashes, which is done by always adding in something to fix an exception.

  • Divide by 0? You now get a random number.
  • Write to a protected area in memory? Doesn't get written, but still succeeds.
  • Want to read from a file but it doesn't exist? Just read from /dev/random
  • etc...

[–]mosskin-woast 209 points210 points  (3 children)

So every error is now the equivalent of reading from an uninitialized buffer in C

[–]ShittyCompiler 17 points18 points  (2 children)

Malloc fails? You get a random pointer.

[–]Ninder975 12 points13 points  (0 children)

You just get the null pointer which successfully dereferences to zero

[–]RogerBlank 105 points106 points  (4 children)

To my horror, I can fully imagine someone nodding along with this list, thinking it's a good idea.

[–]peepay 57 points58 points  (0 children)

A project manager - "we've brought the number of bugs down to zero!"

[–]StenSoft 44 points45 points  (3 children)

FTFY: Write to a protected area in memory? Writes it somewhere else

[–]End3rp 30 points31 points  (2 children)

Iterate through virtual memory addresses to find the nearest unprotected address. Easy.

[–]bioruffo 32 points33 points  (0 children)

Evil. The language could be called "Show" short for "The show must go on". Basically Javascript on meth.

[–]Hero_without_Powers 489 points490 points  (17 children)

Inverse indentation: the for or while post of a loop must be indented by the spaces deeper as whatever stuff is within the loop. Basically the opposite of Python indentation but with the sources instead of four

[–]agentrnge 38 points39 points  (4 children)

I dont hate that so much, like an indented first line of a paragraph of prose?

[–]Hero_without_Powers 44 points45 points  (3 children)

Yeah, but if you do an if statement within a for loop, the for bist be indented twice and the of once. So if you decide to add some of, for, while or whatever, you have to indent everything around it

[–]BeauteousMaximus[S] 101 points102 points  (1 child)

Nice and readable, I like it

[–]randomyoloanon 541 points542 points  (42 children)

Commenting code is not allowed. Commenting in general is not allowed. Print statements don't work so debugging is a nightmare

[–]thequestcube 315 points316 points  (23 children)

COMMENTS.4239 = "I don't need syntactical support for comments"

[–]BobSanchez47 103 points104 points  (7 children)

You mean PHYSICS.planets.earth.COMMENTS.4239.

[–]miseleigh 85 points86 points  (5 children)

No, comments are linguistic, not physical. It would have to be PHILOSOPHY.metaphysics.cognition.linguistics.language.english.comments

Or is it cognition.metaphysics? Guess I'll try to compile it to find out

[–]plipplopplupplap 43 points44 points  (4 children)

error: unused variable COMMENTS.4239 at line 182638

[–]Alt-F42069_on_life 18 points19 points  (2 children)

how would one output anything then

[–]InkStainedEyes 64 points65 points  (1 child)

By calling graphics shaders or making a server to display html

[–]6265657020626f6f70 16 points17 points  (0 children)

Holy hell.

[–]Ok-Abrocoma3862 482 points483 points  (26 children)

There is neither do, while, for, nor goto, but instead there is a comefrom statement. The comefrom statement is like a reverse goto statement. For instance:

10 REM

20 COMEFROM 70

30 PRINT "WORLD"

40 END

50 COMEFROM 10

60 PRINT "HELLO "

70 REM

This prints "HELLO WORLD"

[–]BeauteousMaximus[S] 107 points108 points  (0 children)

This is my favorite so far

[–]Affectionate_Tax3468 168 points169 points  (3 children)

"On 1 April 2004, Richie Hindle published an implementation of both GOTO and COMEFROM for the Python programming language.[1] Despite being released on April Fools' Day and not being intended for serious use, the syntax is valid and the implementation fully works."

https://en.wikipedia.org/wiki/COMEFROM

[–]WikiSummarizerBot 64 points65 points  (0 children)

COMEFROM

In computer programming, COMEFROM (or COME FROM) is an obscure control flow structure used in some programming languages, originally as a joke. COMEFROM is the inverse of GOTO in that it can take the execution state from any arbitrary point in code to a COMEFROM statement. The point in code where the state transfer happens is usually given as a parameter to COMEFROM. Whether the transfer happens before or after the instruction at the specified transfer point depends on the language used.

[ F.A.Q | Opt Out | Opt Out Of Subreddit | GitHub ] Downvote to remove | v1.5

[–]Reasonable_Opinion32 78 points79 points  (1 child)

Better yet, If you have COMEFROM in two different places and they both point to the same location, the behavior is undefined; not a syntax error, undefined. Meaning different web browsers/compliers/etc. Will behave differently depending on the one you are using.

[–]ezpzCSGO 35 points36 points  (0 children)

That's just how multithreaded workloads are handled. Every time a COMEFROM line is accessed you just create a thread in each location. If you want 8 threads you just copy paste your code 8 times.

[–]compdog 25 points26 points  (2 children)

I'm pretty sure there's a language that actually has this

[–]david131213 13 points14 points  (0 children)

This is just

Bruh, I am amazed at your evil

[–]Imogynn 121 points122 points  (4 children)

Has to be written directly onto the chip. Refactoring involves a soldering iron.

[–]_NliteNd_ 108 points109 points  (4 children)

Scoping ends with the reversed name declaration (e.g. how a bash if expr ends in fi)

function add(

.....

noitcnuf

[–]SirFloIII 74 points75 points  (1 child)

bettter yet:

function add(a, b)

... code ...

(b ,a)dda noitcnuf

[–]less_unique_username 17 points18 points  (0 children)

)b ,a(dda noitcnuf

It’s not super intuitive that ()() isn’t a palindrome but ><> is, is it?

[–]SavSamuShaman 88 points89 points  (8 children)

You can only use any builtin thing once

[–]Unrepentant-Priapist 62 points63 points  (4 children)

And once you use it, the compiler deletes it from the standard library.

[–]pabbottwa 91 points92 points  (8 children)

Everything is XML.

<variable name=“i” type=“int”>0</variable>
<for iterator=“i” func=“i++” while=“i<10”>
    <print output=“console”>i</print>
</for>

[–]Western-Relative 89 points90 points  (9 children)

Let’s try to make it enterprise:

Unit tests are mandatory. The compiler provides a unit test library and assertion functions. You can compile in a couple different modes: minimum code coverage, minimum asserted code coverage, and state change coverage (you must assert on every visible state change). Building fails if those conditions are not met.

People dislike package names and such things, so you import packages. To avoid name collisions, importing a package assigns a prefix to each package, and all exported symbols are prepended with that prefix. Re-exported symbols are exported with their prefixes intact. Each name has to be unique.

People find concurrency hard, so all functions are pure by default to avoid side effects. To do something outside the program (print to the console, for example) you need to accept a “world” argument and return a new “world”. Only one “world” can exist at any time.

We want stability and predictability, so all dependency versions are captured in the compiler app. Any unregistered runtime change is an error. To avoid undesired behavior only one version of each library is allowed. Incompatible library versions are an error. Since we have all the constraints we don’t need to store specific version information. Nobody reads those version lock files anyway.

[–]miseleigh 23 points24 points  (0 children)

Oh god. I can totally see a high-level manager thinking these are good ideas.

[–]random_son 161 points162 points  (8 children)

Name the language “🙂". “🙂" is also the line terminator.

[–]PlutoniumSlime 82 points83 points  (1 child)

EmojiCode has entered the chat

[–]BlackBeltPanda 67 points68 points  (4 children)

₣ ◖✓◗ ⦅🙂
    🖶◖⹀👋🌎⹀◗፤🙂
⦆🙂

[–]Mein_SQL 27 points28 points  (0 children)

You won. And the rest of the world lose

[–]compdog 206 points207 points  (10 children)

No booleans, only three-state ternaries. And no TRUE / FALSE / MAYBE literals, you first need to find something that you "know" is the correct value and compare it.

[–]BeauteousMaximus[S] 104 points105 points  (1 child)

The second most likely language to cause an existential crisis

[–]TheEmeraldEmperor 71 points72 points  (6 children)

tern example = 2+2=4;

if(tern example = 3+2=5){

print("this fucking works and I hate it")

}

[–]pavlindrom 83 points84 points  (5 children)

It doesn't always work because you don't know if you're initialized into an Euclidean vector space. 2+2 could equal 5

[–]Gorvoslov 64 points65 points  (6 children)

Let's put a mobile game company in charge of it.

"Compiling... 5 hours left... You may purchase 17$ of compilation gems here to skip waiting for compilation!"

Debugging Lootboxes: "Today your free debugging variable value read is 'i' in this one for loop. Pay 24$ for debug gems (different currency from compilation gems obviously" to get more rolls!"

"Due to the discovery of a bug with the .toString() method, .toString() will be unavailable for six weeks while we work on fixing it."

"'Longs' are a premium feature, you'll have to pay for the 'season bit pass' (two week season) if you want more bits for storing a numeric value than the f2p 'int'."

"String values may not contain the names of any competing languages such as Javascript, REACT, Java, SQL, C, R or D" (Find as many single letter named programming languages as possible)

"Since we have not implemented programming 'clans' yet, all Code Reviews are open to all Programmers on your regional server of North America, Europe, or Asia. There is no support for interacting with programmers in another server region, so you cannot interact with teammates across the ocean. If you are outside of one of these regions, you are simply not supported."

[–]GabiNaali 55 points56 points  (5 children)

It's COBOL, but written in German instead of English.

[–]Wtfisthisgamebtw 48 points49 points  (3 children)

there are no built in exception handlers, and when an exception error happens you the program freezes up with no indication of what happened and why it happened

[–]Ixyk 28 points29 points  (0 children)

It'll also allocate all the memory and crash the system before you can read any backtrace

[–]iyeetuoffacliff 13 points14 points  (0 children)

Sounds like MS DOS

[–]Dogs4Idealism 49 points50 points  (2 children)

The "+" operator implicitly casts operands to Strings for concatenation unless otherwise specified.

[–]teetaps 145 points146 points  (8 children)

Indexing is in binary, for no reason whatsoever

[–]Kitchen_Laugh3980 30 points31 points  (6 children)

That wouldn’t be that bad

[–]FakeVoiceOfReason 90 points91 points  (5 children)

How about, "Indexing starts at pi"

[–]eXecute_bit 24 points25 points  (2 children)

Indexes are implemented as 64-bit binary bit patterns, but the only usable numeric type in the language is IEEE floating-point and array index operations just take the raw bits as-is.

[–]arnemcnuggets 96 points97 points  (5 children)

Ive always wanted an upside down programming language

{

;0== 2%n return

}(n int)isEven function

[–]Da_Cereal_Killah 65 points66 points  (0 children)

you are a menace to civility

[–]tgttos 171 points172 points  (20 children)

Proper indentation is required for the code to compile, but tabs are an odd number of spaces

[–]SafeJellyfishie 85 points86 points  (12 children)

Tabs should be absurdly long. Like at least 7 spaces long.

[–]ScoobPrime 50 points51 points  (4 children)

Every line needs a 6 space indentation but tabs are 7 spaces wide

[–]SafeJellyfishie 17 points18 points  (1 child)

Or the required space indentation should be a random number for each line

[–]Daneel_ 14 points15 points  (1 child)

Each successive indent needs to be a different prime number of spaces

[–]Aerham 46 points47 points  (5 children)

No array/list/collection types, you must explicitly define a group of variables and assign to a single variable.

Something similar to

Variable a = { string b = "" string c = "" string d = ""};

And you can't change the values calling the single variable. You have to reassign.

[–]AbramKedge 90 points91 points  (5 children)

For security, you have to declare all functions used in the entire application at the top of every file, signed with an encryption key that is issued for the machine that the code is going to execute on and the application itself, which has to be registered with a central application distribution management broker located in Belgium. Closed weekends, national holidays, and Tuesdays.

[–]BeauteousMaximus[S] 29 points30 points  (0 children)

Security is very important

[–]marinsborg 87 points88 points  (4 children)

OOP but you can only use one class per project. Imagine doing code first and creating DB with only one table and a million columns.

[–]bunny-1998 27 points28 points  (0 children)

The language is great. Everyone is happy except the DBA.

[–]13ros27 81 points82 points  (3 children)

First list index is 3, next is 3.1, then 3.14, 3.141, 3.1415 etc.

[–]swatlord 23 points24 points  (0 children)

List indexing follows the Fibonacci sequence. Index 1 always returns the first and second item in the list/array.

[–]ProbiuSC 149 points150 points  (14 children)

There are only global variables, no scopes.

[–]BeauteousMaximus[S] 65 points66 points  (6 children)

Why would you need scopes when you can be extremely specific about what a given variable refers to?

[–]ProbiuSC 41 points42 points  (3 children)

Better yet, import a library that uses very unspecific names so all the ones you want to use are taken.

[–]SirPitchalot 29 points30 points  (2 children)

You’ve described matlab

[–]brainexe_not_found 107 points108 points  (20 children)

My partner's suggestion: No numerical types allowed. Nothing can be defined as an integer, float, or anything similar. Need numbers in your code? Good luck there buddy.

[–]dphseven 58 points59 points  (4 children)

Luckily the sub already has a large number of algorithms for string-based arithmetic

[–]polmonroigcompany 35 points36 points  (3 children)

Strings are lists of chars. Chars are bytes....

[–]tempperson100 30 points31 points  (1 child)

Enjoy set-theory based assembly.

edit*: I said this as a joke, but I'm kind of into it now.

Arrays become the optimal data structure in every instance.

Memory allocation and garbage cleanup are trivial.

Information can never be accessed inappropriately, because it only has meaning relative to the program accessing it.

If it wasn't for the fact it has an exponential memory requirement, this could really be something.

[–]miseleigh 19 points20 points  (1 child)

The legacy software I'm maintaining at the moment already stores all numbers as strings and parses them at the point of use, so I'm already halfway there!

[–]Meh-AnotherUsername 71 points72 points  (16 children)

Code must be right justified. Like:

                      10 NATURAL32 count = new NATURAL32();
                                            20 count = one;
                         30 PUTONTHESCREEN("Hello World!");
                                      40 count.ADDAONESY++;
                          50 TRUTHY we_done = new TRUTHY();
                    60 we_done = count ISPRETTYCLOSETO ten;
                 70 ONDUNNO we_done, DIDANOOPSIE("Shrug!");
         80 ONNOPE we_done, GOTOBUTONLYIFYOUREALLYWANNA 30;
   90 PUTONTHESCREEN("Looped ##&*TEXTY*&## times.", count);

[–]Interesting-Top-6377 30 points31 points  (2 children)

A why statement. Similar to an if statement, but instead of giving set parameters, you have to convince it of why it should do its action

[–]dercavendar 28 points29 points  (6 children)

Condition checks check for false

So if(true) else would go to the else statement.

[–]simp-for-china 78 points79 points  (2 children)

To extend your global object concept ("PHYSICS.planets.earth.gravity = 9.8"). The global object would be maintained by an international registry authority, requiring approval to create new attributes, which would typically take 4 weeks.

[–]bunny-1998 27 points28 points  (6 children)

There’s no if-else. Only try-except.

[–]Kilgarragh 73 points74 points  (9 children)

A garbage collector that only free’s memory when it feels like it, no manual management like free() either.

You can’t make it compiled, that would be too portable and fast, we need to write an interpreter in php.

Variables aren’t mutable, they never will be, you just have to add a new variable to the namespace every time. It’s okay though we have a garbage collector.

Next we make it object oriented with no class extension, cause why not.

A package management system kinda like c.

Finally, we need to force 6 semicolons on the end of each line, even if it’s blank, unless the line ends with a ) then we need to ad 4 at the beginning.

Don’t forget rather then pointers, it just passes by reference on sundays, and sets(duplicates) in June, or any year ending in 5

[–]bunny-1998 29 points30 points  (0 children)

That last point just makes this thing non scalable. I love that

[–]Kitchen_Laugh3980 13 points14 points  (0 children)

Ok hitler🫡

[–]IrishChappieOToole 12 points13 points  (1 child)

Who hurt you?

[–]PlutoniumSlime 52 points53 points  (4 children)

All of the functions are a combination of characters from different languages. So to type one keyword, you must switch between a Japanese, Arabic, English, Russian, etc. keyboard.

There is no way to redefine them either.

[–]Party-Cartographer11 11 points12 points  (3 children)

Characters are in scripts, not languages. So it would be Kangi, Arabic, Latin, Cyrillic scripts.

[–]g_hi3 47 points48 points  (9 children)

there are a handful of predefined variable names that you have to use. if you need more variables than there are predefines names, you have to reuse them. they are statically typed

[–]fedekriegel 42 points43 points  (2 children)

So registers?

[–]TheMightyCatt 42 points43 points  (1 child)

I think this post is just making assembly

[–]Ixyk 60 points61 points  (5 children)

Make it have the longest transpile time. Like

Whatever -> Python -> TS -> JS -> Rust -> F# -> C# -> C++ -> V -> C -> WASM (because why not)

This would have to be explicitly defined by the user or else it'll compile to a mix of all of them in unreadable code

Edit: Also this would take like 3 fucking years to make a transpiler for

[–]pavlindrom 21 points22 points  (1 child)

How about each line of code is in a different language, but you aren't told what the order should be. You have to hit compile until the correct random sequence matches your selection for the code. Also, you must match the start and end blocks of code in the same language. So if you generate namespace in C# it has to match the end curly bracket in C#, but if your class name is in Python, you'll need an empty space later in the file for Python to know it's reached the end of the class.

[–]Amazingawesomator 50 points51 points  (11 children)

G#.

F# was not functional enough. G# now uses proper english grammar and syntax or it does not compile.

[–]BeauteousMaximus[S] 29 points30 points  (10 children)

Are we talking British English or American English

[–]TheMightyCatt 49 points50 points  (3 children)

A weird inconsistent mix between the 2

[–]BeauteousMaximus[S] 61 points62 points  (2 children)

So, Canadian English

Call it MapleScript

[–]Jnoper 16 points17 points  (0 children)

I’ll take a few hints from robot framework. Keywords (functions) variables etc, ignore case. [THIS] is the same as [ThIs]. Any space can be any character and are ignored unless there are 2 or more. [This is a function] is the same as [tHiS+iS_a funCtiON]. I wish I can make this up.

[–]cj_vantrillo 19 points20 points  (3 children)

Everything is static. (functional programmers are punching the air right now)

[–]44Tomati 16 points17 points  (6 children)

the first index is 1 instead of 0

[–]NiktonSlyp 15 points16 points  (1 child)

The whole idea of indentation doesn't work. You have to make it one liners. Monitor brands sell specific 10/1 ratio screens in bundle of 10 to code multiple lines at once.

[–]gaussianDoctor 37 points38 points  (5 children)

  • No loops other than "if"
  • Statements can't be longer than 1 line
  • Lines can't be longer than 50 characters
  • You can only assign constants to variables
  • Can only manipulate files of the special format tied to the language
  • Can't uncomment code

[–]defcon_penguin 11 points12 points  (3 children)

You can't call functions or define ones, you only have basic data manipulation instructions, no libraries, no code reuse apart from copy/paste

[–]bunny-1998 19 points20 points  (1 child)

That’s just assembly without goto, or jmp instruction

[–]RudeMirror 26 points27 points  (3 children)

If your code doesn't compile, everything gets deleted.

Also no saving, you can only save the compiled program.

[–]a_bucket_full_of_goo 13 points14 points  (1 child)

Hardcoded license checks, when running the program, the binary automatically sends a http request and waits for Microsoft servers to check its Token to verify the developers license/subscription is active

[–]barndawe 13 points14 points  (1 child)

It supports generics but everything has to be boxed to object first and none of the properties or methods can be used.