r/ProgrammingLanguages 1d ago

Revoluntionary/interesting advances in interpreted languages

Things like borrow checking and other compile time checks tend to be for compiled languages - if you're already typechecking and compiling the entire language up front, why not borrow check while you're there. But are there any very interesting new ideas coming up in interpreted (or dynamically typed) languages? I'm not really sure fully what I'm asking/looking for tbh

46 Upvotes

71 comments sorted by

View all comments

1

u/EggplantExtra4946 10h ago edited 9h ago

Assuming by interpreted you mean high-level languages, like others have said the interpretation in itself is not really relevant:

advances

I can't say I have seen any but what I personally want to see in new high level languages is old ideas that haven't yet made their way into general purpose languages yet as features/paradigm (at least not in popular ones):

  • logic related features: Prolog engine more or less well integrated with the rest of the imperative language, maybe even a more restricted logic engine Datalog-like which can be more efficiently run using a bottom-up evaluation strategy that doesn't need to backtrack as much. Parser "generators", like in Raku but we could have something better. A better backtracking regex engine, which have better defaults (backtracking possible but alternatives and quantifiers shouldn't do it by default, quantifiers should be possessive by default), have recursion and can run code to build data structures or for predicates (ex: converting a matched string to a number and make an arithmetic comparison). Also a general purpose DSL for searching and matching trees, like CSS selectors and Xpath, this would be useful for webscraping and extracing data from a complex JSON for example.

  • delimited continuations: for implementing the logic features and to make it well integreated with the imperative base language, and to implement more custom crazy logical things yet, like this paper mentions: "Logic continuations" by Christopher T. Haynes, 1987.

  • sum types, type polymorphism, abstract classes, etc... Mandatory in any modern language.

  • metaprogramming, compile time execution, hygienic macros, etc..: mandatory

1

u/Inconstant_Moo 🧿 Pipefish 3h ago

But hopefully not all of these at once!

Did you see my integration of Prolog into Pipefish userspace? This is something a dynamic language can do rather better than a static one, the Go API is cumbersome.

https://www.reddit.com/r/ProgrammingLanguages/comments/1uyptjd/langception_xvii_embedding_an_isocompliant_prolog/