Summary of Survey Results

Christopher Diggins — 2007-11-30 00:10:27

Well the results of the survey are in (sorry about the delay):

> - I feel the advantages of concatenative languages are ..

This is an interesting list that I can't effectively summarize:

- syntactic simplicity x3
- easy to implement x2
- semantic closeness to a machine model x2
- generally good referential transparency x2
- conciseness of expression x2
- quick and continuous refactoring,
- incrementally implementable
- easy experimentation with language design
- powerful
- highly interactive
- fun
- dataflow notation
- very short read-eval-print loop
- natural modularization
- theoretically interesting and intellectually stimulating
- immediate testability

> - I feel that the most powerful advantage of concatenative languages
> is ...

I think one word sums up the responses: simplicity.

- easy to refactor code
- syntactic simplicity
- close to the hardware
- immediate feedback
- immediate testability
- ease of syntactic transformation

> - My positive experiences with concatenative languages have been ...

This was a tricky question for people to answer because it was
subjective and open-ended. It did reveal something I think: Forth has
already proven itself a particularly effective language for embedded
programming development. Also I think it reveals that learning about
concatenative languages is intellectually enriching.

- learning about Forth;
- challenging myself to do anything productive with dc;
- having a wonderful time playing with Factor.
- programming in Forth
- scientific and embedded programming in Forth
- reading about Joy
- large scale instrustrial software development with Forth
- learning about the fundamental issues of computer science

> - My negative experiences with concatenative language have been ...

Many of the negative experiences mentioned were primarily language
specific. However, I think the results suggest that maybe people find
concatenative languages somewhat hard to use. However, this could also
be due to preconceptions.

- fragmentation of the Forth community
- distinguishing compile-time from run-time and definition-time
execution in Forth
- lack of a type system in Forth
- Trying to program in Joy
- Lack of acceptance of Forth by clients
- programming complex algorithms without named parameters

> - I feel that for concatenative languages to gain more mainstream
> success will require ...

In summary: better tools and find a niche.

- development and maturation of one or more programming environments
- that it is clearly demonstrated what they are good for.
- a solid high-level language with multiple successful implementations
or platforms
- choose a niche (e.g. embedded programming)
- a major breakthrough in ease of programming
- the identification of a lively niche where they provide great leverage
- education as to the advantages
- overcoming the aversion to postfix syntax.
- integration of ideas from modern programming language theory
- better tools

> - I consider a language to be concatenative when it has the following
> properties ...

So I'll summarize with my own personal definition inspired by the
other contributions: a concatenative language is a language where the
concatenation of terms (i.e. justaxposition or sequencing) denotes the
function composition operator instead of function application.

- token-oriented, combinator-based postfix syntax with relatively
shallow nesting;
- semantics defined primarily by function composition rather than by
[nested] function application;
- an execution model of passing state from function to function.
- concatenation of source text denotes new programs
- where concatenation means function composition
- Concatenation is just about everything.

I hope you found this as intersting and useful as I did.
A big thank you to everyone who contributed!

Christopher
http://www.cdiggins.com