Esolangs, forth, concrete poetry

New to town, curious if there's any lurkers who're interested in the tenuous link between austere programming languages such as Forth or esolangs and strands of concrete poetry. Seems obvious to me that these disciplines are related, but haven't seen much written on this... IOCCC is explicity concrete, but has more to do with terseness than expressiveness of words. I know of Nick Montfort through Taper but am generally underwhelmed by his work. Also seems to be a natural extension of someone like Kenneth Goldsmiths' work...
 

sus

Moderator
What is Forth?

@Clinamenic might be your best bet I don't think anyone else here programs. If you want advice on cannasolvents tho you'll find plenty of leads

I'd never heard of any of this I'll have to look into
 
Forth is the highest-level low-level programming language. A combination of templating (function calls are actually just find-and-replace of code) and meta-programming techniques (you can directly access a function's definition as code) make it feel like you're programming in something like Lisp, when it's actually just ~500 lines of assembly to implement. All of this depends on a peculiar design decision called stack-based programming.

You push stuff onto a stack, e.g. push `2` onto the stack, push `3` onto the stack, use `+` to consume the top-two elements of the stack and leave their sum, use `.` push the top of the stack to the terminal output.
> 2 stack> 2 > 3 stack> 2 3 > + stack> 5 > . stack> output> 5
But then you can do something like, push 2 onto the stack, duplicate it, multiply the top two elements of the stack, and output it to the terminal.
> 2 dup * . output> 4
Which can become the `square` function.
> : square dup * ; > 3 square . output> 9
 
  • Wow
Reactions: sus
I had not seen this, but Larry Wall's post on perl as the first postmodern programming language is something I return to constantly. Feels applicable to anyone who wants to make things for others to use. Stuff like: There's more than one way to do it. Blatant mixing of many different dialects that are all compatible. Anti-purity. Stealing the best of a ton of tools and duct taping it all together.

 

sus

Moderator
Stealing the best of a ton of tools and duct taping it all together.
>>>Tell a bunch of average software developers to design a sailship. They will do a web search for available modules. They will pick a wind power module and an electric engine module, which will be attached to some kind of a floating module. When someone mentions aero- or hydrodynamics, the group will respond by saying that elementary physics is a far too specialized area, and it is cheaper and more straight-forward to just combine pre-existing modules and pray that the combination will work sufficiently well.
>>>
>>>Viznut, The Resource Leak Bug of Our Civilization

There's an interesting tension here
 
I think that's a false tension. Perl is about stealing the kernel of the good ideas, and baking them into a kind of all-encompassing monster. Instead of pulling an "engine module", perl is about reading all of the latest engine modules, and the re-implementing a 80/20 version of the best in class, then reading the hydrodynamics module, and re-implementing and 80/20 version of that too.

The modernist finds a stable substrate and re-implements everything in terms of that language, but ultimately fails to get adoption because nothing old interoperates with their promised utopia. (Esperanto)

The gen-z programmer hops on to the latest band-wagon, and manages to get everyone started easily, but fails in the long-run because their cobbled together solution is unreliable. (Online slang)

The postmodern programmer steals the best bits from every modernist, and instead focuses on a enough interoperability between their utopias that they can all intermesh, even if at odd angles. There's no worry in mixing dialects together. (Code-switching, Haroldo de Campos, Galaxias)
 

william_kent

Well-known member
I've been avoiding mentioning "brainfuck" but it has to be the ultimate 'esolang"

"hello world" in "brainfuck"

>++++++++[<+++++++++>-]<. >++++[<+++++++>-]<+. +++++++.. +++. >>++++++[<+++++++>-]<++. ------------. >++++++[<+++++++++>-]<+. <. +++. ------. --------. >>>++++[<++++++++>-]<+.
 
  • Love
Reactions: sus
Top