Forth
Forth is a concatenative stack-based programming language that has had a variety of implementations and variants in the 50 years it has existed. The basic idea is that a program is broken up into "words". For the most part, each "word" is either a value or an operation. Forth is built on postfix notation, so where you'd normally write 1 + 2 with an infix operator, in a Forth it would be 1 2 +. Those more technically minded might enjoy trying to figure out how this program displays the first 10 factorial numbers:
Code: Select all
: FAC ( n -- n! ) DUP 1 <= IF 1 ELSE DUP 1 - FAC * THEN ;
1 11 DO I FAC . LOOP
Conlanging
How does this relate to conlanging? Replace "word" with "morpheme", "value" with "lexeme" or "noun", and "operation" with "particle", and now it probably sounds stupid, but it sounds more like conlanging so it must be progress /s. The hypothetical engelang that would result from the application of these mechanics would lead to a system where lexemes are pushed onto the stack, then grammatical particles modify and combine the items on the stack to produce complex meaning. This would be a highly isolating language, and I imagine if any diachronics were to be applied to it, it would result in a tremendous amount of compounding.
At first, I am going to present the language as a "re-grammaring" of English combined with various glossing abbreviations among other things to represent operators. Here is a first concept:
1SG good V food S
1SG like=_ food _
"I like food"
Here, 1SG, good, and food are "values" in that they represent lexical information. V is an operation that reads a noun from the top of the stack and replaces it with a "verbified" form (in this case arbitrarily converting "good" to "like"). Finally, S is an operation that reads in 2 nouns and a verb from the stack and combines them into a sentence (arbitrarily in SVO order).
Later on once I have some slightly more concrete grammar rules, I can start creating a few words and really start to bring it to life - if it's possible to bring something so cold and rule-driven as a Forth to life (opinions welcome).
Notation
A common convention in Forth is to describe operations in terms of the state of the stack before and after the operation occurs. An example is the ( n -- n! ) comment in the factorial example further up. I will use a similar notation to describe operations in a conlang environment. Text to the left of the "--" represents the stack prior to the operation, and text to the right represents the stack afterwards. With that in mind, here is how I would notate the V and S operations:
V ( n -- v )
S ( n v n -- SVO )
It's now 11pm here so I'm going to sleep on the idea. I imagine it could play very well with relatively free word ordering as all it would really require is adding nom/acc (other morphosyntactic alignments are available) case operations ( n -- n.<case> ) and then providing multiple definitions of S for each arrangement of items on the stack (having multiple "versions" of the same operation like this is called "overloading" in programming). Theoretically though, the "grammar" here should mostly be a matter of defining operations for the things I want or need the language to do - the main challenge being in figuring out exactly what type of thing these operators require and produce.