Lush: My favorite small programming language

1 day ago (scottlocklin.wordpress.com)

Makes me curious what state R was at the time, or whatever else could've been useful for deep learning, and the benefits of a new language vs adapting something that exists. Seems like it was a big investment

  • R and its ecosystem have some unbeatable features, but, generally speaking, the "old", base R is too arcane to be widely useful. Also, being "made by statisticians for statisticians" should be a big warning sign.

  • In my opinion R should thought of as an unbeatable graphical calculator, but an awful programming language.

    • The tinyverse collection of packages makes things a lot more sane, IMO:

        penguins <- read_csv("penguins.csv") |>
          na.omit() |>
          select(species, island, bill_length_mm, body_mass_g) |>
          group_by(species, island) |>
          summarize(
            mean_bill_length = mean(bill_length_mm),
            mean_mass = mean(body_mass_g),
            n = n()
          ) |>
          arrange(species, desc(mean_bill_length))
        
        penguins |>
          ggplot(aes(x = species, y = mean_bill_length, fill = island)) +
          geom_col(position = "dodge") +
          labs(
            title = "Mean Bill Length by Species and Island",
            y = "Mean Bill Length (mm)"
          ) +
          theme_minimal()

      1 reply →

    • i would compare base R to basically a shell. meant to be used interactively. okay for small scripts. you can write big programs but it will get weird.

What does 'small' really mean?

I would think of a language like Go as small (say, in comparison to Rust or Swift) - the language itself at least, if you discount the standard library.

I find the use of the word 'small' quite confusing.

  • The author appears to be defining it in terms of the effort put in to the language, basically, person-hours.

    Go may be a small language by some definitions (and as my phrasing implies, perhaps not by others), but it is certainly one that has had a lot of person-hours put into it.

  • The problem is that there's no universal definition of "small" when it comes to languages.

    An article on the Brown PLT blog [1] suggests analyzing languages by defining a core language and a desugaring function. A small core simplifies reasoning and analysis but can lead to verbose desugaring if features expand into many constructs. The boundary between the core and sugared language is flexible, chosen by designers, and reflects a balance between expressiveness and surface simplicity.

    Feature complexity can be evaluated by desugaring: concise mappings to the core suggest simplicity, while verbose or intricate desugarings indicate complexity.

    So, a possible definition of a "small" language could be one with both a small core and a minimal desugaring function.

    --

    1: https://blog.brownplt.org/2016/01/08/slimming-languages.html