A class of simple, consistent, performant, function-level languages
(e.g. FORTH, JOY, CAT, etc.)
Next to OOP, Functional, Procedural.
Concatenative is less well known.
A conceptual model that represents how software appears to work.
Ways to solve problems within that conceptual model.
Twenty cents.
What shape is your problem?
Components in a hierarchy?
Event driven?
Composed of object?
Composition of function?
Each paradigm comes with a mental model (a philosophy) that...
We need a mental model of how our program and the computer cooperate.
encourages a mental model of things, that maintain their own internal state, but ultimately need to be changed by external influence. It's about mixing data and methods, distributed state changes, code reuse by inheritance.
encourages a mental model of pure functions that operate on only the values passed in, code reuse by application of higher order functions.
Programming is done by first declaring the intent of the program, then later stating the exact commands the program should execute.
encourages a mental model of pure functions that operate on a stack of values and return a stack of values, code reuse by composition.
Point-Free: Name Code, Not Data
1930's 1950's
1970 Chuck Moore
4 size ."quick tour"
UPS and Fedex use digital signature tablets coded in Forth. Power companies use electrical switches coded in Forth. GE released a SONET switch whose OS **IS** Forth — plug in a serial console, and you’ll get the OK prompt! Half of the orbiters around Mars run on Forth. The space shuttle’s robotic arm and flight nav computers were programmed in Forth.
Forth: stack oriented language
reverse polish (e.i. post-fix) notation
no parentheses
3 size ."quick tour"
Forth good and the bad IMO
+ terse and readable
- not pure functional*
2 size ."quick tour"
Forth good and the bad IMO
+ terse and readable
- not pure functional*
1 size ."quick tour"
1982
'77 John Backus Turing Award lecture
1977
'77 John Backus Turing Award lecture
2001 Manfred Von Thun
'93 Henry Baker, Linear Lisp
2003 Slava Pestov
'02 Brent Kirby, Concatenation Calculus
'02 Brent Kirby
'02 Brent Kirby, Concatenation Calculus
2003 Slava Pestov
2006 Christopher Diggins
2011 Jon Purdy
2018 (Yet Another Concatenative Language)
for fun, to learn how languages work. Have to make the difficult decisions of what is important and what should be left out.
Simple and constructive