A quick History of the CONCATINATIVE Programming

1930's                                                   1950's

theoretical

practical work

theories of Functional Programming

  • The Lambda Calculus (Alanzo Church)
  • Combinatory Logic (Moses Schönfinkel and Haskell Curry)

1930's                                                   1950's

theoretical

Lisp Haskel ML

functional Languages that came out of

Lambda calculus and

Combinatory Logic

1950's                                                   1970's

expressed as [Variables, Functions,

Combinators, and Applications]

Forth

1970 Chuck Moore

  • RPN (post-fix notation, mostly)
  • stack-based

practical work

Forth, the programming language.

UPS and Fedex: digital signature tablets 
Power companies: electrical switches
GE SONET switch: Forth is the OS and REPL 
NASA satellites run on Forth. 
The space shuttle’s robotic arm and flight navigation computers were programmed in Forth.

coded in Forth:

Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs

  • creates languages: FP, FP84, FL
  • makes a distinction between 'value-level' and 'function-level' languages

1977

 John Backus Turing Award lecture

theoretical

Postscript

  • RPN (post-fix notation)
  • stack-based

1982

practical work

Joy

  • RPN (post-fix notation)
  • stack-based
  • functional

2001 Manfred von Thun

theoretical

practical work

Concatenation Calculus

"The Theory of Concatenative Combinators"

all expressions denote functions […] juxtaposition…denotes function composition.

a search for minimal set of combinators:

swap, dup, zap, unit, cat, cons, i, dip

2002 Brent Kirby

theoretical

Factor

  • RPN (post-fix notation)
  • stack-based
  • functional
  • dynamic types, with an object system

2003 Slava Pestov

theoretical

practical work

Factor

2003 Slava Pestov

Cat

  • RPN (post-fix notation)
  • stack-based
  • functional
  • strongly typed

2006 Christopher Diggins

theoretical

practical work

Off shoots

  • RawrCat (github.com/ephsec/RawrCat)

Kitten

  • RPN (post-fix notation) also in-fix
  • stack-based
  • functional
  • strongly typed

2011 Jon Purdy

practical work

theoretical

(history of) FORTH, JOY, CAT AND other CP

By Nate Morse

(history of) FORTH, JOY, CAT AND other CP

Time to try out programming in a stack based, 'concatenative' language. Sounds more complex than it is, because these languages are simple to learn and do not sacrifice expressiveness or power. Within minutes you will understand how these languages work and how this very different style of programming enables code to be simple, consistent and performant.

  • 1,161