All topics
Every guide on the site, grouped by topic. 133 articles and counting.
The Funge Family
Befunge, Funge-98 and how grid-based programs flow.
Esoteric Languages
Unusual languages beyond Funge and what makes them interesting.
Design and Puzzles
Language design ideas, puzzle programming and building interpreters.
Programming in Funge
Practical techniques, algorithms and advanced features for writing grid programs.
Befunge Techniques
- Befunge Programming Techniques Overview
- A Worked Countdown Program
- Conditional Branching with the Horizontal and Vertical If
- Jumping Over Cells with the Trampoline
- Laying Out Befunge Code So Humans Can Read It
- Printing Strings with Quote Mode
- Reading Numeric Input in Befunge
- Subroutines in a Grid Language
- Using Get and Put to Store Variables on the Grid
- Writing Loops in Befunge
Algorithms in Funge
- Classic Algorithms in Befunge
- Computing Factorials on a Grid
- Converting Numbers Between Bases
- Euclids Method for Greatest Common Divisors
- Generating Fibonacci Numbers in a Grid Language
- Random Choice with the Question Mark Instruction
- Reversing a String with the Stack
- Sorting Small Lists in a Grid Language
- Testing for Primes by Trial Division
- Writing a Quine in a Grid Language
Funge-98 in Depth
- Funge-98 Features in Depth
- Asking the Interpreter for System Information
- Delta Vectors and Arbitrary Directions
- File Input and Output in Funge-98
- Loading Extensions Safely
- Repeating Instructions with Iterate
- Running Several Pointers with the Split Instruction
- Storage Offset and Relocatable Code
- What Happens When an Instruction Is Unknown
- Working with the Stack of Stacks
More Esoteric Languages
Tape, stack and unusual paradigm languages plus the culture around them.
Tape and Stack Languages
- Tape and Stack Based Esoteric Languages
- Brainfuck Variants and Dialects
- Common Brainfuck Programming Patterns
- Concatenative Thinking in Odd Languages
- Counter Machines and Minsky Style Languages
- Memory Models Across Esoteric Languages
- Ook and Other Brainfuck Reskins
- Stack Machines Explained Through Esolangs
- Tape Versus Grid as a Memory Model
- Underload and Other Minimal Stack Languages
- Writing a Brainfuck Interpreter
Unusual Paradigms
- Unusual Programming Paradigms in Esoteric Languages
- Cellular Automata as Programming Systems
- Combinator Languages Like Unlambda
- Esoteric Languages Without Control Flow
- Lambda Calculus Through Esoteric Languages
- Languages Built on Rewriting Rules
- Languages That Read Like Prose
- Nondeterministic and Probabilistic Programs
- Reversible Programming Languages
- Rule 110 and Computation in Simple Systems
- The Game of Life as a Computer
Esolang Culture
- Esoteric Language Culture and Community
- Challenges and Contests Around Odd Languages
- Documenting a Hobby Language
- Intentionally Difficult Languages
- Joke Languages and Their Humor
- Naming Your Language
- Using Esoteric Languages in Teaching
- What Esoteric Languages Teach Programmers
- Why People Create Esoteric Languages
- Writing a Specification for a Hobby Language
Theory and Tools
Computability ideas, interpreter building and puzzle practice.
Computability Basics
- Computability Ideas for Curious Programmers
- Finite Automata Versus Full Programming Languages
- How to Show a Language Is Turing Complete
- Infinite Memory Versus Real Machines
- Is Befunge Turing Complete
- Tag Systems and Tiny Universal Machines
- The Church-Turing Thesis Explained
- The Halting Problem in Plain Language
- Translating One Language into Another
- Turing Machines Explained
- Undecidable Questions About Grid Programs
Interpreter Implementation
- Building Interpreters Step by Step
- Arithmetic Edge Cases in Interpreters
- Avoiding Stack Underflow Surprises
- Building a Trace Visualizer
- Choosing a Data Structure for the Playfield
- Compiling a Grid Program to Another Language
- Handling Input and Output in an Interpreter
- Loading a Program File into a Grid
- Making an Interpreter Faster
- Testing an Interpreter with Small Programs
- The Fetch and Execute Loop
Puzzle Practice
- Puzzle Programming Practice
- Designing Your Own Code Puzzles
- FizzBuzz in Odd Languages
- Games That Teach Programming Through Puzzles
- Learning from Other Peoples Solutions
- Obfuscated Code and Its Purpose
- Palindromic Programs
- Polyglot Programs
- Scoring and Fairness in Code Challenges
- Solving Mazes as a Programming Puzzle
- Writing Programs Under a Size Limit