# Tiny Programs and Languages

> Tiny programs and languages prove small code can be powerful and approachable.
- Title: Tiny Programs and Languages · Ratfactor | Shortify
- Summary: Tiny programs and languages prove small code can be powerful and approachable. Tiny programs and languages demonstrate that minimal code can be both…
- Keywords: forth, lisp, tcl, lua, javascript, code golf, kdb, kos, ray tracer, kiosk, microworlds, self language
- Source: Ratfactor — https://ratfactor.com/cards/pl-small
- Read time: 1 min
- Topics: forth, lisp, tcl, lua, javascript, code golf, kdb, kos, ray tracer, kiosk, microworlds, self language
## Tiny programs
Tiny programs are approachable and interesting when they do something useful in few lines.
## 25-line JavaScript library
Luke Jackson's ijk library has just 25 lines of code for DOM diffing.
## 46-byte Forth
Philippe Brochard created a 46-byte Forth program that fits on a business card.

> 50b8 8e00 31d8 e8ff 0017 003c 0575 00ea 5000 3c00 7401 eb02 e8ee 0005 0588 eb47 b8e6 0200 d231 14cd e480 7580 c3f4
## Arthur Whitney's interpreter
Arthur Whitney wrote an array-based language interpreter in 122 lines of C.
## kOS operating system
kOS is a 90 Kb bootable image with a GUI and window manager in 60 lines of C.
## Lisp interpreter
William Byrd's Lisp interpreter fits on a single slide with 436 bytes of code.

> (define eval-expr (lambda (expr env) (pmatch expr [`,x (guard (symbol? x)) (env x)] [`(lambda (,x),body) (lambda (arg) (eval-expr body (lambda (y) (if (eq? x y) arg (env y)))))] [`(,rator,rand) ((eval-expr rator env) (eval-expr rand env))])))
## Ray tracer
A ray tracer fits on a business card with minimal code complexity.
## Kolmogorov complexity
Kolmogorov complexity measures the minimum code length to produce a given output.
## Small languages
Small languages like Forth, Lisp, and Tcl offer minimal syntax with high expressiveness.
## Forth
Forth uses only space characters as syntax and is highly flexible.
## Lisp
Lisp has small core syntax but enormous expressive power and flexibility.
## Tcl
Tcl treats everything as a string and allows custom language construction.
## Lua
Lua's core language fits on 27 pages of documentation.
## JavaScript
JavaScript's core language is small with functions, arrays, and objects.
## David Ungar
David Ungar argues simplicity trumps expressiveness in programming languages.

> It’s far better to make a system a little too simple so a person has to write extra stuff, even write it twice with a comment that says, 'Look over here,' than to have a system that acts in strange ways and nobody can understand why.
## Small scale benefits
Small things are approachable, manageable, and spark joy through simplicity.
## Key takeaway

Tiny programs and languages demonstrate that minimal code can be both functional and accessible.