I had seen Lobster before, but not really looked closely. Seeing it again now, I think I was wrong to dismiss it. Just at the syntactic level with semantics described in the link, it looks like it really might be "Python done right". The link mentions lots of features, but the following bits caught my eye.
The let/var declarations for constants/variables is much better than implicit declaration, which silently hides typos and necessitates ugly global/nonlocal declarations. (Mojo offers this improvement too.)
I don't know for sure, but it seems like it's embraced block arguments comparable to how Ruby or SmallTalk does it. So you can add your own control flow, container visitors, etc. I think of this as another syntax for passing a lambda function as an argument, and I'm curious if Lobster's optimizer flattens it to a basic block when possible.
I think I'll try to learn more about it. I wonder if the name is a nod to Accelerando.
This is a really nice looking language. Feedback in case the creator sees but it wasn't obvious to me at first that it was targeting game development. The first mention is in features:
> Features have been picked for their suitability in a game programming language
Would be fun to see some basic games like tetris, pong etc in Lobster in case anyone has an example floating round?
Obviously some will find this a silly opinion but the one thing that turned me off the most about the Nim programming language was its use of significant whitespace. The same is true with F# (and of course Python). Having had apps with YAML for config, and having had nightmares trying to copy/paste config directives from various sources, I just find whitespace to be unwieldy.
Now that's a strong opinion, (weakly held - as a language can't be judged based on this design decision). But it does sour my interest a bit.
One thing I hate about Generative AI is that it has flipped the value prop of making your language similar to an existing popular language. This helps new programmers but it really messes with generative AI. I can feel the era of fun new programming languages that might break big ending.
I don't know. I wrote a compiler with a syntax that's close to all the curly languages, but different in some ways. ChatGPT had no problem cranking out some test cases after I explained the rules and gave minimal examples. I guarantee it wasn't trained on any source code of my language, because none existed more than two months ago.
Well, it has an animal mascot logo. Which is my personal yardstick for if a project is destined for success. So, off to a good start, but the lobster could be more cuddly.
Fun story behind the name, per the language inventor Hendrik K. Grubbs, Phd.
"Dr. Grubbs, what inspired the language name"
"A Hooker down by the docks"
"WHAT?!?"
"Yes, I went to her lonely one Friday, she only cost five dollars. Next day I had a terrible itch and realized she'd given me crabs. So I confronted her the next day and asked why she had done this to me. 'What do you expect for five dollars, lobster?' "
This feels like a scripting companion to Rust with Python-like syntax, nice one. I definitely could see it being using as a Lua replacement in embedded contexts.
Looks like a cool language. Like the short syntax. Impressed they implemented so much of OpenGL natively in the language. Lot of work to implement OpenGL.
However, the real test, from personal perspective, especially with a custom framework for shaders, would be implementing one of the medium difficulty LearnOpenGL 3D examples, such as the Multiple Lights example. https://learnopengl.com/Lighting/Multiple-lights
With how much goes wrong with OpenGL and shader development, wary of delving very much into an OpenGL centric language, and then finding out there's a bunch of gotchas in the part that tends to be desirable (3D rendering). "Whoops, one of a zillion hidden flags doesn't get set properly for some reason."
Texture loading seems like its there, and it says it actually uses "stb_image.h" internally. Plus, it apparently does cubemaps.
Lights seem implemented, although not sure what that does "sets up a light at the given position for this frame."
Model Loading is also another, from the built-ins it looks like it does .ply and .iqm? (Inter-Quake Model) files.
Matrice math has a few although seems like a LookAt and Perspective matrix creator in the 4x4 category would be needed that return a matrix you can apply to a shader uniform. gl.perspective looks weird, just says "changes from 2D mode (default) to 3D right handed perspective mode"
Either way, looks cool, would just like to have more examples in the target demographic, OpenGL game development. Even if they're simple. That's part of why the LearnOpenGL examples are so useful. Simple. Implementing even a significant subset would go along way toward selling me on game development in an unknown language.
Running some of the samples feels like those old SGI Iris GL demos, but implemented with a way nicer and concise language. I'll try to port some of my old code from that era.
15 comments
[ 2.7 ms ] story [ 35.6 ms ] threadAlso, is there any kind of sophisticated pattern matching? I feel like for me a language without pattern matching is a non-starter these days.
The let/var declarations for constants/variables is much better than implicit declaration, which silently hides typos and necessitates ugly global/nonlocal declarations. (Mojo offers this improvement too.)
I don't know for sure, but it seems like it's embraced block arguments comparable to how Ruby or SmallTalk does it. So you can add your own control flow, container visitors, etc. I think of this as another syntax for passing a lambda function as an argument, and I'm curious if Lobster's optimizer flattens it to a basic block when possible.
I think I'll try to learn more about it. I wonder if the name is a nod to Accelerando.
> Features have been picked for their suitability in a game programming language
Would be fun to see some basic games like tetris, pong etc in Lobster in case anyone has an example floating round?
Now that's a strong opinion, (weakly held - as a language can't be judged based on this design decision). But it does sour my interest a bit.
"Dr. Grubbs, what inspired the language name"
"A Hooker down by the docks"
"WHAT?!?"
"Yes, I went to her lonely one Friday, she only cost five dollars. Next day I had a terrible itch and realized she'd given me crabs. So I confronted her the next day and asked why she had done this to me. 'What do you expect for five dollars, lobster?' "
The Lobster Programming Language - https://news.ycombinator.com/item?id=44051841 - May 2025 (6 comments)
The Lobster Programming Language - https://news.ycombinator.com/item?id=31453822 - May 2022 (14 comments)
The Lobster Programming Language - https://news.ycombinator.com/item?id=25498005 - Dec 2020 (4 comments)
The Lobster Programming Language - https://news.ycombinator.com/item?id=19567160 - April 2019 (164 comments)
The Lobster Programming Language - https://news.ycombinator.com/item?id=15557060 - Oct 2017 (2 comments)
Admittedly it’s just a first impression
With such a focus, be nice to have a few more OpenGL examples. Took a bit of looking, yet found a longer example for a 2D shooter. https://aardappel.github.io/lobster/shooter_tutorial.html
However, the real test, from personal perspective, especially with a custom framework for shaders, would be implementing one of the medium difficulty LearnOpenGL 3D examples, such as the Multiple Lights example. https://learnopengl.com/Lighting/Multiple-lights
With how much goes wrong with OpenGL and shader development, wary of delving very much into an OpenGL centric language, and then finding out there's a bunch of gotchas in the part that tends to be desirable (3D rendering). "Whoops, one of a zillion hidden flags doesn't get set properly for some reason."
Texture loading seems like its there, and it says it actually uses "stb_image.h" internally. Plus, it apparently does cubemaps.
Lights seem implemented, although not sure what that does "sets up a light at the given position for this frame."
Model Loading is also another, from the built-ins it looks like it does .ply and .iqm? (Inter-Quake Model) files.
Matrice math has a few although seems like a LookAt and Perspective matrix creator in the 4x4 category would be needed that return a matrix you can apply to a shader uniform. gl.perspective looks weird, just says "changes from 2D mode (default) to 3D right handed perspective mode"
Either way, looks cool, would just like to have more examples in the target demographic, OpenGL game development. Even if they're simple. That's part of why the LearnOpenGL examples are so useful. Simple. Implementing even a significant subset would go along way toward selling me on game development in an unknown language.