Esolangs
Conceptual Esolangs
# ----- STACK-BASED LANGUAGES -----
# FORTH-INSPIRED
# Reverse Polish Notation (RPN)
# Operations work on stack of values
# Example: 3 4 + => pushes 3, pushes 4, adds them (result: 7)
# FALSE
# Extremely terse syntax inspired by Forth
# Variables are single letters
# β => beta function for complex operations
# ----- FUNCTIONAL ESOTERICS -----
# UNLAMBDA
# Based purely on combinatory logic
# Only combinators: S, K, I functions
# No variables, only function application
# s => S combinator, k => K combinator, i => I combinator
# Continuation-based I/O system
# LAZY K
# Programs are single expressions in combinatory logic
# Evaluation is lazy (only computed when needed)
# Input/output through Church encoding
# ----- CELLULAR AUTOMATA -----
# RULE 110
# Based on elementary cellular automaton Rule 110
# Proven to be Turing complete
# Evolution follows simple local rules
# Complex behavior emerges from simple rules
Artistic and Conceptual Esolangs
# ----- TEXT-BASED CONCEPTS -----
# SHAKESPEARE
# Programs written as Shakespearean plays
# Characters are variables, dialogue contains instructions
# "You are as lovely as the sum of a rose and a rose" => assignment
# Act/Scene structure controls program flow
# Questions perform conditional operations
# CHEF
# Programs written as cooking recipes
# Ingredients are variables with initial values
# Cooking methods perform operations
# "Mix the flour into the mixture" => variable manipulation
# Serves and refrigerates control output
# ----- VISUAL PROGRAMMING -----
# PIET
# Programs are abstract art images
# Execution follows colored regions in the image
# Color changes determine operations
# Hue changes => mathematical operations
# Lightness changes => stack operations
# Uses codel (colored pixel) as basic unit
# ----- AUDIO-BASED -----
# VELATO
# Programs written as MIDI music files
# Note pitches and durations encode instructions
# Must sound pleasant while being valid code
# Stack-based operations triggered by musical intervals
Theoretical Exploration
# ----- TURING TARPIT LANGUAGES -----
# Languages where "everything is possible but nothing of interest is easy"
# Minimal instruction sets that are still Turing complete
# BRAINFUCK DERIVATIVES
# Ook! => Uses only "Ook.", "Ook?", "Ook!"
# Designed to be writable by orangutans
# Direct mapping to Brainfuck commands
# Cow => Uses only "moo" with variations
# IOTA AND JOT
# Based on single combinator (iota)
# Iota expressed with just 0s and 1s
# Universal programming with two symbols
# Demonstrates minimal computational requirements
# ----- CONSTRAINT-BASED LANGUAGES -----
# MALBOLGE
# Designed to be as difficult as possible to program
# Self-modifying code with encryption
# Ternary system with unusual arithmetic
# First "Hello World" took two years to write
# Instructions change after execution
# INTERCAL
# Designed to have nothing in common with other languages
# PLEASE keyword for politeness (required percentage)
# COME FROM (opposite of GOTO)
# Arithmetic operations like "mingle" and "select"
Implementation Concepts
# ----- EXECUTION MODELS -----
# TAPE-BASED (TURING MACHINE STYLE)
# Memory as infinite tape with head position
# Operations move head and modify tape cells
# Brainfuck, Blanks, and similar languages
# STACK-BASED
# Primary data structure is stack (LIFO)
# Operations push/pop values and manipulate stack
# Forth derivatives, Factor-inspired languages
# QUEUE-BASED
# FIFO data structure instead of stack
# Changes program behavior significantly
# Example: FlipJump uses queue for unusual control flow
# REGISTER MACHINES
# Fixed set of registers hold values
# Operations transfer between registers
# SUBLEQ (subtract and branch if less than or equal)
# ----- SELF-MODIFICATION -----
# Programs that modify their own code during execution
# Befunge can write to its 2D code space
# Malbolge encrypts instructions after use
# Creates dynamic, evolving programs
Educational Value
# ----- COMPUTATIONAL THEORY -----
# Demonstrate Turing completeness with minimal instruction sets
# Explore different computational models (stack, tape, cellular automata)
# Show equivalence between different programming paradigms
# Illustrate Church-Turing thesis through extreme examples
# ----- LANGUAGE DESIGN -----
# Challenge assumptions about what makes languages "useful"
# Explore syntactic possibilities beyond conventional text
# Question relationship between readability and functionality
# Demonstrate creativity in constraint satisfaction
# ----- PROBLEM SOLVING -----
# Force programmers to think in radically different ways
# Develop deep understanding of algorithmic thinking
# Practice working within severe constraints
# Build appreciation for conventional language features
More on