1. 56
  1.  

  2. 12

    There’s a real interesting historical connection here. The author of this, Wouter van Oortmerssen, also created FALSE in 1993. Not only was FALSE one of the first “true” esolangs, it inspired Chris Penner’s Befunge and Urban Müller’s… brainfuck! I don’t think esolangs would be nearly as vibrant today without Wouter’s work.

    1. 3

      Wouter was huge in the Amiga scene. He created the E programming language, which was definitely my favorite language to use on the Amiga.

      EasyGUI (also written by Wouter, I believe), was the sweet spot for GUI development on the Amiga. It got you 80% of the way to MUI without needing MUI (and trust me, GUI development on the Amiga without something BOOPSI-based like MUI was terrible.)

      Wouter then went on to develop Flat Buffers at Google. He’s had an amazing career.

      1. 5

        He also did TreeSheets!

        1. 4

          which is written in Lobster, incidentally!

          1. 8

            That’s what I would do if I’d write it today, but it is actually in C++ (using wxWidgets), though nowadays has a way to script it in Lobster. TreeSheets actually predates Lobster by a few years (2008 vs 2010 or so).

        2. 1

          He created the E programming language

          I’m assuming this is a different E than the one of capabilities fame created by Mark Miller ?

          EDIT: nm, the wikipedia page links to AmigaE, which is the one you were referring to.

          1. 1

            Yeah, sorry. This one: https://en.wikipedia.org/wiki/Amiga_E

        3. 2

          Can you enlighten me on what an esolang is?

          1. 3
            1. 1

              Hey it’s not a “previously on” because I never submitted that one to lobsters :P

              (The lecture is definitely going up, if it doesn’t kill me first. One more week to go…)

              1. 2

                Wouter’s homepage is worth a browse.

              2. 1

                inspired Chris Penner’s Befunge

                just to clarify (incase anyone else was confused like me), it’s Chris Pressey that invented Befunge; Chris Penner is someone else; at least I think so :)

                1. 1

                  Mea culpa! No idea why I wrote “Penner”

                2. 1

                  The visual programming language he did for his PhD thesis (late ’90s) is interesting as well: http://strlen.com/aardappel-language/

                3. 5

                  I found this part pretty interesting:

                  In fact, exception handling in Lobster is not a language feature, it is simply some utility functions (try/catch/…) implemented on top of return/from (implemented in exception.lobster).

                  It’s very concise!

                  def try(body, catch):
                      catch(exception_handler(body))
                  
                  def exception_handler(body):
                      return body() from try
                  
                  def throw(v):
                      return v from exception_handler 
                  

                  I was surprised that unlike let/ec or setjmp, you only need the function’s name to return from it: there’s no jump buffer / continuation you have to communicate from try to throw.

                  1. 2

                    That’s because Lobster’s return already takes care of that: it can unwind multiple stackframes until it encounters one with the correct function id. Turns out, that is the minimum building block you need to implement exception handling.

                  2. 4

                    Related video: https://old.reddit.com/r/ProgrammingLanguages/comments/edimm2/compile_time_reference_counting_lifetime_analysis/

                    The compile time reference counting sounded cool, and claimed some good results. I had a fantasy of borrowing it for Oil’s implementation. But it’s not clear to me exactly how it works. So I went with the more time-tested method of tracing garbage collection.

                    1. 2

                      The automated ref-counting in Nim is partly based on Lobster’s design, as confirmed here by Nim’s creator:

                      Nim’s –gc:arc is effectively Lobster’s algorithm, I checked it.

                      1. 1

                        Very interesting! I wish there were more details about that!

                        though I understand it’s so much work to make a programming language that there’s no time to write about every detail :)

                    2. 2

                      Wouter also created the procedural doom level generation language wadc , which I have been maintaining since 2008: https://jmtd.net/wadc/

                      1. 2

                        I like it! It seems to be a “what if Rust, but without any type annotations”. It has memory management similar to Swift’s ARC, but an ambition to optimize it to more Rust-like single ownership.

                        Lifetime analysis is done based on AST. That will probably end up being limiting/complex. Rust has moved from AST-based lifetime analysis to CFG-based (known as Non-Lexical-Lifetimes).

                        1. 1

                          True, it is rather complex.. though Lobster does take quite a bit of control flow effects into account with its “flow-based” type checking (and thus lifetime analysis, they are intertwined). It can probably be done better, and I am sure someone will. Baby steps.

                        2. 1

                          Too many MCs not enough mics.

                          The programming language market exploded like the electronic music market in the ’00s, or the typography / fonts market last decade.

                          Every week a new language pops up. Soon every respectable shop / individual will have its own programming language.

                          And that’s good. Taylor made programming languages for every problem, every taste.

                          The question is, with this inflation, will programming become an irrelevant market activity? Because DJ-ing, MC-ing did. Around 1% of musicians make their living from music. The rest are hobbyist, even if exploring unimaginable niches in highly professional ways.

                          1. 2

                            Your point is valid, but Lobster isn’t brand new. I don’t know its exact age, but it was first noted here seven years ago (see “Stories with similar links” at the bottom of this page.)

                            The question is, with this inflation, will programming become an irrelevant market activity?

                            I think it makes more sense here to say “language design”, not “programming”, since we’re talking about production, not consumption, of languages.

                            Has language design/implementation ever been a relevant market activity? The only language I can think of that became a big business to its creators is Java. (Companies like Microsoft and Borland did make businesses out of BASIC and Pascal, but didn’t invent them.) Languages have usually been labors of love, or infrastructure for a platform.

                            1. 3

                              Yup its from 2010.. though you wouldn’t recognize the Lobster from back then as being the same one as today :) Some history here (scroll to the end): http://aardappel.github.io/lobster/philosophy.html

                              And yes, language design & implementation today is going to make you even less rich and famous than it used to.. but that doesn’t stop me :P

                              1. 1

                                From the examples, Lobster reminds me a lot of Dylan, but with a Pythonesque syntax.

                          Stories with similar links:

                          1. The Lobster Programming Language (2013) via aleph 2 years ago | 10 points | 4 comments
                          2. Lobster: a game programming language via dwc 7 years ago | 6 points | no comments