83
\$\begingroup\$

Language-creation has become a popular activity on PPCG. A decent portion of answers, especially answers, are written in languages invented by the community. These are also languages that might be unfamiliar to this site's wider viewing audience.

What languages (esoteric, golfing, or not) have been created by our users? For each language, please include some of the following details:

  • Language name and creator
  • Links to resources, like documentation and interpreter
  • A brief description of the language, some of its main concepts and features, and its history

List of languages

function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=meta.codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=meta.codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var a=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(a="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var r=a.match(SCORE_REG);r?e.push({user:getAuthorName(s),size:+r[2],language:r[1],link:s.share_link}):console.log(a)}),e.sort(function(e,s){var a=e.size,r=s.size;return a-r});var s={},a=1,r=null,n=1;e.forEach(function(e){e.size!=r&&(n=a),r=e.size,++a;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;o=jQuery("<a>"+o+"</a>").text(),s[o]=s[o]||{lang:e.language,lang_raw:o,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang_raw.toLowerCase()>s.lang_raw.toLowerCase()?1:e.lang_raw.toLowerCase()<s.lang_raw.toLowerCase()?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var QUESTION_ID=6918,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",OVERRIDE_USER=2867,answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n]+)\s*<\/h\d>/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script><link rel=stylesheet type=text/css href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id=language-list><h2>Languages by PPCG Users</h2><table class=language-list><thead><tr><td>Language<td>User<tbody id=languages></table></div><table style=display:none><tbody id=answer-template><tr><td>{{PLACE}}<td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table><table style=display:none><tbody id=language-template><tr><td>{{LANGUAGE}}<td>{{NAME}}<td><a href={{LINK}}>Link</a></table>

| |
\$\endgroup\$
  • 20
    \$\begingroup\$ Todo: Add 2D matching languages and every language Calvin makes up for golf questions \$\endgroup\$ – Sp3000 Sep 9 '15 at 2:45
  • \$\begingroup\$ Do languages whose only non-proprietary interpreters were created by PPCG users count? \$\endgroup\$ – bmarks Sep 12 '15 at 17:01
  • \$\begingroup\$ The title is somewhat misleading. Do general purpose languages not related to golfing still count when they have been created by PPCG users? The title suggests yes, but mostly (and naturally) the answers relate to golfing. \$\endgroup\$ – mınxomaτ Sep 12 '15 at 21:59
  • 1
    \$\begingroup\$ @minxomat This question is open to all languages created by PPCG users. \$\endgroup\$ – PhiNotPi Sep 13 '15 at 4:36
  • \$\begingroup\$ @bmarks I say you could go ahead and post it, specifically mentioning the interpreter. \$\endgroup\$ – PhiNotPi Sep 13 '15 at 4:42
  • 2
    \$\begingroup\$ @PhiNotPi A suggestion: Implement a snippet in your question to list the languages. This site is quite long. \$\endgroup\$ – mınxomaτ Sep 14 '15 at 6:27
  • 2
    \$\begingroup\$ @minxomat Done. \$\endgroup\$ – Alex A. Sep 21 '15 at 19:05
  • \$\begingroup\$ A quick note about the snippet: User means the person who posted about it here, not necessarily the user who created the language. Example: I did not create Ostrich, I merely posted it here. \$\endgroup\$ – Alex A. Sep 21 '15 at 19:12
  • 2
    \$\begingroup\$ @AlexA. Maybe we could add a formatting guide, and suggest that the inventor be added in the header? \$\endgroup\$ – Beta Decay Sep 25 '15 at 17:33
  • 1
    \$\begingroup\$ @BetaDecay Yeah I had thought about that. Language name, creator, and year. Up to Phi though. \$\endgroup\$ – Alex A. Sep 25 '15 at 18:32
  • \$\begingroup\$ @Adnan 05AB1E should be on here. \$\endgroup\$ – Magic Octopus Urn Jan 19 '17 at 21:19

96 Answers 96

1 2 3
4
0
\$\begingroup\$

Noether

Noether is stack-based, semi-golfing language designed by myself.

Based mainly on Fourier, Noether is stack-based and uses reverse polish notation. These two facts make Noether a lot more powerful than Fourier, mainly because it means that strings and integers can be stored and manipulated alike.

Similarly, Noether's functions are overloaded based on the type of the arguments. For example, the function L has two functions:

  • When passed a string, L returns the length of the string.
  • When passed a number, L returns the base 10 logarithm of the number

As a result, Noether can be used more widely and is wholly more usable language whilst still being quite similar to Fourier.

Links:

| |
\$\endgroup\$
0
\$\begingroup\$

TLDCode

Created by The_Lone_Devil (Me) and is a (WIP) stack based language.

The name is likely to change one day when I think of a good one.

I created it as something to work on during some downtime at work, and to learn Kotlin a bit better (the language the interpreter is written in).

There is some documentation, as well as a Kotlin based interpreter over on the Github page

Some features include

  • User functions, by pushing a string containing code onto the top of the stack, and then storing the top of the stack into a named variable, you can push the variable onto the stack and eval it to execute.
  • Immutable variables, once a variable is set, only a copy can be pushed onto the stack, they can never change.
| |
\$\endgroup\$
  • 2
    \$\begingroup\$ The name sounds like "Too long; didn't code" :p \$\endgroup\$ – RedClover Jan 25 '18 at 16:09
  • \$\begingroup\$ @RedClover TL;DR is the first thing I thought of when I saw the title. \$\endgroup\$ – MilkyWay90 Dec 31 '18 at 23:26
0
\$\begingroup\$

