# 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