Comment by chuckadams

1 day ago

For a moment I thought there was actually a new language called $LANG, which would have been wonderful.

There's a language called SLang inside Goldman Sachs used for their SecuritiesDB, and that's how I read it at first glance even with the dollar sign lol https://en.wikipedia.org/wiki/Michael_Dubno#SecDB

  • That's what I thought too. The $ sign seemed quite appropriate given Goldman's line of business.

  • I wonder what a program written in that language looks like.

    • Slang? The IDE looked like Turbo C++ of old (blue, text based interface). Shortcuts are weird, so you need to remap keys to get sane defaults.

      Probably the most unique feature is that the language supports spaces in identifiers. So you'd have variables like "Option Portfolio Risk" or functions like "Calculate Estimated PnL". Visually obviously different from Python, but it gave me Pythonic vibes.

      It's also nice that it supports preconditions, so you can specify the valid range of arguments etc. It has some kind of OOP support but tbh it felt bolted on (understandably).

      But the most value adding, IMHO, is the DevEx and deep integration with SecDb. Say what you want about the DOS-like IDE and the old (20+ years old for sure, maybe 30+) language, but you can deploy your code SO easily into production, with guardrails in place.

      Out of curiosity, I implemented a toy language (thanks to Robert Nystrom's Crafting Interpreters) that supports spaces in identifiers (https://github.com/rayfdj/gaul-lang) as well. Makes for an interesting weekend coding project, and it helps me understand more the tradeoffs that Slang designers must have gone through.

      1 reply →

Likewise. Thought it'd be pronounced "slang", and thought the semantics would be you define LANG=<name of a language> at the top of the file (like a hashbang) and then write in whatever language you please. $LANG is a neato language because it has all the coolest features rolled into one unified design: polymorphic lifetime borrowing, endofunctor monoid monads, (stacked) coroutines, and even quantum data types.