MashedPotatoes

MashedPotatoes is a register-based esoteric programming language designed by yours truly that "mashes" together several syntactic constructs from other languages and alters their meaning significantly.

The central theme of MashedPotatoes is to confuse color-coding parsers while making code difficult to read and frustrating to write. Almost every construct in the language is borrowed syntactically from another language but does not serve its original purpose. Examples:

  • The text --help is the numerical literal representing zero. This is the only numerical literal whose value does not change.
  • The Perl "baby carriage" operator @{[ ... ]} returns the negative of the argument
  • The Common Lisp style print statement (format t " ... ") is the basic looping construct in MashedPotatoes.

Additionally, to make sure programmers don't become complacent, many syntactic constructs change meaning each time you use them. There are three registers: the accumulator, the counter, and the evaluator. However, none of these registers can be accessed directly. They are accessed by the following expressions.

  • STDERR, which returns the accumulator the first time it is used in a program, the counter the second, and the evaluator the third.
  • $[, which returns the counter, then the evaluator and then the accumulator.
  • `uniq -c` (the backticks are significant) refers to the evaluator, then the accumulator, and then the counter.

So to refer to a register, you have to find an identifier that is currently pointing to that register. This design decision ensures that programmers who are refactoring code still have a sufficiently challenging task. Likewise, labels are used to activate several commands. There are three labels (plus a fourth "nullary" label), and each label has four names. Referring to a label by the wrong name is a syntax error, and the name changes every time you use it.

Resources:

FAQs:

  • Why? I got bored at work one day and this was the result.
  • Are there any example programs? Yes, the Esolang page has a well-documented factorial program and a (less well-documented) Fibonacci program.
  • What does "Hello World" look like in MashedPotatoes? No idea. I tried once to write it and eventually gave up. If you can write "Hello World" in MashedPotatoes, please let me know.
| |
\$\endgroup\$
0
\$\begingroup\$

ALPHA

I made up this esoteric language by me, SnivyDroid, on the 27th of January, 2018 after reading about alphabetical-based esolangs like alphuck, it is just pseudo-code currently although I am working on structuring a interpreter with what little knowledge I have about parsing and interpreting code.

Basic Syntax

ALPHA Revolves around 1-character alphabetical mirrored commands, basically you start a command with the corresponding letter and you end it with the corresponding letter

Starting a line

KK

Printing a statement

KMSDFOODMK

Hello World

KMDHELLO WORLDDMK

Here is the entire command set I made up:

A=Not Equal
B=Subtract
C=If
D=String
E=Divide
F=Multiply
G=Equal
H=Add
I=For loop
J=Variable
K=Line
L=While loop
M=Print
N=Break
O=Not
P=Integer
Q=Take input
R=Do
S=Array
T=Join
U=Set
V=Pop
W=Then
X=Modulo
Y=Append
Z=Special

(Yes, I specifically shuffled the commands to make it painful)

Z would act as a way to access different sets of commands to extend into more specific functions.

Hopefully I should be able to write an interpreter one day, and if anyone has any advice on what I can use to make one that would be neat.

Here are some other examples I whipped up:

Wide text generator

KMHTD DQQTD DHMK
KK - Start line
KM - Start print
KMH - Start Add
KMHT - Start Join
KMHTD D - Add String arg
KMHTD DQQ - Add input arg
KMHTD DQQT - End Join
KMHTD DQQTD D - Add String arg
KMHTD DQQTD DH - End Add
KMHTD DQQTD DHM - End print
KMHTD DQQTD DHMK - End line

Generate a N-Length list of N

KUJAJSSUK
KMIUJCJUUJIJQQUIRYSSVIVYRMK

Any feedback?

| |
\$\endgroup\$
  • \$\begingroup\$ How does KMDHELLO WORLDDMK work? Since the string indicator is D, wouldn't the string truncate at HELLO WORL, then begin another string? \$\endgroup\$ – Scott Milner Mar 5 '18 at 21:12
  • \$\begingroup\$ I created a buffer called ZA that will escape strings. A single ZA will just act as a normal set of characters but ZA surrounding any characters will escape them from the string. \$\endgroup\$ – Mercury Platinum Mar 5 '18 at 21:32
0
\$\begingroup\$

BFZip

While not technically a programming language, I made this to help Brainfuck golfers to reduce their byte count.

Unfortunately, there are some glaring issues that make this unusable. I would appreciate any help with fixing them.

You can still calculate the bytes hypothetically if you use this formula, where n is the original byte count: ⌈3⋅n8

| |
\$\endgroup\$
  • 1
    \$\begingroup\$ This seems a bit like CompressedFuck (which also uses a 3-bit encoding, albeit a different one) and Spoon (which uses a variable-length Huffman encoding for maximum compression, and also has some extra commands) \$\endgroup\$ – Esolanging Fruit Feb 23 '18 at 20:48
  • \$\begingroup\$ @EsolangingFruit I didn't even know that CompressedFuck existed, now I feel like I did all that work for nothing :( \$\endgroup\$ – robbie Feb 23 '18 at 21:31
  • \$\begingroup\$ You could generalize your implementation into an arbitrary BF translator to handled BFZip, CompressedFuck, Spoon, etc. \$\endgroup\$ – Esolanging Fruit Feb 23 '18 at 22:38
0
\$\begingroup\$

Pixiedust

By Stephen Leppik

If you ask a 5-year-old what tells a computer what to do, they'll probably answer along the lines of "fairies and pixie dust". With the existence of this assembly-like language, that's not entirely wrong.

| |
\$\endgroup\$
1 2 3
4

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .