Conor O'Brien
AboutContactProjectsPapers

Languages

Programming language design and implementation has always been one of my greatest coding passions. For a time in my life, implementing small, unique programming languages was something I did on a weekly basis. I am now at the point in my life where, although I do not design languages with such frequency, I want to look over all that I've done, and chronicle all the languages I've made. Early on, I had a bad habit of not including any relevant code in the main/master branch, but everything in the gh-pages branch.

I've sorted them here chronologically. You can also click on the tags to filter by languages with them (eventually, when I get around to implementing that. Ctrl+F should work in the meantime.):

unimplemented esolang praclang golf

Contents

  1. Simplex
  2. Nary
  3. Chaîne
  4. -
  5. Merucik
  6. Comm
  7. ~EarthBit
  8. Jolf
  9. GoLScript
  10. Sindesi
  11. Emotinomicon
  12. Brainbash
  13. Oration
  14. NTFJ
  15. Codename Dragon
  16. Y
  17. Pris
  18. Reng
  19. Constant
  20. .kill();
  21. ITML
  22. yup
  23. vectil
  24. reticular
  25. Confiture
  26. jext
  27. stacked
  28. Somme
  29. Maverick
  30. Pyramid Scheme
  31. Sir
  32. Chain
  33. Betrothed
  34. Kevin
  35. Spectrum
  36. ;#+
  37. str
  38. ExtraC
  39. eacal
  40. Spaced
  41. stac
  42. Corea
  43. OML
  44. xeraph
  45. Alumin
  46. Attache
  47. categorized
  48. kavod
  49. Locksmith
  50. LOWER
  51. Premier
  52. Phooey
  53. memGAP
  54. Tir
  55. Datache
  56. DScript
  57. Fynyl
  58. Tidy
  59. Quadro
  60. Geuru
  61. smol
  62. Minat
  63. !@#$%^&*()_+
  64. FQR
  65. Twue
  66. Airja
  67. Peculi
  68. Owl
  69. Myby
  70. X
  71. ;;;;
  72. PLIS
  73. Taste
  74. oxy
  75. CIR
  76. StellerJ
  77. mkgg
  78. Jaguar
  79. Heist
  80. Cabsi
  81. Glint
  82. Serais-Toi?
  83. Junction
  84. Dyia

Simplex (GitHubOld GitHub)

Oct 12, 2015–Sep 17, 2019 esolang

TODO: describe

Nary (Esolangs)

Oct 27–28, 2015 esolang

TODO: describe

Chaîne (GitHub)

Oct 31–Dec 27, 2015 esolang

TODO: describe

- (GitHub)

November 10, 2015 unimplemented esolang

Aka “dash”, not to be confused with the shell. Name apparently chosen by my Witty Younger Self, “Because GitHub won't allow the use of a space.” I suppose I would have named the language a single space were it not for technical limitations.

A language which conceptually could operate under 3 programming paradigms via specifying the command: O for object-oriented programming, S for stack-based programming, and T for tape-based programming (à la Brainfuck). Almost 10 years ago, I'm not sure exactly what I had in mind for the language—beyond the specification of loop instructions, I don't have any information on this language.

Merucik (Esolangs)

November 12, 2015 esolang

TODO: describe

Comm (GitHub)

November 18–19, 2015 esolang

A short-lived experiment into a communally-designed programming language. The idea was that people could open GitHub issues with a feature request for a specific command in the language. I would then implement it and add it to the documentation. Even though one of the commands was also paradigm-switching like - did, it was actually another person's idea. The language is woefully underimplemented.

~EarthBit (Esolangs)

November 18–19, 2015 esolang unimplemented

TODO: describe.

Jolf (GitHub)

Nov 21, 2015–Nov 2, 2017 esolang golf

TODO: describe.

GoLScript (GitHubInterpreter)

Dec 11, 2015–Mar 24, 2016 esolang

TODO: describe.

Sindesi (GitHub)

Dec 13, 2015 esolang

A basic prototype aiming to provide a more consice format for representing Desmos “programs”. The language is a glorified find-and-replace with some convenience functions.

Emotinomicon (GitHub)

Dec 20, 2015–Aug 15, 2018 esolang

TODO: describe.

Brainbash (GitHub)

Jan 20, 2016–Dec 10, 2018 esolang

TODO: describe.

Oration (GitHub)

Feb 1–Apr 28, 2016 esolang

TODO: describe

NTFJ (GitHubTry it online!Defunct JS Interpreter)

Feb 4–Mar 10, 2016 esolang

One of my first “proper” esolangs, NTFJ is a stack-based, Turing tarpit. It is roughly equivalent to Etre, which is Turing complete. Here is a truth machine, a program that outputs 0 if given a 0, and repeating 1s if given a 1, along with an explanation:

:*:##~~~~~#@|########@|($~^)
: pop top of stack and push twice
popping from an empty stack yields the input
stack: [48, 48] (for '0') or [49, 49] (for '1')
* output top of stack (truth machine outputs once)
: duplicate again
##~~~~~#@ push byte 0b11000001 (=193)
| bitwise NAND with input
for '0' (48):
00110000
AND 11000001 = 00000000
NOT = 11111111 = 255
for '1' (49):
00110001
AND 11000001 = 00000001
NOT = 11111110 = 254
stack: [48, 255] or [49, 254]
########@ push byte 0b11111111 (=255)
| bitwise NAND with the last value
for '0' (255), 255 NAND 255 = 0
for '1' (254):
11111110
AND 11111111 = 11111110
NOT = 00000001
( ) if top of stack is 1:
$ drop top of stack
stack: [49]
~ push 0
^ jump to that command in the program

Codename Dragon (GitHub)

Feb 22–26, 2016 praclang

My first attempt at a practical language (praclang), as well as infix interpretation. Pretty dysfunctional and buggy, but it works alright.

a <- 3; b = 5; disp a, b, a + b, a..b, a .+ "40", inv a; disp <> + a
will prompt the user for input (say, (x=>x*3)(40), as it foolishly evaluates the prompt), and output
3
5
8
3
4
5
43
0.3333333333333333
123
Yes, the semicolons are necessary; this language does not support lines terminated by newlines, only semicolons.

Y (GitHub)

Feb 16, 2016–Jan 28, 2020 esolang

TODO: describe.

Pris (GitHub)

March 11, 2016–June 29, 2024 esolang

A strange language. Commands are series of consecutive parenthetical characters (one of (){}), with optional [] characters in between. Each command has a corresponding “mode”, which is calculated by reading the command left-to-right, and keep track of a running accumulator which increases by 1 for each character, but [ will instead double and add 1, and ] will double and subtract 1. Thus, ))) has a mode of 3, (]( has a mode of 4, and }}}}}[ has a mode of 9.

The language operates on two registers, termed LEFT and RIGHT. At all times, one is “focused” and the other is “unfocused”. The LEFT register is focused initially. Commands are executed based on the first character of the command.

This language, as implemented, is not Turing complete, as it has finite memory cells (native JavaScript floating point numbers), and even if it used Bignums, it would not be reducible to, say, 3-cell brainfuck, due to only having 2 values, or really only 1 value if you use the unfocused register to simulate looping.

Here is a program that outputs Hello, World!:

(]]]((]](}}}(]]][}}}(]]}}} }}}(]}}}{(][][](}}}{{}}]] }}]](][[}}}(]][]]}}}(][]](}}}(]}}}{(]]]]](}}}{{}}]](][]]][(}}}{}}]](]][[}}}

Reng (GitHubOld GitHubInterpreter)

Mar 19, 2016–July 31, 2017 esolang

TODO: describe

Constant (GitHub)

Apr 3, 2016 esolang

TODO: describe

.kill(); (GitHub)

Apr 8, 2016 esolang

TODO: describe

ITML (GitHubWebsite)

May 14–16, 2016 esolang

TODO: describe

yup (GitHub)

June 6, 2016–May 19, 2018 esolang

TODO: describe.

vectil (GitHub)

July 24, 2016 esolang

TODO: describe.

reticular (GitHub)

Aug 3, 2016–Feb 26, 2017 esolang

TODO: describe.

Confiture (GitHub)

Sep 20–21, 2016 esolang

TODO: describe. Fork of Jelly.

jext (GitHub)

Dec 1–8, 2016 praclang

An extended version of J. Basically just a preprocessor.

stacked (GitHub)

Dec 20, 2016–Apr 10, 2022 esolang

TODO: describe.

Somme (GitHub)

Jan 3, 2017–Sep 15, 2018 esolang

TODO: describe. Entry for the 2017 PPCG Time Capsule.

Maverick (GitHub)

Jan 27–29, 2017 esolang

A simple infix language using shunt.js. Entry for the 2017 PPCG Time Capsule.

Pyramid Scheme (GitHub)

Jan 29, 2017–July 29, 2019 esolang

TODO: describe.

Sir (GitHub)

Jan 31, 2017 esolang

TODO: describe.

Chain (GitHub)

Feb 19–20, 2017 esolang

TODO: describe. Successor to Chaîne.

Betrothed (GitHub)

Feb 27, 2017 esolang

TODO: describe.

Kevin (GitHub)

Mar 11–13, 2017 esolang

TODO: describe.

Spectrum (GitHub)

Mar 27–29, 2017 esolang

TODO: describe.

;#+ (GitHub)

May 22, 2017 esolang

TODO: describe.

str (GitHub)

June 3, 2017–Aug 27, 2021 esolang

TODO: describe.

ExtraC (GitHub)

July 9–17, 2017 esolang

TODO: describe.

eacal (GitHub)

July 20–22, 2017 esolang

TODO: describe.

Spaced (GitHub)

Aug 5, 2017 esolang

TODO: describe.

stac (GitHub)

Aug 5, 2017 esolang

TODO: describe.

Corea (GitHub)

Aug 31, 2017–Oct 9, 2019 esolang

TODO: describe.

OML (GitHub)

Oct 18–20, 2017 esolang

TODO: describe.

xeraph (GitHub)

Oct 30–31, 2017 esolang

TODO: describe.

Alumin (GitHub)

Nov 22, 2017–Aug 18, 2018 esolang

TODO: describe.

Attache (GitHub)

Jan 5, 2018–July 30, 2019 praclang

TODO: describe.

categorized (GitHub)

Jan 11, 2018 esolang

TODO: describe.

kavod (GitHub)

Jan 27–Feb 4, 2018 esolang

TODO: describe.

Locksmith (GitHub)

Feb 4–5, 2018 esolang

TODO: describe.

LOWER (GitHub)

Feb 4–5, 2018 esolang

TODO: describe.

Premier (GitHub)

Jan 1–2, 2018 esolang

TODO: describe.

Phooey (GitHub)

Mar 31–May 17, 2018 esolang

TODO: describe.

memGAP (GitHub)

Mar 17–19, 2018 esolang

TODO: describe.

Tir (GitHub)

May 7–June 1, 2018 esolang

TODO: describe.

Datache (GitHub)

May 28–Nov 10, 2018 praclang

TODO: describe.

DScript (GitHub)

June 23–24, 2018 praclang

TODO: describe.

Fynyl (GitHub)

Aug 11–26, 2018 esolang

TODO: describe.

Tidy (GitHub)

Aug 13, 2018–Feb 24, 2020 esolang

TODO: describe.

Quadro (GitHub)

Sep 18, 2018 unimplemented

TODO: describe.

Geuru (GitHub)

Oct 4, 2018 esolang

TODO: describe.

smol (GitHub)

Oct 26, 2018 esolang

TODO: describe.

Minat (GitHub)

Dec 18–21, 2018 praclang

TODO: describe.

!@#$%^&*()_+ (GitHub)

Dec 26, 2018–Nov 4, 2020 esolang

TODO: describe.

FQR (GitHub)

June 16, 2020–Jan 14, 2023 esolang

TODO: describe.

Twue (GitHub)

Mar 30–Oct 8, 2021 esolang

TODO: describe.

Airja (GitHub)

May 16–June 1, 2021 esolang

TODO: describe.

Peculi (GitHub)

Oct 13, 2021 esolang

TODO: describe.

Owl (GitHub)

Nov 30, 2021 esolang

TODO: describe.

Myby (GitHub)

Aug 4, 2022–Jan 4, 2023 esolang

TODO: describe.

X (GitHub)

Sep 2–3, 2022 esolang

TODO: describe.

;;;; (GitHub)

Nov 20, 2022 esolang

TODO: describe.

PLIS (GitHub)

Dec 2–5, 2022 esolang

TODO: describe.

Taste (GitHub)

Jan 5–19, 2023 esolang

TODO: describe.

oxy (GitHub)

Jan 31, 2023 esolang

TODO: describe.

CIR (GitHub)

May 8–15, 2023 praclang

TODO: describe.

StellerJ (GitHub)

May 12–16, 2023 praclang

TODO: describe.

mkgg (GitHub)

July 23–29, 2023 esolang

TODO: describe.

Jaguar (GitHub)

Aug 26–27, 2023 praclang

TODO: describe.

Heist (GitHub)

Oct 9, 2023 esolang

TODO: describe.

Cabsi (GitHub)

Dec 2–17, 2023 esolang

TODO: describe.

Glint (GitHub)

Feb 19–June 15, 2024 praclang

TODO: describe.

Serais-Toi? (GitHubInterpreter)

April 4, 2016–? esolang unimplemented

TODO: describe

Junction (Interpreter)

Date unknown esolang

A simple, functional language, similar to J, but woefully underimplemented. Try input 1,2,3,4 and code +/. Only implements addition (+), division (%), reverse (~), and insertion (/). Exact date unknown since it is only a JSFiddle without a corresponding repository, or any frame of reference.

Dyia (Interpreter)

Date unknown esolang

A simple, functional language, similar to J, but less woefully underimplemented. Seems to support more complex expressions, like (i.5) + 2 * i.5. Once again, no confident date, as it is just a JSFiddle.